Здравствуйте. Задачка у меня такая. На полу лежит лист бумаги. На ней напечатана какая-нибудь фигура. Пусть для определённости это будет квадрат. Я из некоторой точки делаю фотографию некоторой области, которая включает в себя эту фигуру. Понятно, что фотография может быть сделана под некоторым углом к плоскости рисунка, расположение и ориентация рисунка на фотографии могут быть любыми. Мало того, квадрат уже перестанет быть квадратом и может превратиться в ромб, прямоугольник или вообще в четырёхугольник. Мне нужно на фотографии найти координаты этой фигуры (пусть для определённости мне нужно найти центр тяжести этой фигуры).
cupuyc Пробей реперный точки по углам листа. Потом как его не крути и не переворачивай, пересечение прямых, построенных по точкам на противоположных углах дадут тебе центр тяжести. Так наверное?
Задача распознавания образов отличная сама по-себе. Есть интересное решение, но дорогущее-е и в плане софта и в плане железа. Буквально само всё делает. Не только по фотографии но и по видео. Версии только английские. http://www.photomodeler.com/index.htm Это решение задачи в общем виде. В частном случае можно писать самому. Графикой пользуйся лучше через gdiplus Пример использования загрузки изображений ниже.
Меня интересует алгоритм поиска в чистом виде, без использования GDI+ и пр. Я знаю, что OpenCV умеет решать такие задачи.. Там есть FeatureDetector - как-то через него.. Если кто выложит примерчик использования, буду благодарен.
Тема очень сложная. Посмотрите сначала наработки того же Фотомоделера. Зачем изобретать велосипед??? Там есть все средства для автоматизации распознавания. Аппетит приходит во время еды. Вряд ли вы ограничитесь квадратом.
ёпрст - зачем всё усложнять? применяем алгоритм детектирования границ - Кенни и потом поиск по контурам. рекомендую серию уроков по библиотеке компьютерного зрения OpenCV: http://robocraft.ru/page/opencv/
Есть такой момент... Либо ты вначале должен определить, что на фото есть "лист бумаги", либо если пытаться просто найти "любой квадрат" - его можно находить в самых неожиданных местах вне листа бумаги))). Если свести задачу к поиску "листа бумаги", то тут по сути, надо найти просто "крупную" "почти белую" область. После этого задача поиска фигуры сильно упрощается
Если рассмотреть двумерный график какойто функции - очевидно та фигура, часть которой он образует определяется экстремумами функции. Учитывая квантование, небольшие отклонения от прямой соединяющей перегибы функции, которые много меньше длины прямой можно не рассматривать, таким образом сглаживаются шумы. Тогда задав пределы изменений дельт координат в экстремумах и их отношение друг к другу определит фигуру. Этой функцией является контур фигуры.