Поиск фигуры на картинке

Discussion in 'WASM.A&O' started by cupuyc, Dec 26, 2010.

  1. cupuyc

    cupuyc New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2009
    Messages:
    763
    Здравствуйте. Задачка у меня такая. На полу лежит лист бумаги. На ней напечатана какая-нибудь фигура. Пусть для определённости это будет квадрат. Я из некоторой точки делаю фотографию некоторой области, которая включает в себя эту фигуру. Понятно, что фотография может быть сделана под некоторым углом к плоскости рисунка, расположение и ориентация рисунка на фотографии могут быть любыми. Мало того, квадрат уже перестанет быть квадратом и может превратиться в ромб, прямоугольник или вообще в четырёхугольник. Мне нужно на фотографии найти координаты этой фигуры (пусть для определённости мне нужно найти центр тяжести этой фигуры).
     
  2. _sheva740

    _sheva740 New Member

    Blog Posts:
    0
    Joined:
    Aug 31, 2005
    Messages:
    1,539
    Location:
    Poland
    cupuyc
    Пробей реперный точки по углам листа.
    Потом как его не крути и не переворачивай, пересечение прямых,
    построенных по точкам на противоположных углах
    дадут тебе центр тяжести.
    Так наверное?
     
  3. paralvic

    paralvic Пархоменко Александр Викторович

    Blog Posts:
    0
    Joined:
    Nov 20, 2010
    Messages:
    294
    Location:
    Нижний Новгород
    Задача распознавания образов отличная сама по-себе.

    Есть интересное решение, но дорогущее-е и в плане софта и в плане железа.
    Буквально само всё делает. Не только по фотографии но и по видео.
    Версии только английские.
    http://www.photomodeler.com/index.htm
    Это решение задачи в общем виде.

    В частном случае можно писать самому.

    Графикой пользуйся лучше через gdiplus
    Пример использования загрузки изображений ниже.
     
  4. qqwe

    qqwe New Member

    Blog Posts:
    0
    Joined:
    Jan 2, 2009
    Messages:
    2,914
    или не гди плюс. пример чегототам ниже
     
  5. PSR1257

    PSR1257 New Member

    Blog Posts:
    0
    Joined:
    Nov 30, 2008
    Messages:
    933
    Также была уже тема - http://wasm.ru/forum/viewtopic.php?id=39278&p=1
     
  6. punxer

    punxer Андрей

    Blog Posts:
    0
    Joined:
    Oct 16, 2006
    Messages:
    1,327
    Location:
    Ржев
    уголковый детекто харриса для нахождения особых точек
     
  7. cupuyc

    cupuyc New Member

    Blog Posts:
    0
    Joined:
    Apr 2, 2009
    Messages:
    763
    Меня интересует алгоритм поиска в чистом виде, без использования GDI+ и пр.
    Я знаю, что OpenCV умеет решать такие задачи.. Там есть FeatureDetector - как-то через него.. Если кто выложит примерчик использования, буду благодарен.
     
  8. paralvic

    paralvic Пархоменко Александр Викторович

    Blog Posts:
    0
    Joined:
    Nov 20, 2010
    Messages:
    294
    Location:
    Нижний Новгород
    Тема очень сложная. Посмотрите сначала наработки того же Фотомоделера.
    Зачем изобретать велосипед???
    Там есть все средства для автоматизации распознавания.
    Аппетит приходит во время еды. Вряд ли вы ограничитесь квадратом.
     
  9. noonv

    noonv Member

    Blog Posts:
    0
    Joined:
    Jul 19, 2005
    Messages:
    209
    Location:
    Russia
    ёпрст - зачем всё усложнять?
    применяем алгоритм детектирования границ - Кенни и потом поиск по контурам.

    рекомендую серию уроков по библиотеке компьютерного зрения OpenCV:
    http://robocraft.ru/page/opencv/
     
  10. 100gold

    100gold New Member

    Blog Posts:
    0
    Joined:
    Feb 26, 2010
    Messages:
    165
    Есть такой момент... Либо ты вначале должен определить, что на фото есть "лист бумаги", либо если пытаться просто найти "любой квадрат" - его можно находить в самых неожиданных местах вне листа бумаги))). Если свести задачу к поиску "листа бумаги", то тут по сути, надо найти просто "крупную" "почти белую" область. После этого задача поиска фигуры сильно упрощается
     
  11. gaeprust

    gaeprust New Member

    Blog Posts:
    0
    Joined:
    May 2, 2011
    Messages:
    188
    Если рассмотреть двумерный график какойто функции - очевидно та фигура, часть которой он образует определяется экстремумами функции. Учитывая квантование, небольшие отклонения от прямой соединяющей перегибы функции, которые много меньше длины прямой можно не рассматривать, таким образом сглаживаются шумы. Тогда задав пределы изменений дельт координат в экстремумах и их отношение друг к другу определит фигуру. Этой функцией является контур фигуры.