一言で言えば
「グレー(バンド)+不透明度(バンド)=透明な結果」など、以下の3つの画像の各セットを読み取る必要があります。これらのプロセスは、関連するgithubがホストするmakefileを使用して数分でテストできます。プロセス#3は、170(強い影を維持)と220(すべての影を維持)の間のしきい値を使用して推奨するものです。プロセス3は最も強い影を提供し、白化効果を回避します。必要に応じて、結果のレイヤーの全体的な不透明度を調整します。の方程式--calc="<equation>"
も、必要に応じて、を使用して改善できますgdal_calc
。
このアプローチのレイドバック映像の場合は、参照してくださいPhotoshopのデザイナーによって説明Photoshopで陰影図を追加する(16mins)。
バックグラウンド
gdaldem hillshade
ピクセル値の範囲が[1-255]の1バンドグレースケールファイルを生成します。別名、最も暗い影から最も明るいピクセルまでです。フラットエリアの場合、px = 221(#DDDDDD)。NoDataValue
ピクセルはデフォルトのnodatavalueを取得します0
。また、入力および出力で最も暗い黒はであり、そうでなければなりません1
。不透明度バンドが定義されていない場合、不透明度は100%です。
gdaldem hillshade input.tif hillshade.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
2番目の不透明度バンドを定義および制御したい!
目的
我々はしたい1つのグレースケールバンドを -b 1
、それは陰影起伏です、。gdalのうち、px = [1-255]のような連続した範囲を持つ灰色のバンドです。無関係な領域を切り抜く(#2)か、px = 1に黒くして不透明度バンドに依存する(#3)ことができます。
通常、陰影起伏の反転またはそれに関連する関数の1つの不透明度バンドが 必要です-b 2
。無関係な領域を切り抜くことができます(#2)。px = [1-255]のような不透明度の連続した範囲である必要があります。そうでない場合、エレガンスはありません。
gdal_calc
入力ファイルA、B、C ...からのピクセルの計算とA<220
、1(true)または0(false)を返すなどのブール値のチェックの両方に使用できます。これにより、条件付き計算が可能になります。条件が偽の場合、方程式の関連部分は無効になります。
1.透明な灰色の陰影起伏
以下は、標準のgdal hillshade
グレーと白の領域がますます透明になる、非常に良い2バンドの結果を提供します。
# hillshade px=A, opacity is its invert: px=255-A
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./opacity.tif --calc="255-A"
# assigns to relevant bands -b 1 and -b 2
gdalbuildvrt -separate ./final.vrt ./hillshade.tmp.tif ./opacity.tif
2.擬似作物による最適化(-b 1&-b 2)
-b 1
不透明度-b 2
が追加されると、2/3のピクセル(グレースケール)が裸眼では見えなくなりますが、これらのピクセルはさまざまな白く-b 1
低い不透明度の-b 2
値を維持します。すべて白い透明[255,1]
ピクセルにすることができ、圧縮率が向上します。
# filter the color band, keep greyness of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./color_crop.tmp.tif \
--calc="255*(A>220) + A*(A<=220)"
# filter the opacity band, keep opacity of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./opacity_crop.tmp.tif \
--calc=" 1*(A>220) +(256-A)*(A<=220)"
# gdalbuildvrt -separate ./final.vrt ./color_crop.tmp.tif ./opacity_crop.tmp.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final_crop.tif
3.さらに-b 1最適化(作物+黒化)
-b 2
依存するプログレッシブ不透明バンドがあるため、-b 1
ピクセルを白px = 255 via 255*(A>220)
、または黒px = 1 viaのいずれかにすることができ1*(A>220)
ます。
gdal_calc.py -A ./hillshade.tmp.tif --outfile=./color.tmp.tif \
--calc="255*(A>220) + 1*(A<=220)"
# gdal_calc.py -A ./hillshade.tmp.tif --outfile=./opacity_crop.tmp.tif \
# --calc=" 1*(A>220) +(256-A)*(A<=220)".
# gdalbuildvrt -separate ./final.vrt ./color.tmp.tif ./opacity_crop.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final.tif
この結果は、より強い影を示しています。
結果
透明な陰影起伏を作成することは、当面の目的のために、プレーンの以前の灰色の領域と、関連する不要だがユビキタスな灰色化フェード効果を削除することです。望みの副産物は、最終的なビジュアル製品に対するコントロールの強化です。説明されているプロセスでは、ほとんどのグレーピクセルとすべてのホワイトピクセルが削除されます。カラフルな背景のプレーンイメージは、透明から黒の陰影がオーバーレイされると、選択された色を維持し、影の部分のみが暗くなります。以下のプロセス#2(左)と#3(右)の比較。
概要:
ズーム、影に注意してください(前と後):
さらなる最適化
白い領域:3Dの感触を高めるために、最も明るい領域を維持することもできます。文字通り、この現在のアプローチと対称的で、わずかなしきい値の変更があり、gdal_calcを介した両方の出力のマージです。プレーンは100%透明で、最も暗い影と最も明るい領域は不透明です。
平滑化:より良い最終結果を得るために、入力陰影起伏を事前に平滑化することができます。GRASS を使用したDEMの平滑化を参照してください。
複合陰影起伏(複合陰影起伏を作成する方法?)。
隆起した陰影起伏も興味深い(説明)
ノート
- 平坦な領域閾値における
gdal hillshade
出力は、平坦領域をマーキング、PX = 221(#DDDDDD = [221221221])です。また、陰影起伏のpx = 221は、影の斜面(A <221)と明かりの斜面(A> 221)ピクセルとの間で画像を分割します。
- 良好であることが証明されているpx = [170-220] の処理しきい値は、目に見える影の100%近くを保持します。影自体は、レリーフ領域の15-35%をほとんど支えません。
- ファイルサイズ>圧縮:#1、#2、#3のfinal.tifは圧縮なしで約1.3MB、圧縮後は約0.3-0.16MB、80%節約!
- ファイルサイズ>切り抜き:#1の.326KBから、切り抜きの色と不透明度(#2)は310kbに、黒く塗りつぶす(#3)は160kbになります。ファイルサイズのトリミング効果は、しきい値がpx = 220で入力が5〜50%削減されます。