GRASSでパンシャープンされたLandsat画像の偽合成をカラーバランスする方法


9

を使用してGRASSの一部のLandsat画像の合成をパンシャープンしようとするときi.pansharpeni.fusion.broveyまたはIHSシャープニング方法を使用するときはいつでも、出力には次の特性の一部またはすべてが含まれます。

  • コンポジットカラーは、シャープでないコンポジットとは異なる色合いです。
  • 輝度レベルがめちゃくちゃになる
  • コンポジット全体が真っ白/真っ黒になった(大気圏外反射率または表面反射率補正のために前処理された画像を使用する場合i.landsat.toar

また、次のこともすべて試しました。しかし、色/明るさは同じままか、さらに悪化しました:

  • 適用i.landsat.rgb、パンシャープン処理の前後
  • -fまたは-pフラグで遊んだi.landsat.rgb
  • r.colorsカラーテーブルをgrey / grey255 / grey.eqに編集しようとしました
  • i.pansharpenすべてのBrovey / IHS / PCAメソッドを使用して試した
  • ブルーチャンネルのバランスを再調整するために-lフラグを設定しi.pansharpenて遊んだ

GRASS GISのマニュアルは、パンシャープやカラーバランシングを実行する方法について説明しましたが、私は、同時ワークフローの両方のプロセスを結合する方法を見つけ出すことはできません。これは、GRASSのカラーテーブルやカラーヒストグラムなどの理解が不十分なためと思われます。

だから、誰かが私に説明することができます-GRASSで画像処理した後、Landsat画像を処理するときのカラーバランスの問題にどのように取り組みますか?お気に入りのワークフロー/方法を教えてください。

フィードバックをありがとう!

回答:


6

概観

GRASS-GISバージョン7内の1つの実用的なアプローチは、パンシャープン後に許容可能なカラーバランスの合成画像を取得することです。

  1. 入力データが[0、255]内の8ビット範囲かどうかを確認
  2. データが[0、255]内にある場合は、パンシャープン(i.pansharpen)に進みます。
  3. データが[0、255]内にない場合は、この範囲に再スケーリングします(r.rescale
  4. 注目のメソッド(Brovey、IHS、PCA)でパンシャープン
  5. i.landsat.rgbモジュールを使用して自動的に、または対象のバンドのカラーテーブルを手動で調整して、カラーバランスを調整します

詳細と手順の例

パンシャープン / フュージョン

GRASS 7は専用のパンシャープニングモジュールi.pansharpenを備えています。このモジュールは、3つのシャープネス手法、つまりBrovey変換、従来のIHS手法、およびPCAに基づく手法を特徴としています

i.pansharpen入力として8ビットラスターマップを使用すると問題なく機能します。処理するデータがこの範囲外の場合、つまり範囲外の場合は[0, 255]、GRASSのr.rescaleモジュールを使用して、この範囲に収まるように再スケーリングできます。

11ビットのスペクトルバンドのセット(たとえば、青、緑、赤、NIR、パン)が指定されている[0, 2047]場合、青のバンドを照会すると、たとえば

r.info Blue_DNs -r
min=0
max=2047

Blueバンドを範囲を変更する [0, 255]

r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255

同じ手順が、残りのマルチスペクトルバンドと対象のパンクロマティックバンドの両方に適用されます。

GRASSで作業するときはいつものように、関心領域を設定する必要があります。つまり、バンドなどの範囲を一致させる必要があります。この特定のケースでは、解像度自体がモジュールによって処理され、結果として得られるパンシャープンラスターマップは、パンクロマティックバンドと同じ高い(より高い)解像度になります。g.regionrast=Blue_DNs_255

IHSベースのパンシャープンアクションのコマンド例は次のようになります。

i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs

カラーバランス

プロセス完了後、モジュールは出力します

...
The following pan-sharpened output maps have been generated:
sharptest255_red
sharptest255_green
sharptest255_blue

To visualize output, run: g.region -p rast=sharptest255.red
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue

通常は、たとえばi.landsat.rgbモジュールを使用するか、RGBイメージを構成する3つのバンドのそれぞれを手動で調整することにより、パンシャープン後に色を再調整するだけで十分です。

スクリーンショット

追加される ...


もっと良い方法があるに違いない!これでi.sharpenモジュールを自由に使用できます。r.rescaleモジュールを指摘していただきありがとうございます。素晴らしい仕事ニコス!

Haziq、11ビットのデータセットを8ビットに変換するときに、「細かい」詳細のどれが失われるか、そしてどれだけ失われるかはわかりません。たとえば、QuickBird画像は11ビットセンサーです。これらは、8ビット形式と16ビット形式の両方で使用できます。何をするかを決めるのはユーザー次第です。i.pansharpenすべての種類のフォーマットを処理することは確かによいでしょう。関連する「チケット」をご覧ください。チケット#2048:i.pansharpenは8ビット画像に限定されています。一方、私は単に内容を理解していない可能性があるため、i.pansharpenを適切に使用できません...?
Nikos Alexandris

7

私は高低を検索しましたが、問題の根源を発見したと思います。私は今彼らのための解決策を得たと信じています-しかしそれは少し厄介です。それらを解決するより良い方法があると確信しています。より簡単な方法を知っている場合は共有してください!

問題の根源:

  1. の出力 i.landsat.toar は浮動小数点です。パンシャープン手法で浮動小数点ラスターを使用すると、色が乱れることに気づきました。これらのアルゴリズムは、元の整数形式のラスタをどういうわけか好んだ。
  2. i.pansharpen and などのパンシャープンモジュールi.fusion.brovey は、色を台無しにします。私はそれらがそれらのモジュールで使用したアルゴリズムを完全には理解していません-しかし、どういうわけかカラーテーブルが影響を受け、結果として得られるパンシャープン画像を台無しにします。

解決:

  1. i.landsat.toar を使用して、 出力をfloatからintに変換しますr.recode
  2. IHSパンシャープン手法の入力としてラスターを使用しますi.rgb.hisおよびi.his.rgb)。とは使用しないi.pansharpenでくださいi.fusion.brovey

ワークフロー:

  1. フラグr.info と一緒に 使用して、で処理された各ラスターバンド-r のDNの最小値と最大値を取得i.landsat.toarます。例えば:

    > r.info -r BAND1
    min=0.01
    max=0.370064120902708
    

    見てわかるように、値は0-1の間で、元の値(0-255の間)とはかなり異なります。これは、使用されている値の範囲が非常に低い(1未満)ため、パンシャープンの出力が空白になる理由を説明しています。

  2. を使用してそのラスターバンドを変換し r.recodeます。手順1で取得した最小値と最大値を使用して、0〜255の新しい範囲に変換します。コードスニペットの例:

    r.recode input=BAND1 output=NEWBAND1 rules=- << EOF
    0.01:0.370064120902708:0:255
    EOF
    

    新しい変換値はr.info次のようにして確認できます。

    > r.info -r NEWBAND1
    min=1
    max=254
    

    値は0〜255です。パンシャープン処理に使用できるようになりました。

  3. を使用して、変換されたバンドにグレースケールカラーテーブルを適用し r.colorsます。

    r.colors NEWBAND1 color=grey
    

    これまでのところ、グレーのカラーテーブルを使用すると、最良の結果が得られます。パンシャープンコンポジットは、元のコンポジットとよく一致しています。他の代替案はcolor=grey.eq、で-eフラグを使用するか、フラグをで使用して、グレーのカラーテーブルを均一化することcolor=greyです。またはi.landsat.rgbr.colors..の代わりにモジュールを使用することもできます。

  4. パンラスター(バンド8)を含む、コンポジットとして使用する他のラスターバンドを使用して、手順1-3繰り返します。ここではスクリプトを使用していただければ幸いです。

  5. 次に、処理されたラスターをIHSパンシャープン手法の入力として使用します。たとえば、バンド7、4、2のコンポジットを作成する場合:

    i.rgb.his r=NEWBAND7 g=NEWBAND4 b=NEWBAND2 hue=HUE int=INT sat=SAT
    

    これにより、色相レイヤーHUE、強度レイヤーINT、および飽和レイヤーの3つのレイヤーが出力されますSAT。次に、強度レイヤーINTを次のパンラスターバンドNEWBAND8に置き換えi.his.rgbます。

    i.his.rgb hue=HUE sat=SAT int=NEWBAND8 r=COMP742_red g=COMP742_green b=COMP742_blue
    

    その後、COMP742_redCOMP742_greenCOMP742_blueの結果として生じる赤いチャネルは、d.rgbまたはを使用して組み合わせることができr.compositeます。

前後のサンプル:

パンシャープン前:

前

パンシャープン後:

後

このような小さな画像から見た場合、シャープネスの違いを見分けるのは難しいかもしれません。しかし、重要なのは、パンシャープンした画像の色が元の画像の合成と一致していることです。任務完了!

その他の注意事項:

  • r.recode 熱バンド(バンド6)は使用しないでくださいi.landsat.toarこれらの熱帯域をケルビン温度値で出力します(DN値とは関係ありません)。r.recode通常のマルチスペクトルおよびパンバンド(バンド1〜5、7、8)でルーチンを維持します。
  • 私たちも、使用しない場合は i.landsat.toar結果として得られる複合材料は本当に間違って見て、それは通常ので、前とパンシャープン処理後のカラーテーブルのミスマッチです。r.colors RASTER color=greyパンシャープンの前に元のラスターバンドに適用し、パンシャープンの後に結果のチャネルに適用して、色を厳密に一致させました。
  • 間違った色の合成問題の通常のケース:元のラスターバンドはにcolor=grey255あり、出力i.landsat.rgbはにありcolor=grey.eqます。両方が違って見えるのも不思議ではありません!
  • ランドサット画像を処理して処理することは、本当に時間のかかる作業です。すべてが処理されるのを待つときは、何かすることをお勧めします。または、少なくとも、滑稽な量のコーヒーと良い音楽を聴きながら楽しんでください;)

これが誰かの利益になることを願っています。何が悪いのかを見つけるのに数日かかりました。


1
あなたの研究と努力のおかげで、svnの新しいGRASS 7でもこの問題が発生しました。これでパンシャープンされた画像の色は問題ありません。=)
ウラジミール

そうそう、私が実行しているGRASSのバージョンについて言及するのを忘れていました-思い出してくれて@VladimirNaumovに感謝します!私はGRASS 7svnを使用しています。この問題は、GRASSのすべてのバージョン間で発生しません何か(私は他のバージョンを試していない)。..することができることを認識している必要があります

これに戻る:r.mapcalc統合int()機能と一緒に使用することにより、浮動小数点ラスターマップを整数ラスターマップに変換できます。私r.recodeはあなたのアプリケーションのコンテキストで使用することを意図していないと思います。
Nikos Alexandris

1
私はに関する全体的な「問題は」と思うi.pansharpen、それは8ビットのラスタを入力としてマッピングさ見込んで、すなわち入力値が0〜255の範囲であるべきであるということです
ニコスAlexandris

また、それi.pansharpenはgrass7_trunkのみにあることに注意してください。それは開発バージョンです... :-)
Nikos Alexandris
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.