ラスタの画素値を線形に伸張し、新しいラスタを返します。線形伸張は、出力範囲全体(0–255)に画素値を再配分することで、画像の輝度およびコントラストを向上させ、視覚的に特徴をより明確に識別できるようにします。
以下の 2 種類の伸張方法が利用可能です:
パーセンタイルベースの伸張 — 指定された下限および上限のパーセンタイルで極端な画素値をクリップした後、残りの値を出力範囲全体(0–255)に再配分します。この手法は、ラスタの実際の値のディストリビューションが絶対的なしきい値よりも重要である場合に使用します。
固定範囲ベースの伸張 — 指定された最小値および最大値を直接出力範囲にマッピングします。この手法は、各バンドの入力範囲の正確な境界値が既知である場合に使用します。
構文
構文 1:パーセンタイルベースの伸張
raster ST_LinearStretch(raster raster_obj,
integer pyramidLevel DEFAULT 0,
cstring bands DEFAULT '',
integer minRatio DEFAULT 0,
integer maxRatio DEFAULT 100,
cstring storageOption DEFAULT '',
cstring parallelOption DEFAULT '{}')構文 2:固定範囲ベースの伸張
raster ST_LinearStretch(raster raster_obj,
float8[] minValues,
float8[] maxValues,
integer pyramidLevel DEFAULT 0,
cstring bands DEFAULT '',
cstring storageOption DEFAULT '',
cstring parallelOption DEFAULT '{}')パラメーター
共通パラメーター
| パラメーター | 説明 | デフォルト値 |
|---|---|---|
raster_obj | 伸張対象のラスタです。 | — |
pyramidLevel | 伸張対象のピラミッドレベルです。有効な値は 0 から開始します。 | 0 |
bands | 伸張対象のバンド ID を指定します。'0-2' のように範囲を指定するか、'1,2,3' のように個別のバンドをカンマ区切りで指定します。有効な ID は 0 から始まります。空文字列を指定すると、すべてのバンドが選択されます。 | ''(全バンド) |
storageOption | 出力ラスタのストレージオプションを JSON 文字列で指定します。「ストレージオプション」をご参照ください。 | '' |
parallelOption | 並列実行オプションを JSON 文字列で指定します。「並列オプション」をご参照ください。 | '{}' |
構文 1 のパラメーター(パーセンタイルベース)
| パラメーター | 説明 |
|---|---|
minRatio | 下限パーセンタイルのカットオフ値です。このパーセンタイル未満の画素値は 0 にマッピングされます。有効な値は 0–100 です。 |
maxRatio | 上限パーセンタイルのカットオフ値です。このパーセンタイルを超える画素値は 255 にマッピングされます。有効な値は 0–100 です。minRatio より大きい値を指定する必要があります。 |
この構文を使用する場合は、事前にラスタのパーセンタイル統計情報を算出するために、ST_BuildPercentiles または ST_ComputeStatistics を使用してください。
構文 2 のパラメーター(固定範囲ベース)
| パラメーター | 説明 |
|---|---|
minValues | 各バンドごとの最小値を格納した配列です。配列の長さは、伸張対象のバンド数と一致する必要があります。 |
maxValues | 各バンドごとの最大値を格納した配列です。配列の長さは、伸張対象のバンド数と一致する必要があります。 |
ストレージオプション
storageOption パラメーターに JSON 文字列として渡します。
| フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
chunking | boolean | 入力ラスタと同じ | 出力ラスタをチャンク単位で保存するかどうかを指定します。 |
chunkdim | string | 入力ラスタと同じ | チャンクのディメンションを指定します。chunking が true の場合のみ有効です。 |
chunktable | string | '' | 出力ラスタのチャンクテーブル名を指定します。空文字列または NULL を指定した場合、現在のセッションでのみ有効な一時的なチャンクテーブル(ランダムな名前)が作成されます。永続的なチャンクテーブルを作成するには、明示的に名前を指定します。 |
compression | string | 入力ラスタと同じ | 圧縮フォーマットを指定します。有効な値: NONE、JPEG、ZLIB、PNG、LZO、LZ4。 |
quality | integer | 入力ラスタと同じ | 圧縮後の画像品質を指定します。有効な値: 1–99。compression が JPEG の場合のみ有効です。 |
interleaving | string | 入力ラスタと同じ | データのインターリーブ方式を指定します。有効な値: bip(band interleaved by pixel:BIP)、bil(band interleaved by line:BIL)、bsq(band sequential:BSQ)。 |
endian | string | 入力ラスタと同じ | バイトオーダーを指定します。有効な値: NDR(リトルエンディアン)、XDR(ビッグエンディアン)。 |
celltype | string | 入力ラスタと同じ | 画素の型を指定します。有効な値: 1bb、2bui、4bui、8bsi、8bui、16bsi、16bui、32bsi、32bui、64bsi、64bui、32bf、64bf。 |
並列オプション
parallelOption パラメーターに JSON 文字列として渡します。
| フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
parallel | integer | 値: ganos.parallel.degree | 並列処理の次数を指定します。有効な値: 1–64。 |
仕組み
パーセンタイルベースの伸張
下位 minRatio パーセンタイルに該当する画素値は 0 にクランプされ、上位 (100 - maxRatio) パーセンタイルに該当する画素値は 255 にクランプされます。残りの画素値は、0–255 の範囲全体に線形に再配分されます。
例:あるラスタのヒストグラムが値 33–206 にわたる場合、minRatio=2 および maxRatio=98 を指定したときの動作は以下のとおりです。
下位 2% の値(33–45)が 0 にマッピングされます。
上位 2% の値(198–206)が 255 にマッピングされます。
45 から 198 の間のすべての値が、0–255 の範囲に線形に再配分されます。
固定範囲ベースの伸張
各バンドの画素値は、[minValues[i], maxValues[i]] の範囲から 0–255 へ線形にマッピングされます。これにより、ヒストグラム全体の範囲に値が再配分され、輝度およびコントラストが向上します。
例:8 ビットのデータセットにおいて、minValues=[35] および maxValues=[206] を設定すると、値 35 は 0 に、値 206 は 255 にマッピングされ、中間の値は比例的に分布されます。
使用例
例 1:パーセンタイルベースの伸張
ピラミッドレベル 1 でバンド 0–2 を伸張し、画素値の下位 2% および上位 2% をクリップします。
INSERT INTO raster_table
SELECT 100, ST_LinearStretch(rast,
1, -- ピラミッドレベル
'0-2', -- バンド
2, -- minRatio:下位 2% をクリップ
98, -- maxRatio:上位 2% をクリップ
'{"chunktable":"chunk_table", "chunking":true}',
'{"parallel":4}')
FROM raster_table
WHERE id = 1;例 2:固定範囲ベースの伸張
ピラミッドレベル 0 でバンド 0–2 を伸張し、すべての 3 つのバンドについて固定範囲 [100, 200] を [0, 255] にマッピングします。
INSERT INTO raster_table
SELECT 200, ST_LinearStretch(rast,
ARRAY[100, 100, 100]::float8[], -- 各バンドの最小値
ARRAY[200, 200, 200]::float8[], -- 各バンドの最大値
0, -- ピラミッドレベル
'0-2', -- バンド
'{"chunktable":"chunk_table", "chunking":true}',
'{"parallel":4}')
FROM raster_table
WHERE id = 1;次のステップ
ST_BuildPercentiles — パーセンタイルベースの伸張に使用するパーセンタイルを算出します。
ST_ComputeStatistics — ヒストグラムおよびパーセンタイルを含む、ラスタの完全な統計情報を収集します。