Computer Vision

Python, Computer Vision, AI, Transhumanism 関連

【低画質】衛星画像から竹藪を探す

今回は人工衛星の画像から竹藪を探してみる。

まずは竹林の名所をあたってみるが、意外とまとまった規模で生えている竹林がみあたらなかった。しかしいくつか探していったところ、栃木県「若竹の杜 若山農場」というのを見つけた。

 

www.wakayamafarm.com

 

では早速画像を取得

sentinelshare.page.link

 

取得画像としては以下を用意する。とってくるのはいつも通り、上記サイトで、Sentinel-2 の衛星画像を取ってきて使う。

1)バンド設定、NDVIで緑地とそうでない部分を判定できそうな画像を取得

2)竹藪が枯れた頃を見計った衛星画像を取得

3)竹藪が緑に戻った時を見計って取得した衛星画像

 

順番に説明すると、

1)竹は植物なので、植物じゃなさそうなエリアはさっっさと除外したほうが話が早いだろう。

 

2)これは、今回の一番のポイントである。竹には、「竹の秋」という言葉のように、竹は、1年に一度葉が黄ばんでくる時期があるようだ。これは、他の植物にあまりない特徴なので、絞り込みのヒントになりそうだ。

で、「竹の秋」の時期としては5月〜6月のようだが、実際色づいて見えるのは、短期間なので、雲の入っていないきれいな画像をピンポイントで探すのは結構難しい。

個人的な目安は5/15近辺の画像を探した。

 

さらに調べたところでは、どうも2年に一度ぐらい濃く現れるような情報もあったので、今年で良い画像がなければ昨年も探してみるとよいかもしれない。

 

3)今回は竹藪は「竹の秋」により、色が変わるがその他の部分はあまり変わらないという点を抽出の条件としたいので、比較用の画像を探す。

目安としては2の画像から1ヶ月ぐらい後に、こんどは竹藪が青々とするので、そこを狙って画像をとってくる。

 

そんなこんなで、検出プログラムをなんとなく書いて実行。

検出結果がこちら。

竹林判定した部分を赤く示している。

 

 

f:id:tsubute:20210710115422p:plain

赤い部分が本当に竹林かどうかはGoogleMapの航空写真でズームして確認。

もちろん完全ではないが、それほど悪くない結果である。

 ただ、上部の帯部分も検出しているのは謎である。

 

元の画像Bはこんな感じ。

こんなぼけぼけの写真、人がみてもぱっと見どこが竹林で、どこは違うのか、わかりにくい。すくなくとも専門家ではない私には難しいし、おそらく機械学習でも難しいレベルだと思う。

f:id:tsubute:20210710140939p:plain


たしかに、初めからGoogleマップ(高解像度の航空写真)を使えば、ディープラーニングで判定させ、そこそこの精度で竹藪を判定できそうな気はする。

 

ただし今回は、低画質・広範囲地図から、特定の植物を検出できたという点で評価いただけると幸いです。

 

プログラムに興味がある方は下記をご参照ください。

https://github.com/skyfish2019/satellite-vision

ループ部分はもう少しわかりやすく書いたらよいのですが、そのままですいません。