instrukcja
Transkrypt
instrukcja
Ćwiczenie 7 TRANSFORMACJA HOUGHA Zakres pracy W ramach ćwiczenia należy do istniejącego programu dodać możliwość wykrywania linii przy użyciu transformacji Hougha. Algorytm ma działać dla obrazów binarnych (1-bitowych). Realizacja zadania powinna przebiegać w opisanych poniżej etapach. 1. Wizualizacja zawartości akumulatora w postaci obrazu w odcieniach szarości (wyświetlanego w oddzielnym oknie). Obraz powinien być tak przeskalowany, aby oś pozioma (reprezentująca kąt ) liczyła zawsze 720 pikseli. Rozdzielczość osi pionowej (reprezentującej długość promienia ) powinna być dopasowana do rozdzielczości osi poziomej (krok ma stanowić taką samą część całości dla i dla ), jednak długość osi pionowej nie może przekraczać 800 pikseli. Kolor biały ma odpowiadać wartości 0, a czarny wartości maksymalnej. Początkowo przyjmujemy, że krok dla wynosi 1. 2. Zmiana dokładności transformacji poprzez regulację kroku w zakresie od 1 do 20. Wartość kroku ma być ustawiana suwakiem, efekty powinny być widoczne w oknie akumulatora. 3. Wyświetlanie głównej linii (odpowiadającej maksymalnej wartości akumulatora) na obrazie wynikowym. 4. Wyświetlanie następnych linii (odpowiadających kolejnym, malejącym wartościom akumulatora). Ich liczba powinna być ustawiana w polu edycyjnym dodanym do okna parametrów. 5. Automatyczne wyznaczanie tylko znaczących linii, odpowiadających lokalnym ekstremom akumulatora, jednak nie niższym niż połowa maksimum globalnego. Algorytm ma działać w ten sposób, że każde kolejne maksimum jest usuwane z akumulatora wraz z otoczeniem poprzez zerowanie kolejnych sąsiadów tak długo, dopóki ich wartość nie spadnie poniżej 1/10 wartości maksymalnej. Informacje pomocnicze Transformacja Hougha wykrywająca linie proste korzysta z dwuwymiarowej tablicy komórek (akumulatora). akumulator max min 0 2 Tablica ta służy do przechowywania parametrów prostych zapisanych w postaci normalnej, czyli = xcos + ysin . Jednej prostej w przestrzeni xy odpowiada jeden punkt w układzie . Parametry prostych przechodzących przez ustalony punkt (x, y) tworzą w układzie sinusoidę. Z kolei miejsce przecięcia n sinusoid wskazuje parametry prostej przechodzącej przez n punktów w układzie xy. a) b) y l (, ) x c) y 4 3 5 - d) 2 1 4 6 2 8 5 6 7 3 7 8 1 - x e) f) y A A C 0 = xcos0+ysin0 B B C (0, 0) Na początku wszystkie komórki tablicy akumulatora są wyzerowane. Następnie dla każdego punktu (xi, yi) na obrazie źródłowym wyznaczamy wartości dla kolejno podawanych (z ustalonym krokiem) wartości . Jednocześnie zwiększamy wartości w odpowiednich komórkach akumulatora. Maksymalna wartość w akumulatorze wskazuje parametry najwyraźniejszej linii występującej na obrazie. UWAGA! Zakładamy, że środek układu współrzędnych znajduje się w środku obrazu, a przyjmuje tylko wartości dodatnie.