Как распознать настоящий квадрат на изображении

Я использую OpenCV для обнаружения квадратов на изображении. Пример Squares.c очень помогает, но моя проблема в том, что он распознает почти все, что имеет 4 угла, близких к 90 градусам.

Моя цель, однако, состоит в том, чтобы распознавать только настоящие квадраты на изображении из видеопотока. Это означает, что сами объекты имеют 4 ребра одинаковой длины и 4 угла по 90 градусов. На первый взгляд это звучит довольно просто, но поскольку объект на изображении может быть наклонен, углы могут варьироваться от 45 до 135 градусов, а края имеют разную длину. Если я проверю эти атрибуты, я все еще распознаю прямоугольники, которые не являются квадратами.

Я уже несколько дней думаю о хорошем решении, позволяющем распознавать только настоящие квадраты, но все, что я придумал, все еще ошибочно. Интересно, знает ли кто-нибудь из вас, каково точное соотношение между углами углов и длиной ребра. С моими догадками до сих пор я продвинулся довольно далеко, но иногда появляются случайные квадраты, которые я не хочу распознавать. Я действительно думаю, что есть какое-то математическое соотношение, но я не могу найти формулу для квадратов в перспективе.

Любая помощь будет действительно оценена!


person Pandoro    schedule 02.09.2010    source источник


Ответы (1)


Как это вообще возможно без какой-либо системы координат? Если вы выполняете распознавание на основе видеопотока, можно ли вас «научить», как выглядит квадрат, постоянно удерживая квадрат в поле зрения? Может быть, тогда вы сможете использовать это, чтобы выяснить, каковы вращения в трехмерном пространстве, которые затем вам придется применить ко всему остальному в ленте.

person Dave    schedule 02.09.2010
comment
Ну нет, это не вариант для меня :( Я думаю, что это возможно. В настоящее время я могу в значительной степени сузить его до распознавания квадратов. Проблема, однако, в том, что что-то вроде листа бумаги формата А4 выглядит очень похоже на наклонный квадрат. Однако я могу распознать определенную разницу между углами обоих с моими глазами.Углы бумаги будут близки к углам 90 градусов, в то время как у квадрата будут углы примерно 70 и 110 градусов.Моя проблема в том, что я не могу см. правильное соотношение между углами и длиной ребра. - person Pandoro; 02.09.2010
comment
Что ж, я не знаю, как решить вашу проблему, но, кажется, я понимаю, о чем вы сейчас говорите. По сути, даже если у вас нет какой-либо базовой системы координат, все же должна быть возможность исключить неквадраты из-за отношений угла и длины стороны. Если вы возьмете трапецию в качестве простейшего случая, эта трапеция может быть квадратом только в том случае, если она удовлетворяет очень специфическим соотношениям между сторонами и углами. - person Dave; 02.09.2010
comment
Именно такова моя идея :) Но вот две мои проблемы. Я не уверен, достаточно ли разрешение возможных углов, чтобы определить это. И я не смог найти фактическую математику, стоящую за перспективными преобразованиями. В настоящее время я использовал что-то вроде: углы, близкие к 90 градусам, допускают небольшие различия между длинами ребер. большие углы -› допускают меньше вариаций. Это работает, но что-то более точное будет действительно оценено. Может быть, кто-нибудь с более глубокими знаниями может помочь мне здесь. - person Pandoro; 02.09.2010
comment
Ну, разрешение возможных углов — это то, что вы должны определить, прежде чем продолжить, и я думаю, что это не так уж плохо. Если вы создадите пару эталонных изображений с известными углами, вы узнаете, каковы ваши ограничения. - person Dave; 02.09.2010