Niezbędne operacje przetwarzania obrazu przed dopasowaniem szablonu

13

Może to oznaczać, że nie wziąłem lekcji przetwarzania obrazu.

Mam ten szablon, aby dopasować obiekt na obrazach. Ale na przykład prawdziwy obiekt w obrazach nie wygląda tak, ale drugi obraz. Jakie operacje muszę wykonać, aby obrazy takie jak druga były gotowe do dopasowania szablonu? FYI, trzeci obraz pokazuje idealne dopasowanie.

W innym pomyśle dopasowuję szablon do obrazu. To znaczy, podaję cztery współrzędne narożnika na obrazie, aby pasowały do ​​tych w szablonie. Następnie obliczy sposób dopasowania szablonu do obszaru.

AKTUALIZACJA: Problem rozwiązany. Dzięki odpowiedzi wybrałem poniżej. Udało mi się zastosować mój szablon na obrazie. Ostatni obraz pokazuje wynik.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Tae-Sung Shin
źródło
nie będziesz pasować do tej białej siatki, prawda? Chcesz dopasować rzeczywistą kolorową siatkę na drugim zdjęciu, prawda?
endolith
@endolith Myślę, że tak czy inaczej jest w porządku.
Tae-Sung Shin
czy możesz podzielić się podstawową koncepcją swojego algorytmu? muszę zrobić to samo dla wykresu.
Gilad

Odpowiedzi:

9

Zamieszczony przykładowy obraz ma względnie mocną perspektywę (nie jest obrazowany prosto z kierunku normalnej powierzchni), co może powodować problemy z technikami dopasowania szablonów przy przetwarzaniu blokowym. Zakładam, że musisz wziąć obraz z mocną perspektywą, więc pierwszą rzeczą, którą chcemy zrobić, jest oszacowanie transformacji obrazu, która usunie rzut perspektywiczny i spowoduje obraz rektyfikowany („prosty obraz”).

Korekcja rzutu perspektywicznego, gdy kształt jest znany

Ostatecznym celem przetwarzania wstępnego jest znalezienie narożników tego szarego prostokąta, który jest tłem karty kolorów. Zacząłem od progu o stałej wartości. Literatura / sieć zawiera wiele informacji na temat wykonywania progów, gdy obraz ma nierównomierne oświetlenie, ale jeśli możesz, spróbuj poprawić ustawienia obrazowania, aby oświetlenie było względnie równe.

Próg ze stałą wartością

Założyłem, że karta kolorów zajmuje dość dużą część ekranu, więc jest to prawdopodobnie największy ciągły obszar obrazu. Istnieje wiele czarno-białych funkcji znakowania (MATLAB bwlabel, IPPs LabelMarkers, OpenCV ma zewnętrzną bibliotekę cvblob), które nadadzą każdemu odrębnie połączonemu regionowi swój własny indeks. Po etykietowaniu można obliczyć obszary połączonych komponentów za pomocą histogramu, a następnie wybrać komponent o największym obszarze.

Znajdź największą kroplę

Zazwyczaj dobrym pomysłem jest wypełnienie komponentów tak, aby komponent nie miał otworów, co zmniejsza liczbę pikseli krawędzi.

Wypełnij kroplę

Teraz możemy użyć operatorów znajdowania krawędzi (użyłem metody opartej na gradiencie, ale możesz także śledzić krawędź, śledząc białe piksele połączone z czarnymi pikselami), aby uzyskać piksele należące do granicy.

Znajdź krawędzie

Ponieważ interesujący nas obiekt to prostokąt, dopasowałem cztery linie do pikseli brzegowych za pomocą solidnego dopasowania linii (RANSAC). Po znalezieniu nowej linii usunąłem wszystkie punkty znajdujące się blisko znalezionej linii, co zmusza kolejne operacje dopasowania do zwrócenia innych krawędzi obiektu. W końcu, kiedy znaleziono wszystkie krawędzie, obliczyłem wszystkie możliwe przecięcia między zbiorem linii. Z zestawu wynikowych punktów usunąłem wszystkie punkty poza obrazem.

Teraz mamy rogi wykresu kolorów i znając wymiary wykresu, możemy obliczyć macierz transformacji (homografia, rzut między dwiema płaszczyznami. Użyj bezpośredniej transformacji liniowej (DLT) do rozwiązania ) między współrzędnymi milimetrowymi i współrzędne pikseli.HH

x=HX

Ta matryca transformacji może być następnie wykorzystana do transformacji oryginalnego obrazu, tak że karta kolorów jest obrazowana prosto z kierunku normalnej powierzchni.

Dopasuj linie do krawędzi

Jak widać, pozostały tylko zniekształcenia promieniowe. Kiedy użyliśmy transformacji do transformacji obrazu (interpolacja 2D), wybraliśmy takie współrzędne interpolacji, abyśmy znali dokładną rozdzielczość obrazu, co oznacza, że ​​znamy teraz na przykład rozmiar liter.H

Jeśli nadal chcemy dopasować szablon, możemy użyć dowolnej przyzwoitej metody dopasowania szablonu. Metoda nie musi być niezmienna rotacja / skala, ponieważ obraz jest już skorygowany.

Prawidłowa perspektywa

buq2
źródło
1

Zacznij od wykrycia krawędzi. Następnie użyj transformacji Hougha, aby wykryć linie proste. Następnie dowiedz się, które linie są równoległe, a które powinny być prostopadłe. Następnie oszacuj transformację rzutową, aby linie, które powinny być prostopadłe, były w rzeczywistości prostopadłe.

Dima
źródło