Какой самый простой * правильный * метод для определения прямоугольников на изображении?
Я пытаюсь придумать лучший способ обнаружения прямоугольников на изображении.
Сначала я хотел использовать преобразование Хафа для линий и выбрать комбинации линий, в которых две линии пересекаются в нижней и верхней частях одними и теми же двумя линиями, но этого недостаточно.
Будет ли использовать угловой детектор вместе с преобразованием Хафа?
3 ответа
Проверьте /samples/c/squares.c в вашем дистрибутиве OpenCV. Этот пример предоставляет квадратный детектор, и это должно быть довольно хорошее начало.
Мой ответ здесь также применим.
Я не думаю, что в настоящее время существует простой и надежный метод обнаружения прямоугольников на изображении. Вам приходится иметь дело со многими проблемами, такими как прямоугольники, которые не являются точно прямоугольными, но только приблизительно, частичные окклюзии, изменения освещения и т. Д.
Одно из возможных направлений - выполнить сегментацию изображения, а затем проверить, насколько близко каждый сегмент находится к прямоугольнику. Поскольку вы не можете доверять алгоритму сегментации, вы можете запускать его несколько раз с разными параметрами.
Другое направление состоит в том, чтобы попытаться параметрически подогнать прямоугольник к изображению так, чтобы величина градиента изображения вдоль контура была максимизирована.
Если вы решите работать с параметрическим подходом, обратите внимание, что хотя тривиальный способ параметризации прямоугольника заключается в расположении его четырех углов, а это 8 параметров, есть несколько других представлений, которые требуют меньше параметров.
Есть расширение Hough, которое может быть полезным.
http://en.wikipedia.org/wiki/Generalised_Hough_transform