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 = xcos0+ysin0
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.

Podobne dokumenty