QGISのprocessingを使ってパンシャープン画像作ってみた

  • 0
    いいね
  • 2
    コメント
    この記事は最終更新日から1年以上が経過しています。

    AdventCalender FOSS4G 二個目だよ16日目の記事です。

    学習も兼ねて実際にprocessingのグラフィカルモデラーでモデルを組んでみました。今回のゴールはLANDSAT8の短バンド画像群からパンシャープン画像を作ることにします。使用したバンドは2、3、4、8帯とお馴染みのバンド帯を使用しています。

    パンシャープン化のアルゴリズムはいくつか存在するようですがここでは触れません。純粋に、高解像度なカラー画像を作成することを目的とします。

    ワークフロー

    実際の作業フローは以下のような感じになります。
    S. QGISでレイヤ読み込み(Input)
    1. バンド2,3,4帯からカラー画像(マルチスペクトル画像)を作成
    2. 作成したカラー画像をバンド8帯の高解像度画像とスケールを合わせる
    3. 画像合成
    R. パンシャープン画像できる(Output)

    それぞれをprocesingのコマンドに置き換えると
    1. Build Virtual Raster[GDAL]
    2. Superimpose sensor[OTB]
    3. Pansharpening(bayes)[OTB]
    ※インプットとアウトプットは省略

    です。なんということでしょう、ほとんどOTBです。これだったらOTBを直接いじくった方が効率がいいのでは?と思わなくもないですが、使い慣れたツールから少しの冒険をするだけでいろんなことができるようになる。というところがおもしろいのです。

    そして、これをグラフィカルモデラーで表現すると下図のようになります。
    graphical_modeler.JPG

    上の方にある紫色のボックスが「入力」と呼ばれるインプットレイヤです。今回のケースで言えばLANDSAT8の衛星画像の短バンドラスタデータです。
    真ん中にある白いボックスが「アルゴリズム」と呼ばれるprocessingのコマンドです。
    最後の下の方にある水色のボックスが出力結果を表しています。

    では、順を追って説明していきます。

    入力の追加

    パンシャープン画像を作るには4枚のラスタデータが必要なので、入力するためのボックスも4つ用意します。
    グラフィカルモデラーの左側にあるペインの中で「入力」タブを選ぶと色々なボックスが出てきますが、今回は全てラスタデータなので「Raster layer」を4つD&Dかダブルクリックで右側のペインに登録します。このとき、適当な名前と各入力ボックスがモデルの中で必須項目なのかどうか聞かれますがどちらもでいいと思います。それぞれ言葉通りの意味だと思います。

    それ以外の入力ボックスは使ってみたものの感覚だと

    入力 予想
    Boolean YES/NO判定に使うフラグとかのチェックボックスに対応する
    Number バッファとかの距離(数値)を入力するテキストボックスに対応する
    (なぜか数値の範囲指定もある)
    String コマンドオプションなどを入力するテキストボックスに対応する
    Table field ベクタ・テーブルなどのカラムに対応する

    他、Extent・File・Tableはちょっとよくわかりません。それぞれそのまんまだと思うのですが、入力を受け付けてくれるコマンドを探すだけで一苦労・・・ExtentなんかはNumberと重複しているのだけど逆では・・・?と思わなくもなかったり。

    アルゴリズムの追加

    「入力」を追加したら、次は使用するアルゴリズムを左側のペインにある「アルゴリズム」タブから選びます。
    今回はカラー画像を作成する「Build Virtual Raster」「Superimpose sensor」「Pansharpening(bayes)」を探し出して「入力」と同様にD&Dかダブルクリックで選びます。
    それぞれのアルゴリズムで単独のコマンド実行時のパラメータ設定を求められますが、後で修正できるので適当に入力してエラーが出ずに右側ペインに登録できればいいです。

    各アルゴリズムを接続

    単体のアルゴリズムは必ず入力に対して出力が存在します。つまり各アルゴリズムを接続するというのは、処理したアルゴリズムの出力を、次のアルゴリズムの入力にしてしまうということです。ということは、Build Virtual Rasterで作成したカラー画像を、次のSuperimpose Sensorの入力として使用し、Superimpose Sensorでスケールアップしたカラー画像を、Pansharpening(bayes)の入力としてしまうことです。
    非常に複雑に見えてしまうかもしれませんが、グラフィカルモデラーではそこまで複雑ではないです。今回のケースの場合、下の図が実際にSuperimpose Sensorのパラメータ設定画面ですが、右側ペインに登録されている入力ボックス以外に赤い枠のような項目が出てきます。図で言えば「仮想 以下のアルゴリズムより'Make Color Image'」とあり、これが'Make Color Image'のコマンドに対応する出力を意味していますので、これを選択するとアルゴリズムの接続ができます。
    chane.jpg

    ちなみに'Make Color Image'というのは登録したアルゴリズムの別名です。実際は'Build Virtual Raster'のことを意味します。

    出力の追加

    出力に対するボックスは存在しないようです。代わりに、最後のアルゴリズムから出力ボックスを発生させます。最後のアルゴリズムのボックス右下の鉛筆マークから編集画面を開きます。
    コマンドには必ず出力結果の保存先を入力するボックスがあるので、そこに出力にふさわしい名前を入力するだけでOKです。えぇ、なんでもいいです。
    output.JPG
    ハラショー

    実行テスト

    これで入力から出力までのモデルができあがりました。試しに、ちゃんと動くか(ここではフォームが表示されるか)確認してみます。
    左上のツールバーに歯車が噛み合わさったアイコンを選択してフォームが表示され、ちゃんと入力と出力、場合によっては他の設定値入力が期待通りに表示されればひとまず完成です。あとは実行してみて期待通りの結果が返ってくるか確認するだけです。

    以上

    この投稿は FOSS4G 二個目だよ Advent Calendar 201516日目の記事です。