Finden Sie die Ecken in einem polygon, dargestellt durch eine region, die Maske

BW = poly2mask(x, y, m, n) berechnet einen
binäre region of interest (ROI) Maske,
BW von einer ROI-polygon, dargestellt
die durch die Vektoren x und y. Die Größe der BW
ist m-von-n.

poly2mask setzt Pixel in BW
in der polygon (X,Y) 1
und setzt Pixel außerhalb des Polygons zu
0.

Problem:
Gegeben eine solche binäre Maske BW eines konvexen Vierecks, was wäre der effizienteste Weg, um zu bestimmen, die vier Ecken?

E. g.,

Finden Sie die Ecken in einem polygon, dargestellt durch eine region, die Maske

Beste Lösung bisher:
Verwenden edge zu finden, die begrenzenden Linien, die Hough-Transformation zum finden der 4 Linien in der edge-Bild und dann finden Sie die Schnittpunkte von diesen 4 Zeilen, oder verwenden Sie eine Ecke Detektor auf der Kante Bild. Scheint kompliziert, und ich kann nicht helfen Gefühl, es gibt eine einfachere Lösung gibt.

Btw convhull nicht immer wieder 4 Punkte (vielleicht kann jemand empfehlen qhull Optionen, um zu verhindern, dass) : es gibt ein paar Punkte entlang der Kanten als auch.

EDIT:
Amro Antwort scheint ziemlich elegant und effizient. Aber es könnten mehrere "Ecken" zu jeder echten Ecke, da die peaks nicht eindeutig. Ich konnte cluster basierend auf θ und Durchschnitt die "Ecken" um eine wirkliche Ecke, aber das Hauptproblem ist der Einsatz von order(1:10).

Ist 10 genug, um Konto für alle Ecken und wird dadurch ausschließen eine "Ecke" in einem echten Ecke?

InformationsquelleAutor Jacob | 2009-11-10
Schreibe einen Kommentar