Saya memiliki DEM yang ingin saya menghaluskan atau menggeneralisasi untuk menghilangkan ekstrem topografi (memotong puncak dan mengisi lembah). Idealnya, saya juga ingin memiliki kendali atas jari-jari atau tingkat "keburaman". Pada akhirnya, saya akan membutuhkan seperangkat raster yang berkisar dari sedikit buram hingga benar-benar buram. (Secara teoritis, blurriest akan menjadi raster konstan rata-rata aritmatika dari semua nilai).
Apakah ada alat atau metode yang dapat saya gunakan (berdasarkan Esri, GDAL, GRASS)? Apakah saya perlu pulang memanggang rutinitas Gaussian blur saya sendiri ? Bisakah saya menggunakan filter low-pass (mis. Filter ArcGIS ), dan jika demikian, apakah saya perlu menjalankannya beberapa kali untuk mendapatkan efek radius besar?
sumber
Jawaban:
Gaussian blur hanya fokus rata-rata tertimbang. Anda dapat membuatnya kembali dengan akurasi tinggi dengan urutan lingkungan lingkaran jarak pendek (tidak berbobot) berarti: ini adalah aplikasi dari Central Limit Theorem .
Anda punya banyak pilihan. "Filter" terlalu terbatas - hanya untuk lingkungan 3 x 3 - jadi jangan repot-repot. Pilihan terbaik untuk DEM besar adalah dengan mengambil perhitungan di luar ArcGIS ke dalam lingkungan yang menggunakan Fast Fourier Transforms: mereka melakukan perhitungan fokus yang sama tetapi (sebagai perbandingan) mereka melakukannya dengan sangat cepat. (GRASS memiliki modul FFT . Ini dimaksudkan untuk pemrosesan gambar tetapi Anda mungkin dapat menekannya untuk DEM Anda jika Anda dapat mengubah skala dengan presisi yang masuk akal ke dalam kisaran 0..255.) Kecuali itu, dua solusi setidaknya adalah layak dipertimbangkan:
Buat satu set bobot lingkungan untuk memperkirakan keburaman Gaussian untuk lingkungan yang cukup besar. Gunakan lintasan blur berturut-turut ini untuk membuat urutan DEM yang lebih mulus.
(Bobot dihitung sebagai exp (-d ^ 2 / (2r)) di mana d adalah jarak (dalam sel jika Anda suka) dan r adalah jari-jari efektif (juga dalam sel). Mereka harus dihitung dalam lingkaran yang memanjang setidaknya untuk 3r . Setelah melakukannya, bagilah masing-masing berat dengan jumlah mereka semua sehingga pada akhirnya jumlah mereka menjadi 1.)
Atau, lupakan bebannya; jalankan rata-rata fokus lingkaran berulang kali. Saya telah melakukan ini untuk mempelajari bagaimana grid yang diturunkan (seperti kemiringan dan aspek) berubah dengan resolusi DEM.
Kedua metode akan bekerja dengan baik, dan setelah beberapa lintasan pertama akan ada sedikit untuk memilih antara keduanya, tetapi ada pengembalian yang semakin berkurang: jari-jari efektif n sarana fokus berturut-turut (semua menggunakan ukuran lingkungan yang sama) hanya (kira-kira) yang akar kuadrat dari n kali radius rata-rata fokus. Dengan demikian, untuk pengaburan dalam jumlah besar, Anda harus memulai lagi dengan lingkungan radius besar. Jika Anda menggunakan rata-rata fokus tertimbang, jalankan 5-6 melewati DEM. Jika Anda menggunakan bobot kira-kira Gaussian, Anda hanya perlu satu lintasan: tetapi Anda harus membuat matriks bobot.
Pendekatan ini memang memiliki rata-rata aritmatika DEM sebagai nilai pembatas.
sumber
Saya telah menjelajahi pendekatan signal.convolusi SciPy (berdasarkan buku masak ini ), dan saya mengalami beberapa keberhasilan yang sangat bagus dengan cuplikan berikut:
Saya menggunakan ini dalam fungsi lain yang membaca / menulis float32 GeoTIFFs melalui GDAL (tidak perlu skala ulang ke 0-255 byte untuk pemrosesan gambar), dan saya telah menggunakan ukuran piksel yang mencoba (misalnya, 2, 5, 20) dan memiliki output yang sangat bagus (divisualisasikan dalam ArcGIS dengan piksel 1: 1 dan kisaran min / maks konstan):
Catatan: jawaban ini telah diperbarui untuk menggunakan fungsi pemrosesan signal.fftconvoltve berbasis FFT jauh lebih cepat .
sumber
Ini bisa menjadi komentar untuk jawaban MikeT yang luar biasa , jika itu tidak terlalu panjang dan terlalu rumit. Saya sudah sering bermain dengannya dan membuat plugin QGIS bernama FFT Convolution Filters (dalam tahap "eksperimental") berdasarkan fungsinya. Selain menghaluskan, plugin juga dapat mempertajam tepi dengan mengurangi raster yang dihaluskan dari yang asli.
Saya sedikit meningkatkan fungsi Mike dalam proses:
Pemeriksaan validitas cukup jelas, tetapi yang penting adalah casting untuk mengapung dan kembali. Sebelum ini, fungsi membuat array integer hitam (nol saja), karena pembagian dengan jumlah nilai (
g / g.sum()
).sumber
Di QGIS, saya mendapat hasil yang baik dengan mudah menggunakan penyaringan Gambar Orfeo Toolbox . Masuk akal dan mode batch berfungsi dengan baik. Difusi gaussian, rata-rata, atau anisotropik tersedia.
Catatan yang
Radius
mengacu pada jumlah sel, bukan jarak.Berikut adalah contoh penggunaan Smoothing (gaussian) :
Mentah:
Tersaring:
sumber
Solusi yang bagus untuk animasi Gaussian blur dan keren. Mengenai alat Filter Esri yang disebutkan di atas, yang pada dasarnya hanya alat "Statistik Fokus" Esri yang dikodekan dengan ukuran 3x3. Alat Statistik Fokus memberi Anda lebih banyak opsi pada bentuk filter bergerak Anda, ukuran, dan statistik yang ingin Anda jalankan. http://desktop.arcgis.com/en/arcmap/latest/tools/spatial-analyst-toolbox/focal-statistics.htm
Anda juga dapat membuat filter "tidak teratur" tempat Anda memasukkan file teks Anda sendiri dengan bobot yang digunakan untuk setiap sel. File teks memiliki baris sebanyak yang Anda inginkan di area filter Anda, dengan nilai-nilai dibatasi spasi untuk kolom. Saya kira Anda harus selalu menggunakan jumlah baris dan kolom ganjil, sehingga sel target Anda ada di tengah.
Saya membuat spreadsheet excel untuk bermain dengan bobot berbeda yang baru saja saya salin / tempel ke file ini. Seharusnya mencapai hasil yang sama seperti di atas jika Anda menyesuaikan formula.
sumber