Znajdź rogi wielokąta reprezentowanego przez maskę regionu

BW = poly2mask(x, y, m, n) oblicza masę obszaru binarnego (ROI), BW, z wielokąta ROI, reprezentowanego przez wektory x i y. Rozmiar BW to m-by-n.

poly2mask ustawia piksele w BW, które są wewnątrz wielokąta (X, Y) na 1 i ustawia piksele poza wielokątem na 0.

Problem: Biorąc pod uwagę taką maskę binarnąBW wypukłego czworoboku, jaki byłby najskuteczniejszy sposób określenia czterech rogów?

Na przykład.,

Najlepsze rozwiązanie do tej pory: Posługiwać sięedge aby znaleźć linie graniczne, przekształć Hough, aby znaleźć 4 linie na obrazie krawędzi, a następnie znajdź punkty przecięcia tych 4 linii lub użyj detektora narożnego na obrazie krawędzi. Wydaje się to skomplikowane i nie mogę się oprzeć wrażeniu, że istnieje prostsze rozwiązanie.

Btw,convhull nie zawsze zwraca 4 punkty (może ktoś może zasugerowaćqhull opcje, aby temu zapobiec: zwraca również kilka punktów wzdłuż krawędzi.

EDYTOWAĆ: Odpowiedź Amro wydaje się dość elegancki i wydajny. Ale w każdym rzeczywistym kącie może być wiele „rogów”, ponieważ szczyty nie są wyjątkowe. Mogłem je grupować w oparciu oθ i uśrednij „rogi” wokół prawdziwego zakrętu, ale głównym problemem jest użycieorder(1:10).

Jest10 wystarczy, aby wziąć pod uwagę wszystkie zakręty lub czy wykluczy to „róg” w prawdziwym zakątku?

questionAnswers(5)

yourAnswerToTheQuestion