ラスター値を0〜255に正規化する


8

バンド比から得られた値を0〜255に正規化する必要があります。QGISを使用しています。どうすればよいですか?何か案は?


1
比率なので要注意!たとえば、ヒストグラムが等化された2つの0-255画像の比率である場合、比率の半分は0から1の間で、残りの半分は1から255の間です(一部は未定義になります)。これは範囲の大きな差異です。 !目的によっては、比率の対数が計算に適した量になる場合があります。さらに良いのは、未定義の量を避けるためにlog((1 + band1)/(1 + band2))を計算することです。少なくとも、これはより読みやすいマップを生成します。
whuber

回答:


11

gdal_translateユーティリティを使用できます。オプション-scale [src_min src_max [dst_min dst_max]]を使用して、src_minおよびsrc_maxをデータの現在の最小/最大値として、0,255をdst_min、dst_maxとして使用します。角括弧なし。

OSGeo4WパッケージでQGISをインストールした場合、「MSYS」と呼ばれる端末プログラムを使用している可能性があります。それを開き、gdal_translateコマンドを使用します。そうでない場合は、QGIS内から[ラスター]-> [変換]-> [変換]を選択します。ファイルとオプションを選択します。ウィンドウの下部に完全なgdal_translateコマンドが表示されます。[編集]をクリックして、-scaleオプションを追加します。


16

次の例では、データを8ビット(0〜255)にストレッチします。

smin=0; smax=255

( x - min(x) ) * (smax - smin) / ( max(x) - min(x) ) + smin

これを選択したソフトウェアのラスター代数構文に変換するのはかなり簡単なはずです。ラスタの最小値と最大値を知る必要があるだけです。ラスターがバンド比の結果である場合、-1から1を想定しても安全で、構文は次のようになります。

NewRaster = ( OldRaster - -1 ) * 255 / ( 1 - -1 ) + 0

1
+1:一般的な答え(構文に依存しない)は、幅広い用途があります。ジェフリーへようこそ!
whuber

最初のsmax項は実際にあるはずですsmax - smin-例(0-255)ではそれは問題ではありませんが、smin!= 0
Simbamangu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.