Pracuję z kodem znalezionym w Rosetta Code do tworzenia transformacji Hougha. Chcę teraz znaleźć wszystkie linie na obrazie. Aby to zrobić, potrzebuję wartości ρ i θ każdego z pików w przestrzeni Hougha. Przykładowy wynik dla pięciokąta wygląda następująco:
Jak znaleźć pojedynczą współrzędną [θ, ρ] dla każdego z „gorących punktów” widocznych w przestrzeni Hougha?
źródło
center of gravity
?Ten kod wymiany plików pomoże ci znaleźć wszystkie lokalne maksima. http://www.mathworks.com/matlabcentral/fileexchange/14498-local-maxima-minima
Jeśli masz wiedzę na temat liczby linii, które chcesz znaleźć (w tym przypadku pięciu), po prostu wybierz pięć lokalnych maksimów o najwyższych wynikach Hougha.
źródło
Możesz zlokalizować lokalne maksima dla danego promienia. Na przykład skanujesz obraz Hougha, przyjmując maksima tylko wtedy, gdy są maksymalne w oknie .3×3
Drugim krokiem może być udoskonalenie pozycji piku do dokładności poniżej piksela. Można to zrobić przez dopasowanie paraboli.
Załóżmy, że wartość w obrazie Hougha to gdzie to pozycja 2D. Teraz chciałbyś znaleźć wektor korekcyjny który maksymalizuje . Można to napisać za pomocą rozszerzenia Taylor:f(x) x p f(x+p)
Wektor korekcyjny jest wtedy
Pochodne można obliczyć na podstawie obrazu Hougha przez różnicowanie skończone .
Zauważ, że jest Hesji , a to 2-wektor (gradient poziomy i pionowy), dlatego jest również 2-wektorem określającym przesunięcie subpiksela, aby uzyskać dokładne położenie lokalnego maksymalizatora.f′′(x) 2×2 f′(x) p
Powyższe równanie może czasami powodować przesunięcia o więcej niż 1 piksel. W takim przypadku sąsiedztwo maksymalizatora nie ma kształtu parabolicznego i możesz nie chcieć dokonać korekty lub nawet porzucić kandydata na maksymalizator.
źródło
Istnieje bardzo dobra technika opracowana w połowie lat 80. przez Geriga i Kleina. Jest to procedura mapowania wstecznego, która analizuje przestrzeń Hougha w celu zidentyfikowania najbardziej prawdopodobnego punktu związanego z każdym punktem krawędziowym, a następnie konstruuje drugą przestrzeń Hougha, w której mapowanie punktów krawędziowych na parametry jest jeden do jednego, a nie jeden do wielu, co jest zwykle pierwszym etapem. Nie mam odniesienia do ręki, ale zajrzyj do przełomowego artykułu przeglądowego Hough Illingwortha i Kittlera (około 1987?)
źródło