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
310
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
360
BQで天気基盤をつくって、役立つ情報を可視化してみた!
wakamatsu_takumu
4
940
「データモデリング実践入門」は20年経っても色あせない
wakamatsu_takumu
2
730
いろんな可視化ツールあるけどggplotて何がいいの?- 複数ツールで比較してみた!-
wakamatsu_takumu
1
1.2k
文系出身でも「アルゴリズム×数学」はスッキリ理解できた!話
wakamatsu_takumu
0
390
ChatGPTにどんなときRを使えばいいか聞いてみた!
wakamatsu_takumu
0
630
A/Bテスト実践ガイド ~真のデータドリブンへ至る信用できる実験とは~
wakamatsu_takumu
1
920
データサイエンス100本ノック(構造化データ加工編) No1~40までをSQLで書いてみて
wakamatsu_takumu
0
97
Other Decks in Science
See All in Science
統計的因果探索の方法
sshimizu2006
1
1.2k
大規模画像テキストデータのフィルタリング手法の紹介
lyakaap
6
1.5k
Mechanistic Interpretability の紹介
sohtakahashi
0
350
[第62回 CV勉強会@関東] Long-CLIP: Unlocking the Long-Text Capability of CLIP / kantoCV 62th ECCV 2024
lychee1223
1
670
ICRA2024 速報
rpc
3
5.2k
As We May Interact: Challenges and Opportunities for Next-Generation Human-Information Interaction
signer
PRO
0
160
DEIM2024 チュートリアル ~AWSで生成AIのRAGを使ったチャットボットを作ってみよう~
yamahiro
3
1.3k
最適化超入門
tkm2261
14
3.3k
Machine Learning for Materials (Lecture 6)
aronwalsh
0
510
Factorized Diffusion: Perceptual Illusions by Noise Decomposition
tomoaki0705
0
220
ほたるのひかり/RayTracingCamp10
kugimasa
0
210
WCS-LA-2024
lcolladotor
0
120
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
Teambox: Starting and Learning
jrom
133
8.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Building Your Own Lightsaber
phodgson
103
6.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Speed Design
sergeychernyshev
25
620
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Agile that works and the tools we love
rasmusluckow
327
21k
Optimizing for Happiness
mojombo
376
70k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
How to train your dragon (web standard)
notwaldorf
88
5.7k
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)ツアー • 篠路福移湿原のバーチャルツアー • 雨竜沼湿原のバーチャルツアー • 別寒牛湿原(厚岸町)のバーチャルツアー