Tellusの衛星写真を画像処理してみる
2月にオープンした人工衛星のオープンデータ・プラットホームTellus、とても面白そうなのです。 SARデータとか、正直、よくわかっていないのですが、とりあえず、練習として、画像処理で衛星写真から土地利用状況図を作成してみました。
Tellusのデータ処理は、基本的にはTellusのクラウド環境でProject Jupyter | Homeを使って行うようですが、アカウント登録とは別にクラウドの使用申し込みがいることや、2ヶ月以上使用がなければ環境が消去されるようなので、遊びで使うには少し敷居が高く感じられます。 そのため、まずは遊び・練習として、ScreenShotの衛星画像から土地利用状況図を作成してみました。
作成方針
- 土地利用状況は「水域」「緑地」「街路」「大規模建物」の4分類の抽出を試みる
- 画像処理の勉強を兼ね、独自の画像フィルタを使用する
画像処理の手順
画像処理は以下の手順で実施しました。
なお、元画像は宙畑のチュートリアルを参考に、植生が「赤色」となる「プリセット:AVNIR-2 false color」のスクリーンショットを使用しました。
- RGBの3成分に分離し、R値<=16以下のピクセルを水域の領域として抽出した。
- RBG値を検査し、R値がG値、B値より大きいピクセル(閾値は2.5R>(G+B)とした)を緑地として抽出した。
- 元画像にSobelフィルタを掛けて輪郭を抽出し、輝度を調整して街区と大規模建物を分離した。
- 水域、緑地、街路、大規模建物のデータを合成してとりあえず完成。
成果物
こんな感じになりました。
Tellusの練習として、画像処理で衛星写真から土地利用の状況図を生成してみました。#Tellus pic.twitter.com/nPQVYtJyzu
— t_mat (@t_mat) 2019年3月20日
ソースコード
今回使用した画像フィルタは大分前に勉強用に作ったものですが、一応、ソースコードをGithub(GitHub - termat/ImageFilter)にアップしておきました。
雑感
Java9以降のImageIOはtiffが読み込めるらしい。ながらくJava8を愛用してましたが、そろそろOpenJDKに移行しようかな。