Houghova transformácia

**Houghova transformácia** () je technika spracovania obrazu, ktorá sa používa na detekciu jednoduchých objektov v obraze ako sú priamky, kružnice, elipsy atď. Pri implementácii je nutné poznať analytický popis tvaru hľadaného objektu. Používa sa predovšetkým na segmentáciu objektov, ktorých hranice sa dajú popísať jednoduchými krivkami. Hlavnou výhodou tejto metódy je robustnosť voči nepravidelnostiam a porušeniu hľadanej krivky.

## Teória
náhľad|Normálový tvar priamky
Základný koncept ktorý je pri Houghovej transformácii využívaný pri hľadaní priamok je princíp duality. Bod P môže byť definovaný 2 koordinátmi (x, y) alebo priamkami, ktoré cez neho prechádzajú. Množina kolineárnych bodov P_i (body, ktoré ležia na jednej priamke), potom môže byť určená množinou priamok, ale existuje len 1, ktorá obsahuje všetky body P_i. Môžeme teda povedať že bod môže byť definovaný množinou priamok a priamka definovaná množinou bodov. Houghova transformácia využíva normálový tvar priamky. Normálovú rovnicu priamky je možné zapísať ako:

r = x \, cos \, \theta + y \, sin \, \theta 

kde r predstavuje vzdialenosť priamky od počiatku súradnicovej sústavy a \theta je veľkosť uhlu medzi normálou a osou x.

Hodnoty x a y sú v tomto prípade známe a r a \theta sú neznáme. Ak dosadíme známe hodnoty x, y a iterujeme hodnotu \theta na intervale , v súradnicovej sústave (r, \theta) sa nám zakreslí krivka. Bod je teda možné v priestore parametrov  (r, \theta) (inak aj Houghovom priestore) reprezentovať ako krivku. Na nasledujúcom obrázku môžeme vidieť ako sa bod (vľavo) zobrazí na krivku v Houghovom prisetore (vpravo).

bezrámu|649x649bod

Pri zobrazení kolineárnych bodov v Houghovom priestore vidíme že, krivky sa pretínajú v jednom bode. Tento bod svojimi koordinátmi  (r, \theta) určuje priamku v priestore bodov.

bezrámu|640x640bod

## Implementácia
Houghova transformácia je implementovaná kvantizáciou Houghovho priestoru do konečných intervalov. Ide o rozdelenie diskrétneho priestoru na úseky alebo bunky, ktoré tvoria akumulátor. Akumulátor si môžeme predstaviť ako maticu, ktorej počet rozmerov sa rovná počtu hľadaných parametrov. V prípade priamky sú to 2. Akumulátor je na začiatku naplnený samými nulami. Pre každý bod z priestoru (x, y) sa potom inkrementuje hodnota v bunkách akumulátoru, ktoré predstavujú priamky prechádzajúce daným bodom. V akumulátore sa následne hľadajú lokálne maximá, ktoré veľmi pravdepodobne predstavujú hľadané priamky. Existuje viacero metód, ktorými je možné maximá hľadať.

Algoritmus na detegovanie čiar môžeme rozdeliť do týchto krokov:

# Na obrázok sa aplikuje detekcia hrán, napr. použitím Cannyho detektoru
# Hranové body sa mapujú do Houghovho priestoru a akumulátoru.
# Nájdenie priamok – nájdu sa maximá v akumulátore.
# Konverzia priamok (nekonečne dlhé) na úsečky (konečne dlhé).

stred|náhľad|826x826bod|Houghova transformácia: (a) pôvodný obrázok, (b) výstup Cannyho hranového detektoru, (c) Houghov priestor, (d) nájdené priamky.

## Príklad
bezrámu|673x673bod

Pre každý z 3 bodov sa vytvoria priamky pod rôznymi uhlami. V prípade tohto príkladu je to pre jednoduchosť len 5 uhlov. Pre každú priamku sa vypočíta jej vzdialenosť od počiatku r. Pre daný uhol \theta a vzdialenosť r sa následne zvýši hodnota o 1 v prislúchajúcej bunke akumulátoru.

Akumulátor by mohol vyzerať takto (vypočítané hodnoty r sú zaokrúhlené k najbližšej hodnote v akumulátore):

: 

Vidíme že maximum (3) sa nachádza v bunke (400,60). Našli sme priamku, ktorá leží najbližšie všetkým trom bodom. Priamka má uhol \theta = 60° a vzdialenosť od počiatku r = 400. (Akumulátor pre jednoduchosť obsahuje široké intervaly uhlov a vzdialeností, pre nájdenie presnejšej priamky je potrebný väčší akumulátor s malými intervalmi.)

## Referencie

Kategória:Spracovanie obrazu
Kategória:Eponymické termíny v informatike