In der verknüpften Quelle wird erwähnt, dass der Fusionsmodus auf <Multiplizieren> geändert wird. Daher handelt es sich bei der auszuführenden Operation nicht um einen einfachen Durchschnitt der eingegebenen Hillshades (siehe auch Wie man gdal_hillshades mittelt? ). Es ist etwas anderes. Lassen Sie uns jedoch die 3 Hügelschatten in verschiedenen Sonnenlichtrichtungen erstellen:
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
Behalten Sie den niedrigsten Wert von A, B, C bei
Der erste Algorithmus, über den ich nachgedacht habe, besteht darin, die dunkelsten Pixel zu filtern und beizubehalten, auch bekannt als die Pixel mit niedrigeren Werten unter den Eingaben A, B, CA. Boolesche Werte können dies tun:
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))"
Der von Schatten dominierte Bereich bildet jetzt mehr als die gegenüberliegende Seite eines zentralen Lichts, er wurde auf jeder Seite um 40 ° vergrößert. Nicht als Link bereitgestellt, scheint dieser aktuelle Algorithmus den Aufklärungsbereich zu sehr zu verlieren.
Winkel von 315±30⁰
(kleinere Winkelvariation) eher als Strom 315±40⁰
würde besser tun.
Das folgende Diagramm ist die Grundlage der Gleichung. Es zeigt die Lichtquellen A, B, C und die Booleschen Vergleiche für die Pixelwerte A, B, C in jedem Teil. Gleichheitslinien benötigen besondere Aufmerksamkeit, um in den Booleschen Wert aufgenommen zu werden. Die Mittellinien haben einen Wert 221
für die senkrechte Lichtquelle. Denken Sie an Einflussbereiche , die nächstgelegene Lichtquelle ist der Haupteinfluss und die weiteste der schwächste Einfluss.
Halten Sie die Extremwerte für A, B, C ein
Ein anderer boolescher Algorithmus könnte darin bestehen, die extremsten Werte beizubehalten, sowohl die dunkelsten als auch die weißesten Pixel. Das folgende Diagramm hilft bei der Booleschen Formel. Für jedes Sechstel des Kreises wird der Wert angegeben, der von A, B, C und einem Booleschen Wert beibehalten werden soll, um den dreieckigen Bereich plus die Gleichheitslinie im Uhrzeigersinn auszuwählen, und nur diesen . Es gibt (von oben und im Uhrzeigersinn):
--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)"
Wenn die Winkelschwankungen nicht zu wichtig sind, kann dies zu guten Ergebnissen führen.
Andere Boolesche
Sie können komplexere Boolesche Werte erstellen, um die gesamten Kreise mit einer beliebigen Kombination der Rahmensegmente abzudecken. Es bleibt wichtig, dass nur ein Wert von A, B, C für ein Segment beibehalten wird.
Multiplizieren
Ich habe mehr failled Versuche zu multiply
Pixelwert ohne eine bewährte Formel noch endgültigen Erfolg. @ Radouxju wies darauf hin, dass (a*b*c)^(1/3)
(GEOMETRISCHER Mittelwert) anstelle des ARITHMETISCHEN Mittelwerts (a*b*c)/(255*255)
funktionieren könnte. Das geometrische Mittel ist niedriger oder gleich dem arithmetischen Mittel, wodurch die Dunkelheit der schattierten Bereiche hervorgehoben wird. Ich habe es noch nicht getestet.