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
330
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
420
BQで天気基盤をつくって、役立つ情報を可視化してみた!
wakamatsu_takumu
4
1k
「データモデリング実践入門」は20年経っても色あせない
wakamatsu_takumu
2
850
いろんな可視化ツールあるけどggplotて何がいいの?- 複数ツールで比較してみた!-
wakamatsu_takumu
1
1.3k
文系出身でも「アルゴリズム×数学」はスッキリ理解できた!話
wakamatsu_takumu
0
440
ChatGPTにどんなときRを使えばいいか聞いてみた!
wakamatsu_takumu
0
650
A/Bテスト実践ガイド ~真のデータドリブンへ至る信用できる実験とは~
wakamatsu_takumu
1
1.1k
データサイエンス100本ノック(構造化データ加工編) No1~40までをSQLで書いてみて
wakamatsu_takumu
0
120
Other Decks in Science
See All in Science
Machine Learning for Materials (Challenge)
aronwalsh
0
140
ガウス過程回帰とベイズ最適化
nearme_tech
PRO
1
180
LIMEを用いた判断根拠の可視化
kentaitakura
0
440
07_浮世満理子_アイディア高等学院学院長_一般社団法人全国心理業連合会代表理事_紹介資料.pdf
sip3ristex
0
140
20分で分かる Human-in-the-Loop 機械学習におけるアノテーションとヒューマンコンピューターインタラクションの真髄
hurutoriya
5
2.8k
化学におけるAI・シミュレーション活用のトレンドと 汎用原子レベルシミュレーター: Matlantisを使った素材開発
matlantis
0
440
Reconciling Accuracy, Cost, and Latency of Inference Serving Systems
pjamshidi
0
120
私たちのプロダクトにとってのよいテスト/good test for our products
camel_404
0
250
Planted Clique Conjectures are Equivalent
nobushimi
0
120
はじめてのバックドア基準:あるいは、重回帰分析の偏回帰係数を因果効果の推定値として解釈してよいのか問題
takehikoihayashi
2
1.3k
はじめての「相関と因果とエビデンス」入門:“動機づけられた推論” に抗うために
takehikoihayashi
17
7.3k
WeMeet Group - 採用資料
wemeet
0
4.4k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
158
23k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
Unsuck your backbone
ammeep
669
57k
Producing Creativity
orderedlist
PRO
344
40k
Thoughts on Productivity
jonyablonski
69
4.5k
A Philosophy of Restraint
colly
203
16k
The Cult of Friendly URLs
andyhume
78
6.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
How STYLIGHT went responsive
nonsquared
98
5.4k
Designing Experiences People Love
moore
140
23k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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)ツアー • 篠路福移湿原のバーチャルツアー • 雨竜沼湿原のバーチャルツアー • 別寒牛湿原(厚岸町)のバーチャルツアー