5

sceneJak znaleźć tego rodzaju geometrii w obrazach

Załóżmy, że mam obraz sceny, jak przedstawiono powyżej. Rodzaj słupka z kropelką na nim obok prawdopodobnie podobnych obiektów bez kropel. Jak mogę znaleźć kropelkę zaznaczoną czerwonym kółkiem (binarny obrazek wskazujący, które piksele należą do obszaru typu blob).

Należy zwrócić uwagę, że biegun wraz z elementem typu blob może być dowolnie obracany, a rozmiar może się różnić.

+0

jeśli są to jedyne cyfry, które mogą pojawić się na obrazie, to jest to przeszukiwanie przez macierz pikseli dla zakrzywionych krawędzi. Masz dość, aby obliczyć środek okręgu w momencie znalezienia takiej granicy. – ashley

+0

i jak można to osiągnąć? – Leo

Odpowiedz

1

Czy możesz spróbować zrobić to poniżej 4 kroków?

  1. wykrywanie Koło jak: writing robust (color and size invariant) circle detection with opencv (based on Hough transform or other features)
  2. Linia wykrywania, takie jak: Finding location of rectangles in an image with OpenCV
  3. Określić położenie prostokąta łącząc linie sąsiadujące (dla każdego segmentu linii masz położenie punktu początkowego i końcowego, również wiedzieć, kierunek każdego segmentu linii, aby dowiedzieć się, czy dwa łączące się segmenty linii (których punkty końcowe są blisko) są ortogonalne. Twoim celem jest znalezienie 3 takich segmentów dla każdego prostokąta.)

  4. Sprawdź położenie względne każdego z nich kółko i prostokąt, aby zobaczyć, czy jakakolwiek para może tworzyć kształt knob.

1

Jednym z podejść może być używanie Viola-Jones object detection framework.

Chociaż szkielet jest używany głównie do wykrywania twarzy - jest faktycznie zaprojektowany dla ogólnych obiektów, które są podawane do algorytmu.


Algorytm Podstawowym założeniem jest to, aby karmić próbki „dobrego obiektu” (co szukasz) i „złych” obiektów do algorytmu uczenia maszynowego - co generuje wzory z obrazów jak jego funkcji.

Podczas klasyfikacji - za pomocą przesuwanego okna algorytm wyszuka "dopasowanie" do obiektu (klasyfikator zwrócił pozytywną odpowiedź).


Algorytm wykorzystuje supervised learning a zatem wymaga oznaczony zestaw przykładów (zarówno pozytywnych, jak i negatywnych)

+0

Dzięki, ale wolałbym prostsze rozwiązanie. Jest to dość intensywne obliczeniowo (mimo że jest to czas rzeczywisty). Poza tym, naprawdę mam dobry przeor z tego, jak wygląda "blob", więc przygotowanie zestawu etykietkowego wydaje się trochę niepotrzebne. Miałem nadzieję znaleźć coś w rodzaju techniki dopasowywania geometrii iteracyjnej. – Leo

0

Jestem pewien, że jest jakiś algorytm granica-map w przetwarzaniu obrazu, aby to zrobić.

W przeciwnym razie, oto szybka naprawa: wybierz piksel w środku "nieodkrytej strefy", która początkowo jest całością. Śledź linie poziome i pionowe w 4 kierunkach, kończąc na granicy i znajdź wartość z 0 na 1 lub na odwrót.

Prześledzić każdy taki przełącznik wartości i ukończyć granicę każdej figury (Krok-A). Zrób to samo dla stref , które wciąż nie zostały wykryte: zacznij od pewnego punktu o numerze i przeskakuj przez linie łączące środek z granicą obrazu lub do piksela na granicy znanej strefy.

W kroku A można również sprawdzić, czy wyznaczona granica to linia lub łuk. Ilekroć jest to krzywa, potrzebujesz tylko dwóch punktów - punktów w pewnej odległości od siebie dla dokładności obliczeń.

Linie prostopadłe do tych dwóch punktów styczności przecinają się w środku koła na czerwono na twojej figurze.

0

Można posegmentować obraz. Następnie użyj tylko pikseli w segmentach, aby przyczynić się do transformacji Hough, aby znaleźć kręgi. Wtedy będziesz miał tylko segmenty z kółkiem. Możesz użyć zmodyfikowanej transformacji hough, aby znaleźć prostokąty. "Najlepsza" kombinacja prostokąta i kwadratu będzie wtedy twoim odpowiednikiem. Jest to bardzo intencjonalne obliczeniowo.

Innym podejściem, jeśli już masz te obrazy binarne, jest przekształcenie próbki (na przykład w 256 bin), biorąc odległość do środka ciężkości w porównaniu do odległości przebytej wzdłuż krawędzi.Jeśli zaczynasz od punktu położonego najdalej od środka ciężkości, masz dość rotacyjny, solidny element funkcyjny.

Powiązane problemy