Saya memiliki gambar yang terdiri dari beberapa 'sudut' yang membentuk bentuk kotak:
Setelah beberapa pencarian, Hough tampak cocok, karena tidak bermasalah dengan antrian. Namun, masalah yang saya miliki adalah bahwa garis saya 'gemuk', dan deteksi tepi yang saya jalankan (Canny dalam kasus ini), memilih tepi garis, dan bukan tengah:
Ini berarti bahwa transformasi Hough akhirnya memilih satu (atau keduanya) dari 'sisi' dari garis kisi saya, dan bukan tengah.
Mengingat saya tahu apa yang saya cari (bentuk seperti grid, selalu dalam orientasi yang hampir sama), apakah ada cara yang lebih baik untuk melakukan bagian 'deteksi tepi' untuk memberi saya garis tengah, atau haruskah saya mencari pada metode yang sama sekali berbeda?
Jawaban:
Hough Transform memang akan membantu dalam mengambil Grid dalam kasus ini. Untuk "menipiskan" garis, Anda mungkin ingin mempertimbangkan operasi Skeletonization
Itu akan menghasilkan gambar seperti ini:
Karena cara skeletonization bekerja, masih akan menghasilkan beberapa garis yang tampaknya tidak relevan dengan grid tetapi garis-garis menuju arah "salah" tidak banyak (setidaknya dalam gambar yang diberikan) untuk membingungkan deteksi garis Hough Transform terlalu banyak dan itu jelas akan memilih dua set garis utama pada arah yang berbeda. (Berikut adalah bagaimana hasil HT terlihat:)
Jika Anda menggunakan MATLAB, Anda mungkin ingin memeriksa halaman bantuan ini
sumber
Alternatif untuk Hough Transform adalah Radon Transform ( 1 , 2 ). Deskripsi kasar suatu algoritma untuk mendeteksi struktur seperti grid dapat terlihat seperti ini:
EDIT :
Berikut adalah cuplikan matlab kecil untuk menggambarkan langkah 1-3:
Untuk menjawab pertanyaan Anda dari komentar: Tampaknya bagi saya dari satu contoh gambar yang Anda berikan, bahwa metode ini lebih kuat terhadap cacat kecil di kisi yang terdeteksi. Kerangka jarang akan menghasilkan garis lurus yang mungkin menjadi kerugian bagi Hough Transform berikutnya.
sumber