Alternatywy dla transformaty Hougha do wykrywania struktury podobnej do siatki

16

Mam obraz złożony z wielu „kątów”, które tworzą kształt siatki:

wprowadź opis zdjęcia tutaj

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:

wprowadź opis zdjęcia tutaj

Oznacza to, że transformata Hougha wybiera jedną (lub obie) „boki” moich linii siatki, a nie środek.

wprowadź opis zdjęcia tutaj

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?

Benjol
źródło
W kontekście ta siatka zostanie porównana z nominalną siatką w celu wykonania kalibracji kamery Tsai.
Benjol,
„Wykrywanie krawędzi uruchamiam, wybieram krawędzie linii” Tak, ponieważ wykrywanie krawędzi przekształca krawędzie w grzbiety, a twój obraz jest już grzbietem. Krawędź jest granicą między światłem a ciemnością.
endolith

Odpowiedzi:

10

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: Produkcja szkieletu

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:) wprowadź opis zdjęcia tutaj

Jeśli korzystasz z MATLAB, możesz sprawdzić tę stronę pomocy

A_A
źródło
Dzięki! To bardzo pomaga. Nie mam jeszcze mojej licencji MATLAB, ale wypróbowałem ją za pomocą SimpleSkeletonization AForge i działa lepiej ... Chociaż nadal nie jest idealna. Powrócę do tego tematu później, gdy otrzymam prawdziwe dane do przetestowania.
Benjol
Możesz najpierw spróbować ustawić próg oryginalnego obrazu na pewnym progu, który wydaje się tworzyć „optymalne” linie siatki tłuszczowej. Rozumiem przez optymalne, że są przynajmniej połączone. To może poprawić wydajność szkieletowania, ale będziesz mieć dodatkowy parametr do ustalenia (próg). Może warto również zastanowić się, jak poprawić akwizycję obrazu.
A_A
tak, jak powiedziałem, kiedy mam prawdziwe dane do zabawy, warto poświęcić trochę czasu na dostrojenie systemu. Jedną z głównych wątpliwości co do Hougha jest to, że dyskretyzacja theta będzie działała wbrew potrzebnej nam precyzji subpikseli. (To i nie jestem do końca przekonany, że aberracje obiektywu nie będą oznaczać, że linie mogą być zakrzywione, a nie proste ...)
Benjol
11

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:

1. Perform Radon Transform from 0 to 180 degrees.
2. Find the two highest maxima in the angle bins.
3. For the two angles with maximal amplitude find the local maxima within the bin.
4. You can use the constraint that the maxima should have even spacing to deal with outliers.

EDYCJA :

Oto mały fragment Matlaba ilustrujący krok 1-3:

im = imread('grid.png');
[R, xp] = radon(im, 0:180);
imagesc(0:180, xp, R)

Wynik transformacji radonowej

plot(max(R)) % the two maxima are at 65 & 117 degrees

Maxima pod każdym kątem

plot(R(:, 65))

Maksima przy 65 stopniach

plot(R(:,117))

Maksima przy 117 stopniach

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.

Bjoernz
źródło
Dzięki, czy możesz mi powiedzieć w kilku słowach, jakiej przewagi spodziewałbyś się ode mnie w porównaniu z transformacją Hougha?
Benjol
@benjol, zaktualizowałem swoją odpowiedź.
bjoernz
Bardzo miło, wielkie dzięki. Gdy IT da mi dostęp do Matlaba, spróbuję!
Benjol