Trouver des angles d'un polygone représenté par une région de masque

BW = poly2mask(x, y, m, n) calcule un
binaire de la région d'intérêt (ROI) de masque,
BW, à partir d'un ROI polygone, représenté
par les vecteurs x et y de la. La taille de BW
est m-par-n.

poly2mask ensembles de pixels dans le BW
qui sont à l'intérieur du polygone (X,Y), 1
et des ensembles de pixels à l'extérieur du polygone à
0.

Problème:
Compte tenu de ces un masque binaire BW d'un quadrilatère convexe, ce qui serait le moyen le plus efficace pour déterminer les quatre coins?

E. g.,

Trouver des angles d'un polygone représenté par une région de masque

Meilleure Solution à ce jour:
Utilisation edge à trouver le cadre des lignes, la transformation de Hough pour trouver les 4 lignes dans le bord de l'image, puis de trouver les points d'intersection de ces 4 lignes ou utiliser un coin détecteur sur le bord de l'image. Semble compliqué, et je peux pas m'empêcher de penser il y a une solution plus simple.

Btw, convhull ne permet pas toujours de revenir à 4 points (peut-être quelqu'un peut suggérer qhull options pour empêcher qu') : elle retourne quelques points le long des bords.

EDIT:
Amro répondre semble très élégant et efficace. Mais il pourrait y avoir plusieurs "coins" à chaque coin depuis les sommets ne sont pas uniques. Je pourrais cluster sur la base de la θ et de la moyenne des "coins" autour d'un véritable coin, mais le principal problème est l'utilisation de order(1:10).

Est 10 assez pour tenir compte de tous les coins ou cette exclure un "coin" dans un vrai coin?

OriginalL'auteur Jacob | 2009-11-10