Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EBImageを用いたVR画像の変化域抽出と生態系への活用.pdf

wakama1994
March 18, 2023

 EBImageを用いたVR画像の変化域抽出と生態系への活用.pdf

SappoRo.R#10(2023/3/18)でのLT資料
https://connpass.com/event/274084/

wakama1994

March 18, 2023
Tweet

More Decks by wakama1994

Other Decks in Science

Transcript

  1. EBImageを用いた
    VR画像の変化域抽出と生態系ヘの活用
    Wakamatsu Takumu
    @wakama1994
    SappoRo.R #10

    View full-size slide

  2. 自己紹介
    出身...北海道
    経歴...
    2018年 北海道大学 法学部卒
    ❏ 計量政治学との出会いがデータ分析を始めるきっかけ
    2020年 北海道大学 農学院 環境資源学専攻 修士修了
    ❏ VR技術を用いた湿地景観のアーカイブ化
    >今日の発表
    2020年4月〜 Weathernews.Inc
    ❏ スポーツアナリティクス(2年)
    >気候変動の分析と開発(1年)
    R歴...主に学生時代
    ❏ データ分析勉強会サテライトビューイングの運営
    趣味... 一人旅 食べ歩き スポーツ観戦 物事の分析
    wakama1994
    Wakamatsu Takumu

    View full-size slide

  3. VRカメラで湿原を撮影し
    EBImageで植生変化を抽出してみた!
    今日の発表内容

    View full-size slide

  4. なぜVR画像を活用するのか?
    ● 省力的な調査が可能で 植物の種の同定までできる
    ○ 人が出向いた調査は高齢化に伴い 専門家が激減
    ○ 上空からの撮影技術 を活用する場合 内部の細かな状況は確認が困難
    ○ VR画像だと 1度撮影するだけで誰でも湿原の内部環境 が確認できる
    活用例 ① バーチャルツアーによる
    映像アーカイブ
    Google street viewを活用
    ②複数時期の画像からの
    植生変化域の抽出
    Rのcolormapを使用
    リモートセンシング

    View full-size slide

  5. 映像の取得方法
    ● 札幌市の篠路福移湿原で撮影
    ● 撮影期間は2019年6~10月で
    計5回(月1の頻度)
    ● 撮影地点は10地点
    札幌
    江別
    石狩
    小樽
    篠路福移
    当別
    手動設営による
    タイムラプス撮影

    View full-size slide

  6. 実験方法
    ● 画像の背景差分を行い 緑輝度値の標準偏差から変化を抽出
    ○ 手動撮影によるズレも考慮し 複数ピクセルの正方形グリッド で抽出
    ○ 生物の専門家が使うため OpenCVではなくRで実装されているEBImageを使用

    View full-size slide

  7. 解析コード
    # EBImage導入
    install.packages("EBImage")
    library("EBImage")
    #ColroRamps導入
    install.packages("colorRamps")
    library("colorRamps")
    #ディレクトリー選択
    setwd("C:/Users/takum/Desktop/jikkenn_1")
    #画像読み込み
    img1 <- readImage("PIC_2019_06_13_1.jpg")
    img2 <- readImage("VID_2019_07_18_1.jpg")
    img3 <- readImage("VID_2019_08_27_1.jpg")
    img4 <- readImage("VID_2019_09_20_1.jpg")
    img5 <- readImage("VID_2019_10_31_1.jpg")
    #G輝度画像生成
    img1g<- channel(img1,"green")
    img2g<- channel(img2,"green")
    img3g<- channel(img3,"green")
    img4g<- channel(img4,"green")
    img5g<- channel(img5,"green")
    #各グリッドサイズ(40,80,160,320px)
    の標準偏差を算出
    g40<-array(numeric(192*96),dim=c(192,96))
    for(j in 1:192)
    {for(k in 1:96){
    g40[j,k] <- sd(rbind(img1g[(j*40-39):(40*j),
    (k*40-39):(40*k)],img2g[(j*40-39):(40*j),
    (k*40-39):(40*k)],img3g[(j*40-39):(40*j),
    (k*40-39):(40*k)],img4g[(j*40-39):(40*j),
    (k*40-39):(40*k)],img5g[(j*40-39):(40*j),
    (k*40-39):(40*k)]))
    }
    }
    g80<-array(numeric(96*48),dim=c(96,48))
    for(j in 1:96)
    {for(k in 1:48){
    g80[j,k] <- sd(rbind(img1g[(j*80-79):(80*j),
    (k*80-79):(80*k)],img2g[(j*80-79):(80*j),
    (k*80-79):(80*k)],img3g[(j*80-79):(80*j),
    (k*80-79):(80*k)],img4g[(j*80-79):(80*j),
    (k*80-79):(80*k)],img5g[(j*80-79):(80*j),
    (k*80-79):(80*k)]))
    }
    }
    g160<-array(numeric(48*24),dim=c(48,24))
    for(j in 1:48)
    {for(k in 1:24){
    g160[j,k]<-sd(rbind(img1g[(j*160-159):(160*j),
    (k*160-159):(160*k)],img2g[(j*160-159):(160*j)
    ,(k*160-159):(160*k)]
    ,img3g[(j*160-159):(160*j),
    (k*160-159):(160*k)],img4g[(j*160-159):(160*j)
    ,(k*160-159):(160*k)]
    ,img5g[(j*160-159):(160*j),
    (k*160-159):(160*k)]))
    }
    }
    g320<-array(numeric(24*12),dim=c(24,12))
    for(j in 1:24)
    {for(k in 1:12){
    g320[j,k]<-sd(rbind(img1g[(j*320-319):(320*j),
    (k*320-319):(320*k)],img2g[(j*320-319):(320*j)
    ,(k*320-319):(320*k)]
    ,img3g[(j*320-319):(320*j),
    (k*320-319):(320*k)],img4g[(j*320-319):(320*j)
    ,(k*320-319):(320*k)]
    ,img5g[(j*320-319):(320*j),
    (k*320-319):(320*k)]))
    }
    }

    View full-size slide

  8. 解析コード
    #各グリッドサイズの画像標準偏差の値をcsvファイルに書き込み
    write.csv(g40,"40g.csv")
    write.csv(g80,"80g.csv")
    write.csv(g160,"160g.csv")
    write.csv(g320,"320g.csv")
    #各グリッドサイズの画像標準偏差を正規化
    nmax40<-max(g40)
    nmin40<-min(g40)
    nnorm40<-(g40-nmin40)/(nmax40-nmin40)
    nmax80<-max(g80)
    nmin80<-min(g80)
    nnorm80<-(g80-nmin80)/(nmax80-nmin80)
    nmax160<-max(g160)
    nmin160<-min(g160)
    nnorm160<-(g160-nmin160)/(nmax160-nmin160)
    nmax320<-max(g320)
    nmin320<-min(g320)
    nnorm320<-(g320-nmin320)/(nmax320-nmin320)
    #サイズ調整
    nnorm_resize40<-resize(nnorm40,7680,3840)
    nnorm_resize80<-resize(nnorm80,7680,3840)
    nnorm_resize160<-resize(nnorm160,7680,3840)
    nnorm_resize320<-resize(nnorm320,7680,3840)
    #カラーマップ化
    o= colormap(nnorm_resize40, blue2red(10))
    writeImage(o,"color40.jpg")
    p= colormap(nnorm_resize80, blue2red(10))
    writeImage(p,"color80.jpg")
    q= colormap(nnorm_resize160, blue2red(10))
    writeImage(q,"color160.jpg")
    r= colormap(nnorm_resize320, blue2red(10))
    writeImage(r,"color320.jpg")
    #カラーマップとエッジ域(6月の映像)の合成
    kansei_40<-o+img1*0.3
    kansei_80<-p+img1*0.3
    kansei_160<-q+img1*0.3
    kansei_320<-r+img1*0.3
    #完成した図の書き込み
    writeImage(kansei_40,"kansei_40.jpg")
    writeImage(kansei_80,"kansei_80.jpg")
    writeImage(kansei_160,"kansei_160.jpg")
    writeImage(kansei_320,"kansei_320.jpg")

    View full-size slide

  9. 有効性の評価
    変化域抽出に活用可能かを2つの事象で検証
    ①適切な複数グリッドの選定
    ○ 40px,80px,160px,320pxで比較
    ■ 標準偏差の平均値を取り 一元配置分散分析を実施
    ○ 6つのカテゴリーで検証
    ■ 植物の成長(撮影近傍 ), 植物の成長(撮影遠方 ),
    植物の枯死, 花の開花, 出穂,成長無
    ■ 各カテゴリーの画像選定は目視で判別
    ○ ピクセル間で差が無かった場合は実用面を考慮
    ②植生変化抽出の有効性評価
    ○ 選定した複数グリッドで成長無以外の
    5つのカテゴリーと成長無との 平均の差の検定で植生変化
    を抽出できたかの評価
    ■ 撮影遠方成長の比較は別途遠方の成長無を
    リサンプルして評価
    出穂
    植物の
    成長から枯死まで
    出穂
    湿原に咲く
    ノハナショウブ

    View full-size slide

  10. ①適切な複数グリッドの選定
    40px単位
    80px単位
    160px単位
    320px単位
    ● どのカテゴリーでもpx間で有意な差が検出されない
    ● VR上での表示を考慮し 160pxが妥当と判断
    ○ 40,80pxだとノイズのように表示され
    320だと変化が特定しにくい恐れ

    View full-size slide

  11. ②植生変化抽出有効性評価
    ● 撮影近傍の成長と枯死に有意差あり
    ● 遠望の成長,出穂,開花では有意差なし
    ○ 開花や出穂は緑輝度が不適当
    ○ 遠方の成長に関しては グリッド数に問題あ

    同じpxでも表現する距離が異なる

    View full-size slide

  12. まとめ
    ● 複数時期のVR画像から湿原植生の変化域抽出を実験
    ○ 緑輝度値の標準偏差では植物の成長と枯死が検出可能
    ○ 開花や出穂などの湿原特有の植生の検出は困難
    ■ 検出できなかった項目は オブジェクト検出で改良できる可能性
    ○ 今後研究室の方では 湿原への侵入による破壊を防ぐため UAVとVRカメラ使用した植生
    調査とバーチャルツアー教材を制作予定
    チューリップのオブジェクト検出例(バウンディングボックス)

    View full-size slide

  13. 研究室紹介
    ● 北海道大学 農学部 生態環境物理学研究室
    ○ https://sites.google.com/view/hiroyuki-yamada
    ● 指導教官 山田浩之先生
    ● 学生さんの研究テーマ (計 7名)
    ○ 鳥類のモニタリング( M2 1名 B4 2名)
    ○ 湿原再生地域の植生モニタリング (M2 1名)
    ○ 湖沼の生態系調査( M1 2名 B4 1名)
    ■ 今回紹介した技術は阿寒湖のマリモを VRカメラ調査している学
    生さんに引き継がれてます!
    ● 学生さん作成の研究室紹介動画もあります
    ○ https://www.youtube.com/watch?v=v9ZsjvYN1eM
    IoTカメラを用いた水鳥モニタリング
    カメラによるマリモ調査

    View full-size slide

  14. 補足資料: 研究で撮影したバーチャル(VR)ツアー
    ● 篠路福移湿原のバーチャルツアー
    ● 雨竜沼湿原のバーチャルツアー 
    ● 別寒牛湿原(厚岸町)のバーチャルツアー

    View full-size slide