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
白金鉱業Meetup Vol.16_【初学者向け発表】 数理最適化のはじめの一歩 〜身近な問題で学ぶ最適化の面白さ〜
brainpadpr
10
1.6k
Science of Scienceおよび科学計量学に関する研究論文の俯瞰可視化_ポスター版
hayataka88
0
150
重複排除・高速バックアップ・ランサムウェア対策 三拍子そろったExaGrid × Veeam連携セミナー
climbteam
0
140
第61回コンピュータビジョン勉強会「BioCLIP: A Vision Foundation Model for the Tree of Life」
x_ttyszk
1
1.6k
【人工衛星】座標変換についての説明
02hattori11sat03
0
130
化学におけるAI・シミュレーション活用のトレンドと 汎用原子レベルシミュレーター: Matlantisを使った素材開発
matlantis
0
300
butterfly_effect/butterfly_effect_in-house
florets1
1
110
【人工衛星開発】能見研究室紹介動画
02hattori11sat03
0
160
ABEMAの効果検証事例〜効果の異質性を考える〜
s1ok69oo
4
2.1k
Coqで選択公理を形式化してみた
soukouki
0
230
統計学入門講座 第1回スライド
techmathproject
0
130
Pericarditis Comic
camkdraws
0
1.5k
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
A Tale of Four Properties
chriscoyier
157
23k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Side Projects
sachag
452
42k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
How GitHub (no longer) Works
holman
311
140k
Rails Girls Zürich Keynote
gr2m
94
13k
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)ツアー • 篠路福移湿原のバーチャルツアー • 雨竜沼湿原のバーチャルツアー • 別寒牛湿原(厚岸町)のバーチャルツアー