Найти углы многоугольника, представленного областью маски

BW = poly2mask(x, y, m, n) вычисляет маску двоичной области интереса (ROI), BW, из многоугольника ROI, представленного векторами x и y. Размер BW м-н-н.

poly2mask устанавливает пиксели в BW, которые находятся внутри многоугольника (X, Y) в 1 и устанавливает пиксели вне многоугольника в 0.

Проблема: Учитывая такую бинарную маскуBW из выпуклого четырехугольника, что было бы наиболее эффективным способом определения четырех углов?

Например.,

Лучшее решение на данный момент: использованиеedge чтобы найти ограничивающие линии, выполните преобразование Хафа, чтобы найти 4 линии на изображении края, а затем найдите точки пересечения этих 4 линий или используйте угловой детектор на изображении края. Кажется сложным, и я не могу не чувствовать, что есть более простое решение.

Btw,convhull не всегда возвращает 4 балла (может быть, кто-то может предложитьqhull варианты, чтобы предотвратить это): он также возвращает несколько точек по краям.

РЕДАКТИРОВАТЬ: Амро ответ кажется довольно элегантным и эффективным. Но может быть несколько «углов» на каждом реальном углу, поскольку пики не уникальны. Я мог бы сгруппировать их на основеθ и усреднить "углы" за реальным углом, но главная проблема заключается в использованииorder(1:10).

Является10 достаточно, чтобы учесть все углы или это исключит «угол» в реальном углу?

Ответы на вопрос(5)

Ваш ответ на вопрос