Làm mịn / tái nội suy raster với GDAL?


15

Ngắn gọn:
Tôi muốn thay đổi độ phân giải của raster và làm mịn đường dốc màu xám như thể hiện trong hình ảnh dưới đây. Sở thích là sử dụng GDAL, PIL hoặc Numpy.

Mô tả:
Tôi đang tìm kiếm điểm vào các trình quét với độ phân giải đầu ra là 20 mét với Thư viện địa lý hiệu suất cao . Tôi không muốn thay đổi độ phân giải đầu ra vì thời gian nội suy tăng theo cấp số nhân.
Với độ phân giải này, hình ảnh đầu ra là xấu (pixelated và aliased). Tôi không biết nó có đúng về mặt khái niệm hay không nhưng tôi muốn hình ảnh mượt mà hơn như trong ví dụ dưới đây. Đó là một cái gì đó như 'tái nội suy' hình ảnh thành một độ phân giải tốt hơn. Tôi đang sử dụng python nên sở thích của tôi là GDAL, Python Imaging Library hoặc Numpy. Câu trả lời có thể là lý thuyết, như chỉ ra tên thuật toán hoặc khái niệm về loại hoạt động này.

Nguồn:
nhập mô tả hình ảnh ở đây

Nơi Đến:
nhập mô tả hình ảnh ở đây

Kết quả EDIT với spline khối gdalwarp:
nhập mô tả hình ảnh ở đây


Tôi không nhận được kết quả tốt như hình ảnh 'sau' mà bạn đã đăng với gdalwarp. Bạn có thể gửi lệnh chính xác mà bạn đã sử dụng?
Cấp Humphries

Câu trả lời:



5

Sử dụng GDALReprojectImage , được hiển thị trong Python:

from osgeo import gdal
help(gdal.ReprojectImage)

Để nội suy trơn tru, sử dụng phương pháp song tuyến hoặc khối. Hàm này khá bất tiện, vì nó không lấy các đối số từ khóa, do đó bạn cần tìm vị trí:

gdal.ReprojectImage(src_ds, dst_ds, None, None, gdal.GRA_Bilinear)

Có lẽ phần khó khăn đang được thiết lập dst_ds, cần phải có một dạng địa lý tương tự src_ds, nhưng với kích thước ô được sửa đổi.


+1. Tôi không chắc phương thức "khối" của nó là gì. Nếu đó là một spline hình khối, nó có thể sẽ mượt hơn so với song tuyến; nhưng nếu nó là tích chập khối, nó sẽ kém mịn hơn so với song tuyến. Một spline khối sẽ là về lý tưởng.
whuber

1
@whuber đúng, có hai tùy chọn thuật toán "khối" : GRA_CubicSpline(thử cái này trước) so với GRA_Cubic(tích chập).
Mike T

0

Để làm mịn các biến thể, bạn cần một bộ lọc thông thấp. Bạn có thể tự viết bằng GDAL hoặc có sử dụng GRASS. Tôi chưa thử, nhưng đây là hướng dẫn http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Exercise_31

Bạn có thể muốn lấy mẫu raster của mình trước khi áp dụng bộ lọc thông thấp để có đầu ra độ phân giải tốt hơn.


1
Tôi không nghĩ OP muốn làm mượt các biến thể: nếu không, tại sao lại phải nỗ lực giết người ngay từ đầu? Tất cả lợi ích của nó sẽ bị mất. Thay vào đó, như các hình ảnh gợi ý, câu hỏi yêu cầu một quy trình lấy mẫu trơn tru để tạo ra một phiên bản có độ phân giải cao hơn của các kết quả đã thu được (đây là một cách thông minh và hiệu quả để tăng tốc độ phá hoại).
whuber

-1

bạn có thể sử dụng bộ lọc xếp hạng / trung vị với bán kính = 5, tức là kích thước hạt nhân = 11, (cho mỗi kênh rgb).

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.