Найти углы многоугольника, представленного областью маски
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
достаточно, чтобы учесть все углы или это исключит «угол» в реальном углу?