Mam obraz złożony z wielu „kątów”, które tworzą kształt siatki:
Po kilku poszukiwaniach Hough wyglądał na dobrze dopasowanego, ponieważ nie przeszkadzają mu przerwy w linii. Jednak mam problem z tym, że moje linie są „grube”, a każde wykrywanie krawędzi, które uruchamiam (w tym przypadku Canny), wykrywa krawędzie linii, a nie środek:
Oznacza to, że transformata Hougha wybiera jedną (lub obie) „boki” moich linii siatki, a nie środek.
Biorąc pod uwagę, że wiem, czego szukam (ten podobny do siatki kształt, zawsze w przybliżeniu tej samej orientacji), czy jest lepszy sposób na wykonanie części „wykrywanie krawędzi”, aby uzyskać linie środkowe, czy powinienem szukać przy zupełnie innej metodzie?
Odpowiedzi:
W tym przypadku Transformacja Hougha rzeczywiście pomogłaby w podniesieniu siatki. Aby „rozrzedzić” linie, możesz rozważyć operację szkieletowania
To dałoby obraz taki jak ten:
Ze względu na sposób, w jaki działa szkieletowanie, nadal będzie generować pewne linie, które wydają się nieistotne dla siatki, ale te linie w kierunku „błędnych” kierunków nie są tak liczne (przynajmniej na danym obrazie), że mylą wykrywanie linii transformaty Hougha za dużo i wyraźnie wybierze dwa główne zestawy linii w różnych kierunkach. (Oto jak wygląda wyjście HT:)
Jeśli korzystasz z MATLAB, możesz sprawdzić tę stronę pomocy
źródło
Alternatywą dla transformaty Hougha byłaby transformacja radonowa ( 1 , 2 ). Z grubsza opis algorytmu do wykrywania struktury podobnej do siatki mógłby wyglądać następująco:
EDYCJA :
Oto mały fragment Matlaba ilustrujący krok 1-3:
Aby odpowiedzieć na twoje pytanie z komentarzy: Z jednego przykładowego obrazu, który podałeś, wydaje mi się, że ta metoda jest bardziej odporna na małe defekty w wykrytej siatce. Szkielety rzadko dają linie proste, co może być wadą dla następnej transformacji Hougha.
źródło