Mengenali jalur air dalam foto udara - poligon dari gambar deteksi tepi

9

Saya mencoba mengenali saluran air dari foto udara (katakanlah dari Google Maps). Pemerintah daerah sering memiliki data SIG yang mengatakan di mana saluran air (dan jalan, bangunan dll) berada, tetapi data air di dalamnya seringkali agak tidak akurat, dan kami mungkin dapat memperbaikinya dengan menggunakan citra udara. Jadi kami sudah memiliki beberapa data yang tidak selalu dapat dipercaya.

Saya tahu cara melakukan pemrosesan gambar dasar pada data (sayangnya saya belum memiliki contoh gambar untuk ditampilkan di sini, saya sedang mencoba membayangkan bagaimana saya bisa melakukan ini, belum ada kode yang berfungsi):

  • Saya dapat mengumpulkan beberapa set nilai warna menggunakan bit waterway dalam gambar, dan mencari tahu piksel mana yang paling dekat dengan warna-warna ini, mungkin juga untuk jenis fitur lainnya (rumput, jalan, bangunan dll). Jika saya menetapkan ambang di mana piksel "cukup dekat", saya mendapatkan satu set piksel yang mungkin saluran air (tetapi akan ada banyak suara).

  • Saya dapat mengubah gambar menjadi skala abu-abu dan menggunakan algoritme deteksi tepi standar untuk mengetahui di mana tepinya berada. Sekali lagi, ini memberi saya satu set piksel batas seperti, tetapi akan ada kebisingan dan ujung-ujungnya terlalu berpikir dan / atau memiliki celah.

Yang ingin saya miliki sebagai keluaran adalah seperangkat poligon yang menguraikan kemungkinan saluran air.

Secara intuitif saya ingin menggunakan tepi yang terdeteksi untuk membuat poligon, dan informasi warna untuk memutuskan yang mana dari mereka adalah air, mungkin menggunakan data pemerintah yang sudah kita miliki.

Apakah ada cara yang diketahui untuk mendapatkan dari hasil algoritma deteksi tepi ke kumpulan poligon tertutup yang bagus? Atau ada tips lain tentang cara menyerang masalah ini, jika ada cara yang lebih baik?

RemcoGerlich
sumber
1
Sidenote: Ingatlah bahwa lisensi google tidak diperbolehkan untuk melakukan ini! Openstreetmap memiliki masalah yang sama . OSM memang memiliki perjanjian untuk menggunakan gambar Bing.
PiTheNumber

Jawaban:

6

Ini sulit dilakukan dengan informasi warna saja. Variasi warna antara (atau bahkan di dalam) citra udara dan satelit bisa sangat besar. Idealnya Anda menginginkan citra hiperspektral atau setidaknya inframerah ( lihat makalah ini ).

Dengan asumsi deteksi tepi Anda dapat snap ke batas-batas piksel, Anda dapat mengambil perbatasan masing-masing piksel sebagai poligon tertutup dan menyatukannya bersama untuk membentuk poligon (tergantung pada penerapan serikat Anda, Anda mungkin berakhir dengan poligon dengan cincin atau lubang dalam) atau koleksi poligon. The Java Topologi Suite dan implementasi komputasi geometri lainnya dapat membuat ini lebih mudah bagi Anda. Jika Anda ingin menggunakan batas sub-pixel, Anda harus sangat berhati-hati karena Anda memiliki nilai epsilon yang baik sehingga Anda dapat mengambil tepi yang sangat dekat tetapi tidak benar-benar menyentuh.

Jika Anda ingin mengambil sisi-sisinya dan menggabungkannya sendiri, Anda akan ingin membuat grafik sisi-sisi yang bersilangan dan mengimplementasikan kode yang melintasi grafik (misalnya berlawanan arah jarum jam) untuk menemukan di mana ia menutup sendiri untuk membentuk poligon. Ini adalah bagaimana beberapa implementasi serikat poligon bekerja.

kevin42
sumber