Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EBImageを用いたVR画像の変化域抽出と生態系への活用.pdf
Search
wakama1994
March 18, 2023
Science
0
320
EBImageを用いたVR画像の変化域抽出と生態系への活用.pdf
SappoRo.R#10(2023/3/18)でのLT資料
https://connpass.com/event/274084/
wakama1994
March 18, 2023
Tweet
Share
More Decks by wakama1994
See All by wakama1994
Kaggleの歩き方-関西Kaggler会に参加してみて-
wakamatsu_takumu
2
380
BQで天気基盤をつくって、役立つ情報を可視化してみた!
wakamatsu_takumu
4
970
「データモデリング実践入門」は20年経っても色あせない
wakamatsu_takumu
2
760
いろんな可視化ツールあるけどggplotて何がいいの?- 複数ツールで比較してみた!-
wakamatsu_takumu
1
1.3k
文系出身でも「アルゴリズム×数学」はスッキリ理解できた!話
wakamatsu_takumu
0
410
ChatGPTにどんなときRを使えばいいか聞いてみた!
wakamatsu_takumu
0
640
A/Bテスト実践ガイド ~真のデータドリブンへ至る信用できる実験とは~
wakamatsu_takumu
1
980
データサイエンス100本ノック(構造化データ加工編) No1~40までをSQLで書いてみて
wakamatsu_takumu
0
110
Other Decks in Science
See All in Science
Factorized Diffusion: Perceptual Illusions by Noise Decomposition
tomoaki0705
0
270
Cross-Media Information Spaces and Architectures (CISA)
signer
PRO
3
30k
[第62回 CV勉強会@関東] Long-CLIP: Unlocking the Long-Text Capability of CLIP / kantoCV 62th ECCV 2024
lychee1223
1
760
はじめてのバックドア基準:あるいは、重回帰分析の偏回帰係数を因果効果の推定値として解釈してよいのか問題
takehikoihayashi
2
920
Causal discovery based on non-Gaussianity and nonlinearity
sshimizu2006
0
200
深層学習を利用して 大豆の外部欠陥を判別した研究事例の紹介
kentaitakura
0
250
Introduction to Image Processing: 2.Frequ
hachama
0
270
多次元展開法を用いた 多値バイクラスタリング モデルの提案
kosugitti
0
200
構造設計のための3D生成AI-最新の取り組みと今後の展開-
kojinishiguchi
0
640
論文紹介: PEFA: Parameter-Free Adapters for Large-scale Embedding-based Retrieval Models (WSDM 2024)
ynakano
0
170
butterfly_effect/butterfly_effect_in-house
florets1
1
110
教師なしテンソル分解に基づく、有糸分裂後の転写再活性化におけるヒストン修飾ブックマークとしての転写因子候補の抽出法
tagtag
0
130
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
The Language of Interfaces
destraynor
154
24k
GitHub's CSS Performance
jonrohan
1030
460k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
For a Future-Friendly Web
brad_frost
175
9.4k
Mobile First: as difficult as doing things right
swwweet
222
9k
Designing Experiences People Love
moore
138
23k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
4 Signs Your Business is Dying
shpigford
181
21k
A Tale of Four Properties
chriscoyier
157
23k
Transcript
EBImageを用いた VR画像の変化域抽出と生態系ヘの活用 Wakamatsu Takumu @wakama1994 SappoRo.R #10
自己紹介 出身...北海道 経歴... 2018年 北海道大学 法学部卒 ❏ 計量政治学との出会いがデータ分析を始めるきっかけ 2020年 北海道大学 農学院 環境資源学専攻 修士修了
❏ VR技術を用いた湿地景観のアーカイブ化 >今日の発表 2020年4月〜 Weathernews.Inc ❏ スポーツアナリティクス(2年) >気候変動の分析と開発(1年) R歴...主に学生時代 ❏ データ分析勉強会サテライトビューイングの運営 趣味... 一人旅 食べ歩き スポーツ観戦 物事の分析 wakama1994 Wakamatsu Takumu
VRカメラで湿原を撮影し EBImageで植生変化を抽出してみた! 今日の発表内容
なぜVR画像を活用するのか? • 省力的な調査が可能で 植物の種の同定までできる ◦ 人が出向いた調査は高齢化に伴い 専門家が激減 ◦ 上空からの撮影技術 を活用する場合
内部の細かな状況は確認が困難 ◦ VR画像だと 1度撮影するだけで誰でも湿原の内部環境 が確認できる 活用例 ① バーチャルツアーによる 映像アーカイブ Google street viewを活用 ②複数時期の画像からの 植生変化域の抽出 Rのcolormapを使用 リモートセンシング
映像の取得方法 • 札幌市の篠路福移湿原で撮影 • 撮影期間は2019年6~10月で 計5回(月1の頻度) • 撮影地点は10地点 札幌 江別
石狩 小樽 篠路福移 当別 手動設営による タイムラプス撮影
実験方法 • 画像の背景差分を行い 緑輝度値の標準偏差から変化を抽出 ◦ 手動撮影によるズレも考慮し 複数ピクセルの正方形グリッド で抽出 ◦ 生物の専門家が使うため
OpenCVではなくRで実装されているEBImageを使用
解析コード # 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)])) } }
解析コード #各グリッドサイズの画像標準偏差の値を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")
有効性の評価 変化域抽出に活用可能かを2つの事象で検証 ①適切な複数グリッドの選定 ◦ 40px,80px,160px,320pxで比較 ▪ 標準偏差の平均値を取り 一元配置分散分析を実施 ◦ 6つのカテゴリーで検証
▪ 植物の成長(撮影近傍 ), 植物の成長(撮影遠方 ), 植物の枯死, 花の開花, 出穂,成長無 ▪ 各カテゴリーの画像選定は目視で判別 ◦ ピクセル間で差が無かった場合は実用面を考慮 ②植生変化抽出の有効性評価 ◦ 選定した複数グリッドで成長無以外の 5つのカテゴリーと成長無との 平均の差の検定で植生変化 を抽出できたかの評価 ▪ 撮影遠方成長の比較は別途遠方の成長無を リサンプルして評価 出穂 植物の 成長から枯死まで 出穂 湿原に咲く ノハナショウブ
①適切な複数グリッドの選定 40px単位 80px単位 160px単位 320px単位 • どのカテゴリーでもpx間で有意な差が検出されない • VR上での表示を考慮し 160pxが妥当と判断
◦ 40,80pxだとノイズのように表示され 320だと変化が特定しにくい恐れ
②植生変化抽出有効性評価 • 撮影近傍の成長と枯死に有意差あり • 遠望の成長,出穂,開花では有意差なし ◦ 開花や出穂は緑輝度が不適当 ◦ 遠方の成長に関しては グリッド数に問題あ
り 同じpxでも表現する距離が異なる
まとめ • 複数時期のVR画像から湿原植生の変化域抽出を実験 ◦ 緑輝度値の標準偏差では植物の成長と枯死が検出可能 ◦ 開花や出穂などの湿原特有の植生の検出は困難 ▪ 検出できなかった項目は オブジェクト検出で改良できる可能性
◦ 今後研究室の方では 湿原への侵入による破壊を防ぐため UAVとVRカメラ使用した植生 調査とバーチャルツアー教材を制作予定 チューリップのオブジェクト検出例(バウンディングボックス)
研究室紹介 • 北海道大学 農学部 生態環境物理学研究室 ◦ 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カメラを用いた水鳥モニタリング カメラによるマリモ調査
補足資料: 研究で撮影したバーチャル(VR)ツアー • 篠路福移湿原のバーチャルツアー • 雨竜沼湿原のバーチャルツアー • 別寒牛湿原(厚岸町)のバーチャルツアー