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
410
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
SciPyDataJapan 2025
schwalbe10
0
140
WeMeet Group - 採用資料
wemeet
0
4.4k
局所保存性・相似変換対称性を満たす機械学習モデルによる数値流体力学
yellowshippo
1
170
Cross-Media Information Spaces and Architectures (CISA)
signer
PRO
3
30k
学術講演会中央大学学員会八王子支部
tagtag
0
270
はじめての「相関と因果とエビデンス」入門:“動機づけられた推論” に抗うために
takehikoihayashi
17
7.3k
Spectral Sparsification of Hypergraphs
tasusu
0
250
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
130
理論計算機科学における 数学の応用: 擬似ランダムネス
nobushimi
1
400
Healthcare Innovation through Business Entrepreneurship
clintwinters
0
190
ガウス過程回帰とベイズ最適化
nearme_tech
PRO
1
180
多次元展開法を用いた 多値バイクラスタリング モデルの提案
kosugitti
0
230
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
51
7.4k
Facilitating Awesome Meetings
lara
52
6.2k
Building Applications with DynamoDB
mza
93
6.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
500
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Statistics for Hackers
jakevdp
797
220k
Navigating Team Friction
lara
183
15k
Docker and Python
trallard
44
3.3k
Done Done
chrislema
182
16k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
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)ツアー • 篠路福移湿原のバーチャルツアー • 雨竜沼湿原のバーチャルツアー • 別寒牛湿原(厚岸町)のバーチャルツアー