Tellusの衛星写真を画像処理してみる

2月にオープンした人工衛星のオープンデータ・プラットホームTellus、とても面白そうなのです。 SARデータとか、正直、よくわかっていないのですが、とりあえず、練習として、画像処理で衛星写真から土地利用状況図を作成してみました。

Tellusのデータ処理は、基本的にはTellusのクラウド環境でProject Jupyter | Homeを使って行うようですが、アカウント登録とは別にクラウドの使用申し込みがいることや、2ヶ月以上使用がなければ環境が消去されるようなので、遊びで使うには少し敷居が高く感じられます。 そのため、まずは遊び・練習として、ScreenShotの衛星画像から土地利用状況図を作成してみました。

作成方針

  • 土地利用状況は「水域」「緑地」「街路」「大規模建物」の4分類の抽出を試みる
  • 画像処理の勉強を兼ね、独自の画像フィルタを使用する

画像処理の手順

画像処理は以下の手順で実施しました。
なお、元画像は宙畑チュートリアルを参考に、植生が「赤色」となる「プリセット:AVNIR-2 false color」のスクリーンショットを使用しました。

  1. RGBの3成分に分離し、R値<=16以下のピクセルを水域の領域として抽出した。
  2. RBG値を検査し、R値がG値、B値より大きいピクセル閾値は2.5R>(G+B)とした)を緑地として抽出した。
  3. 元画像にSobelフィルタを掛けて輪郭を抽出し、輝度を調整して街区と大規模建物を分離した。
  4. 水域、緑地、街路、大規模建物のデータを合成してとりあえず完成。

成果物

こんな感じになりました。

ソースコード

今回使用した画像フィルタは大分前に勉強用に作ったものですが、一応、ソースコードGithubGitHub - termat/ImageFilter)にアップしておきました。

雑感

Java9以降のImageIOはtiffが読み込めるらしい。ながらくJava8を愛用してましたが、そろそろOpenJDKに移行しようかな。