Saya bekerja dengan kode yang ditemukan di Rosetta Code untuk membuat transformasi Hough. Saya sekarang ingin menemukan semua garis dalam gambar. Untuk melakukannya saya membutuhkan nilai ρ dan θ dari masing-masing puncak di ruang Hough. Output sampel untuk pentagon terlihat seperti ini:
Bagaimana saya dapat menemukan satu koordinat [θ, ρ] untuk masing-masing 'hot spot' yang terlihat di ruang Hough?
sumber
center of gravity
?Kode ini di File Exchange akan membantu Anda menemukan semua maksimum lokal. http://www.mathworks.com/matlabcentral/fileexchange/14498-local-maxima-minima
Jika Anda memiliki pengetahuan tentang berapa banyak garis yang ingin Anda temukan (dalam kasus ini lima), Anda cukup memilih lima maxima lokal dengan skor Hough tertinggi.
sumber
Langkah kedua bisa memperbaiki posisi puncak ke akurasi sub-pixel. Ini bisa dilakukan dengan pemasangan parabola.
Kemudian vektor yang mengoreksi
Derivatif dapat dihitung dari gambar Hough dengan perbedaan hingga .
Perhatikan bahwa adalah matriks Hessian dan adalah 2-vektor (gradien horizontal dan vertikal), maka juga merupakan 2-vektor yang menentukan pergeseran sub-pixel untuk mendapatkan posisi akurat dari maximizer lokal.2 × 2 f ′ ( x ) hlmf′′(x) 2×2 f′(x) p
Persamaan di atas kadang-kadang dapat menghasilkan pergeseran lebih dari 1 piksel. Dalam kasus seperti itu, lingkungan maximizer tidak memiliki bentuk parabola dan Anda mungkin tidak ingin melakukan koreksi atau bahkan harus menjatuhkan kandidat maximizer.
sumber
Ada teknik yang sangat bagus yang dikembangkan kembali di pertengahan 80 oleh Gerig dan Klein. Ini adalah prosedur backmapping yang menganalisis ruang Hough untuk mengidentifikasi titik yang paling mungkin terkait dengan setiap titik tepi dan kemudian membangun ruang Hough kedua di mana pemetaan titik tepi ke parameter adalah satu-ke-satu daripada satu-ke-banyak yang adalah tahap pertama yang biasa. Saya tidak memiliki referensi ke tangan tetapi melihat di kertas ulasan Hough mani Illingworth dan Kittler (sekitar 1987?)
sumber