Làm thế nào để tạo ra ngọn đồi composite?


10

Khái niệm về ngọn đồi hỗn hợp là kết hợp nhiều ngọn đồi với hướng ánh sáng mặt trời khác nhau để tránh điểm mù. Nó đòi hỏi phải hợp nhất 3 hình ảnh trên đồi với lần lượt là 315⁰ (ánh sáng mặt trời, lớp mặc định), lớp 355⁰, + ánh sáng mặt trời tương ứng. Điều này làm tăng chi tiết và sang trọng, như được hiển thị bên dưới . Mô tả đầy đủ về phi GIS có ở đây .

nhập mô tả hình ảnh ở đây

Sử dụng bất kỳ tệp srtm nào, 3 hình đồi ban đầu có thể được thực hiện thông qua:

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

Câu trả lời:


9

Nguồn được liên kết đề cập "thay đổi chế độ hợp nhất của nó thành <Multiply>" , do đó, thao tác cần thực hiện không phải là một mức trung bình đơn giản của các cảnh báo đầu vào (đối với điều này, xem thêm Làm thế nào để trung bình gdal_hillshades? ). Đó là một cái gì đó khác. Tuy nhiên, hãy tạo ra 3 ngọn đồi hướng ánh sáng mặt trời khác nhau:

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

nhập mô tả hình ảnh ở đây

Giữ giá trị thấp nhất của A, B, C

Thuật toán đầu tiên tôi nghĩ là lọc và giữ các pixel tối nhất, còn gọi là các pixel có giá trị thấp hơn trong số boolean A, B, CA có thể làm điều đó:

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

Khu vực bị chi phối bởi bóng tối hiện chiếm nhiều hơn phía đối diện của một dây chằng trung tâm, nó được tăng thêm 40⁰ mỗi bên. Không phải là liên kết được cung cấp, thuật toán hiện tại này dường như mất quá nhiều khu vực khai sáng.

Góc của 315±30⁰(biến đổi góc nhỏ hơn) thay vì hiện tại 315±40⁰sẽ đẹp hơn.

Sơ đồ dưới đây là một cơ sở của phương trình. Nó hiển thị các nguồn sáng A, B, C và so sánh Boolean cho các giá trị pixel A, B, C trong mỗi phần. Các dòng bằng cần một sự chú ý đặc biệt để được đưa vào Boolean. Các đường trung tuyến có giá trị 221cho nguồn sáng vuông góc. Hãy nghĩ về các khu vực ảnh hưởng , nguồn ánh sáng gần nhất là ảnh hưởng chính và ảnh hưởng yếu nhất.

nhập mô tả hình ảnh ở đây

Giữ các giá trị cực trị cho A, B, C

Một thuật toán Boolean khác có thể là giữ các giá trị cực đoan nhất, cả các pixel tối nhất và trắng nhất. Sơ đồ sau đây giúp điều về công thức Boolean. Đối với mỗi thứ sáu của vòng tròn, nó xác định giá trị cần giữ từ A, B, C và Boolean để chọn diện tích hình tam giác cộng với đường đẳng thức theo chiều kim đồng hồ, và chỉ có thế . Nó cho (từ trên và theo chiều kim đồng hồ):

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

nhập mô tả hình ảnh ở đây

Nếu các biến thể góc không quá quan trọng, nó có thể cho kết quả tốt.

Booleans khác

Bạn có thể tạo Boolean phức tạp hơn để bao phủ toàn bộ vòng tròn bằng cách sử dụng bất kỳ kết hợp nào các phân đoạn viền. Điều quan trọng là chỉ có một giá trị trong số A, B, C được giữ cho một phân khúc.

nhân

Tôi đã thực hiện một số nỗ lực hoàn thành multiplycác giá trị pixel mà không có công thức đã được chứng minh cũng như thành công cuối cùng. @Radouxju chỉ ra rằng (a*b*c)^(1/3)(ý nghĩa GEOMETRIC) thay vì ý nghĩa ARITHMETIC có (a*b*c)/(255*255)thể hoạt động. Giá trị trung bình hình học thấp hơn hoặc bằng trung bình số học, làm nổi bật bóng tối của các khu vực bóng mờ. Tôi chưa thử nó.


Tôi đã cố gắng tổng hợp việc học theo khái niệm của tôi trên composite và làm thế nào ai đó có thể tùy chỉnh nó. Công thức thực sự cho "nhân" vẫn chưa được biết đến với tôi.
Hugolpz

Tại sao không chỉ nhân các giá trị và bán lại kết quả?
whuber

Chưa thử! Công thức nào sẽ làm điều đó , (A*B*C)/(255*255)?
Hugolpz

1
Đó sẽ là một khởi đầu tốt :-).
whuber

1
không "nhân" bằng cách sử dụng trung bình GEOMETRIC thay vì trung bình ARITHMETIC. (a b c) ^ (1/3). Giá trị trung bình hình học thấp hơn hoặc bằng trung bình số học, làm nổi bật bóng tối của các khu vực bóng mờ.
radouxju

0

Một công cụ có thể làm điều này (trong số những công cụ khác) là Trực quan hóa dựa trên yếu tố Sky-View ( http://iaps.zrc-sazu.si/en/svf#v ). Tính toán một số tham số của một địa hình. Là tốt chết tiệt.


-1

Numpy của Gdal_calc dường như có nhiều toán tử hơn :

+ 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

Tôi đã không tìm thấy các ví dụ rõ ràng và phù hợp về cách sử dụng các toán tử kỳ lạ. Nếu bạn có một cái gì đó, hãy chia sẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.