Detekce linky - Line detection

Při zpracování obrazu detekce linky je algoritmus, který bere soubor n okrajové body a najde všechny čáry, na kterých leží tyto okrajové body.[1] Nejoblíbenějšími linkovými detektory jsou Hough transformace a konvoluce -založené techniky.[2]

Hough transformace

The Hough transformace[3] lze použít k detekci linek a výstupem je parametrický popis linek v obraze, například ρ = r cos (θ) + c sin (θ).[1] Pokud je v obrazovém prostoru založeném na řádcích a sloupcích čára, lze ji definovat ρ, vzdálenost od počátku k linii kolmo k linii a θ, úhel kolmého průmětu od počátku k linii měřeno ve stupních po směru hodinových ručiček od kladné osy řady. Proto čára v obraze odpovídá bodu v Houghově prostoru.[4] Houghův prostor pro čáry má tedy tyto dvě dimenze θ a ρ a čára je reprezentována jediným bodem odpovídajícím jedinečné sadě těchto parametrů. Houghovu transformaci lze poté implementovat výběrem sady hodnot ρ a θ, které se mají použít. Pro každý pixel (r, C) na obrázku spočítejte r cos (θ) + c sin (θ) pro každou hodnotu θ a vložte výsledek do příslušné polohy v poli (ρ, θ). Na konci budou hodnoty (ρ, θ) s nejvyššími hodnotami v poli odpovídat nejsilnějším čarám v obraze

Konvoluce - na základě techniky

V konvoluce - na základě techniky se operátor detektoru řádků skládá z konvolučních masek vyladěných pro detekci přítomnosti řádků určité šířky n a orientace θ. Zde jsou čtyři konvoluční masky pro detekci vodorovných, svislých, šikmých (+45 stupňů) a šikmých (-45 stupňů) čar v obraze.

a) Horizontální maska ​​(R1)

−1−1−1
222
−1−1−1

(b) Vertikální (R3)

−12−1
−12−1
−12−1

(C) Šikmý (+45 stupňů) (R2)

−1−12
−12−1
2−1−1

(d) Šikmý (-45 stupňů) (R4)

2−1−1
−12−1
−1−12

[5]

V praxi jsou masky spuštěny přes obraz a odpovědi jsou kombinovány podle následující rovnice:

R (x, y) = max (| R1 (x, y) |, | R2 (x, y) |, | R3 (x, y) |, | R4 (x, y) |)

Pokud R (x, y)> T, pak diskontinuita

Jak je vidět níže, pokud je maska ​​překryvná na obrázku (vodorovná čára), vynásobte shodné hodnoty a sečtěte všechny tyto výsledky, výstup bude (konvolvovaný obrázek). Například, (-1) (0) + (- 1) (0) + (- 1) (0) + (2) (1) + (2) (1) + (2) (1) + (- 1) (0) + (- 1) (0) + (- 1) (0) = 6 pixelů na druhém řádku, druhý sloupec na (spojeném obrázku), počínaje od levého horního rohu vodorovných čar.[1] strana 82

Příklad

Vodorovná čáraspletitý obraz
0000----
1111=-66-
Maska*0000----
−1−1−1
222
−1−1−1
*Svislá čáraspletitý obraz
0010----
0010=-00-
0010----

Tyto masky výše jsou vyladěny pro světlé čáry na tmavém pozadí a na tmavé čáry na světlém pozadí by poskytly velkou negativní odpověď.[5]

Příklad kódu

Tento kód byl použit k detekci pouze svislých čar v obraze pomocí Matlabu a výsledek je uveden níže. Původní obrázek je ten nahoře a výsledek je pod ním. Jak je vidět na obrázku vpravo, byly detekovány pouze svislé čáry

Originální obrázek
detekce linky
Průhledná Všechnoclc% tento program MATLAB detekuje pouze vertikální čáry v obrázkubudova = nečitelný('building.jpg'); % Tím se nahraje budova obrázkutol = 5; % definuje toleranci v úhlu, aby se zohlednil hluk nebo hrana        %, které mohou vypadat svisle, ale když je vypočítán úhel        % se nemusí zdát být[~, úhel] = bezvýznamný(budova);ven = (úhel >= 180 - tol | úhel <= -180 + tol);% tato část vyfiltruje řádekout_filter = bwareaopen(ven, 50);postava, imshow(budova), titul(„Původní obrázek“);postava, imshow(out_filter), titul(„Zjištěné řádky“);

Viz také

Reference

  1. ^ A b C Umbaugh, Scott E. (2011). Digitální zpracování a analýza obrazu: aplikace pro lidské a počítačové vidění s CVIPtools (2. vyd.). Boca Raton, FL: CRC Press. ISBN  9781439802052. OCLC  491888664.
  2. ^ "Houghova transformace - MATLAB hough". www.mathworks.com. Citováno 2018-04-23.
  3. ^ "Detekce linky pomocí Houghovy transformace" (PDF).
  4. ^ Li, Fei-Fei (10. října 2011). "Hledání linek: od detekce k přizpůsobení modelu" (PDF). Stanford Vision Lab.
  5. ^ A b „Detekce linky“. homepages.inf.ed.ac.uk. Citováno 2018-04-23.