Kompozit hillshade nasıl oluşturulur?


10

Kompozit hillshade kavramı, kör noktayı önlemek için birden fazla tepe gölgesini farklı güneş ışığı yönüyle birleştirmektir. 3 tepe görüntüsünü 315⁰ (KB güneş ışığı, varsayılan katman), + 355⁰ katman, + 275⁰ güneş ışığı ile birleştirmek gerekir. Bu, aşağıda gösterildiği gibi ayrıntıları ve zarafeti arttırır.GIS dışı tam bir açıklama burada .

resim açıklamasını buraya girin

Herhangi bir srtm dosyası kullanılarak, ilk 3 tepe aşaması şu şekilde yapılabilir:

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

Yanıtlar:


9

Bağlantılı kaynak "füzyon modunu <Çarpma> olarak değiştirin" ifadesinden bahseder, bu nedenle yapılacak işlem basit bir girdi yamaçları ortalaması değildir (bunun için gdal_hillshades nasıl ortalamalandırılır? ). Başka bir şey. Yine de, 3 farklı güneş ışığı yönü tepesi oluşturalım:

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

resim açıklamasını buraya girin

A, B, C'nin en düşük değerini koru

İlk algoritma, en karanlık pikselleri, yani A, B, CA boolean girişleri arasında daha düşük değerlere sahip pikselleri filtrelemek ve saklamaktır:

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))"

Gölgelerin egemen olduğu alan şimdi bir merkezi ligntin karşı tarafından daha fazlasını oluşturuyor, her iki tarafta da 40⁰ arttı. Bağlantı sağlandığı gibi, bu mevcut algoritma aydınlanma alanını çok fazla kaybetmiş gibi görünüyor.

Açısı 315±30⁰akımı yerine o (küçük açı değişimi) 315±40⁰daha güzel yapardı.

Aşağıdaki şema denklemin temelidir. Her bölümde A, B, C piksel değerleri için A, B, C ve Boole karşılaştırmalarını gösterir. Eşitlik çizgilerinin Boole'ye dahil edilmesi için özel bir dikkat gösterilmesi gerekir. Ortanca çizgiler 221dikey ışık kaynağı için değer taşır. Etki alanlarını düşünün , en yakın ışık kaynağı ana etkidir ve en zayıf etki en uzundur.

resim açıklamasını buraya girin

A, B, C için uç değerleri koruyun

Başka bir Boole algoritması, en karanlık ve en beyaz pikseller olmak üzere en uç değerleri korumak olabilir. Aşağıdaki şema Boolean formülü hakkında yardımcı olur. Çemberin her altıncı için, ve üçgen şekilli boşluk artı saat eşitlik hattını seçmek için A, B, C, ve bir Boolean tutmak için değerini tanımlayan sadece bu . Verir (üstten ve saat yönünde):

--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)"

resim açıklamasını buraya girin

Açı değişimleri çok önemli değilse, iyi sonuçlar verebilir.

Diğer Booleanlar

Kenarlık segmentlerinin herhangi bir kombinasyonunu kullanarak tüm daireleri kapsayacak şekilde daha karmaşık Boole oluşturabilirsiniz. Bir segment için A, B, C'den sadece bir değerin tutulması önemlidir .

Çarpmak

Yaptığım birkaç failled girişimleri için multiplykanıtlanmış bir formül ne de nihai başarı olmadan piksel değerlerinin. @Radouxju (a*b*c)^(1/3), ARİTMETİK ortalama yerine (GEOMETRİK ortalama) (a*b*c)/(255*255)işe yarayabileceğini belirtti. Geometrik ortalama, gölgeli alanların koyuluğunu vurgulayan aritmetik ortalamaya daha düşük veya eşittir. Henüz test etmedim.


Kavramsal öğrenimi kompozitle ve birisinin nasıl özelleştirebileceğini özetlemeye çalıştım. "Çarpma" için gerçek formül bilinmemektedir.
Hugolpz

Neden sadece değerleri çarpıp sonuçları yeniden ölçeklendirmiyoruz?
whuber

Denemedim! Hangi formül bunu yapar (A*B*C)/(255*255)?
Hugolpz

1
Bu iyi bir başlangıç ​​olurdu :-).
whuber

1
ARİTMETİK ortalama yerine GEOMETRİK ortalama kullanılarak "çarpılmaz". (a b c) ^ (1/3). Geometrik ortalama, gölgeli alanların koyuluğunu vurgulayan aritmetik ortalamaya daha düşük veya eşittir.
radouxju

0

Gdal_calc'ın numpy'sinde daha fazla operatör var gibi görünüyor :

+ 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

Egzotik operatörlerin nasıl kullanılması gerektiğine dair net ve uygun örnekler bulamadım. Eğer bir şeyiniz varsa, paylaşmaktan çekinmeyin.


0

Bunu yapabilen bir araç (diğerleri arasında) Sky-View Faktörü Tabanlı Görselleştirme'dir ( http://iaps.zrc-sazu.si/en/svf#v ). Bir arazinin çeşitli parametrelerini hesaplayın. Çok iyi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.