複合陰影起伏を作成する方法は?


10

複合陰影起伏の概念は、複数の陰影起伏を異なる太陽光の方向と組み合わせて死角を回避することです。3つの陰影起伏のある画像を、それぞれ315⁰(NW日光、デフォルトレイヤー)、+355⁰レイヤー、+275⁰日光とマージする必要があります。以下に示すように、これにより詳細とエレガンスが向上します。GIS以外の完全な説明はここにあります

ここに画像の説明を入力してください

任意のsrtmファイルを使用して、3つの最初の陰影起伏を次のように実行できます。

gdaldem hillshade input.tif hillshades_A.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_B.tmp.tif -s 111120 -z 5 -az 355 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_C.tmp.tif -s 111120 -z 5 -az 275 -alt 60 -compute_edges

回答:


9

リンクされたソースは「融合モードを<乗算>に変更する」と述べているため、実行する操作は入力陰影起伏の単純な平均ではありません(これについては、gdal_hillshadesを平均化する方法も参照してください)。それは別のものです。それでも、3つの異なる太陽光の方向の陰影起伏を作成しましょう。

gdaldem hillshade input.tif hillshades_A.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_B.tmp.tif -s 111120 -z 5 -az 355 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_C.tmp.tif -s 111120 -z 5 -az 275 -alt 60 -compute_edges

ここに画像の説明を入力してください

A、B、Cの最低値を維持

最初のアルゴリズムは、最も暗いピクセルをフィルタリングして保持することですが、入力A、B、CAのブール値の中でより低い値のピクセルでもこれを行うことができます。

gdal_calc.py -A hillshades_A.tmp.tif  -B hillshades_B.tmp.tif -C hillshades_C.tmp.tif --outfile=./hillshades_xl.tmp.tif \
   --calc="(A*(A<=B)*(A<=C)+ B*(B<A)*(B<=C)+ C*(C<A)*(C<B))"

影に支配された領域は、中央の光の反対側よりも多くなり、各側で40⁰増加しました。提供されたリンクではなく、この現在のアルゴリズムは啓発された領域を失いすぎているようです。

315±30⁰電流の角度が小さい(角度の変化が小さい)ほう315±40⁰がいいでしょう。

次の図は、方程式の基礎です。光源A、B、C、および各パーツのピクセル値A、B、Cのブール比較を示しています。等値線をブール値に含めるには、特別な注意が必要です。中央線は221、垂直光源の値を持ちます。影響のある領域について考えてください。最も近い光源が主な影響であり、最も弱い影響は最も弱いものです。

ここに画像の説明を入力してください

A、B、Cの極値を保持する

他のブールアルゴリズムは、最も暗いピクセルと最も白いピクセルの両方の最も極端な値を維持することです。次の図は、ブール式について説明しています。円の各第六のためには、三角形領域プラス時計回りの等価ラインを選択するために、A、B、C、およびブールから維持する値を識別し、それだけで。(上から時計回りに):

--calc="A*(A>B)*(A>=C) + C*(C>A)*(A>=221) + B*(C>A)*(C>=221) + A*(A<B)*(B<=221) + C*(B>A)*(A<=221) + B*(B>A)*(C<=221)"

ここに画像の説明を入力してください

角度の変化があまり重要でない場合は、良い結果が得られる可能性があります。

その他のブール

境界線セグメントの任意の組み合わせを使用して、円全体をカバーする、より複雑なブール値を作成できます。A、B、Cのうち1つの値のみが1つのセグメントに保持されることが重要です。

かける

私が作っいくつかのfailledの試みmultiply実績のある式でも、最終的な成功せずにピクセル値を。@Radouxju (a*b*c)^(1/3)は、算術平均の代わりに(GEOMETRIC平均)が機能する(a*b*c)/(255*255)可能性があることを指摘しました。幾何平均は算術平均以下であり、陰影領域の暗さを強調します。まだテストしていません。


私はコンポジットに関する私の概念的な学習と、誰かがそれをカスタマイズする方法を要約しようとしました。「乗算」の実際の式は、私には不明のままです。
Hugolpz

値を乗算して結果を再スケーリングしないのはなぜですか?
whuber

試していません!どの式がそれをし(A*B*C)/(255*255)ますか?
Hugolpz

1
それは良いスタートです:-)。
whuber

1
は、算術平均の代わりに幾何平均を使用して「乗算」しません。(a b c)^(1/3)。幾何平均は算術平均以下であり、陰影領域の暗さを強調します。
radouxju 2015年

0

(特に)これを実行できるツールは、Sky-View Factor Based Visualization(http://iaps.zrc-sazu.si/en/svf#v)です。地形のいくつかのパラメータを計算します。いまいましいです


-1

Gdal_calcのnumpyにはより多くの演算子があるようです:

+ addition 
- subtraction 
/ division 
* multiplication 
= equals to 
< less than 
> larger than 
! not equal to 
? if clause 
M maximum of two values 
m minimum of two values 
B bit level operator

エキゾチックな演算子をどのように使用すべきかについて、明確で適切な例を見つけていません。何かあれば、自由に共有してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.