ZlobnyiSerg 0 Жалоба Опубликовано April 14, 2011 Добрый день! Очень рад что наткнулся на ваш полезный сайт и форум. У меня встала проблема, повторю её описание как уже делал на другом форуме: "Нарисовалась интересная задача, помогите, плиз, советом. Даны: 1. Изображения/сканы картин хорошего качества (не очень много, скажем порядка 5-10) 2. Дана фотография выставочной стены с картинами под произвольным ракурсом (так, что возможны геометрические искажения, но картина хорошо различима). Нужно понять какие картины (из имеющихся в БД) изображены на фотографии. Подскажите в какую сторону копнуть поиском для решения подобной проблемы? Возможно этот тип задач имеет какое-то название? Вот пример оригинальной более качественной фотографии картины: фото оригинал (там присутствует засвет небольшой, но эта ситуация приближенная к реальности, и раму наверно можно убрать). Вот эту же картину сфотографировал на стене мобильником: фото мобильником" Благодаря OpenCV и EmguCV (коннектор для C#) нашел такой полезный алгоритм, как SURF. Но он очень часто ошибается (гонял его во всяких позах). Собственно вопрос следующий: нет ли более эффективного алгоритма для решения моей задачи? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано April 14, 2011 Посмотри на ASIFT, его исходники доступны. Пример его работы можно посмотреть здесь или здесь Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ZlobnyiSerg 0 Жалоба Опубликовано April 14, 2011 Посмотри на ASIFT, его исходники доступны. Пример его работы можно посмотреть здесь или здесь Спасибо за наводку, намного клевее SURFа похоже. Огорчает 2 момента очень: 1. Похоже не существует эффективных алгоритмов, учитывающих изменение освещения (день/ночь). 2. Все хвастают в демках как клево их алгоритм находит два схожих изображения. Но часто в задачах важно, чтобы он не находил сходство там, где его нет, а вот с этим большие проблемы, тот же ASIFT легко загибается на лишь незначительно похожих картинках Мне казалось эта задача легче решается... но видимо это оочень сложная проблема... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано April 14, 2011 только Note from the editor: the source code and executable files are temporarily removed while a possible copyright issue is investigated. SIFT,SURF и т.д. есть дескрипторы инвариантные к освещению, только не помню какие. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 14, 2011 Похожие картины можно отсеять. Если мы знаем преобразование гомографии (вычисленное по точкам), то можем получить выровненный вид изображения. После этого нужно, выровнять освещение (например так: http://graphicon.ru/oldgr/courses/cg/assigns/2004/hw3/flatten.html) и вычислить степень сходства, при помощи cvNorm или чего в этом духе. Я бы еще к PCA присмотрелся в данном случае (применение к выровненным картинам). ЗЫ: Стены в галереях обычно однотонные (Можно watershed или FloodFill предварительно применить). Если найти сначала прямоугольник(и), затем найти гомографию, выровнять (так чтобы было перпендикулярно взгляду), затем сравнивать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ZlobnyiSerg 0 Жалоба Опубликовано April 15, 2011 Похожие картины можно отсеять. Если мы знаем преобразование гомографии (вычисленное по точкам), то можем получить выровненный вид изображения. После этого нужно, выровнять освещение (например так: http://graphicon.ru/oldgr/courses/cg/assigns/2004/hw3/flatten.html) и вычислить степень сходства, при помощи cvNorm или чего в этом духе. Я бы еще к PCA присмотрелся в данном случае (применение к выровненным картинам). Да-да, видимо подравнять освещение и cvNorm отлично должен помочь. Жаль SIFT (и базирующийся на нем ASIFT) - патентованная вещь - и похоже их нельзя использовать бесплатно... Остается вариант не очень качественного SURF Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 15, 2011 Можно и без дескрипторов. Убираем фон. Находим прямоугольник (cvHoughLines с последующей обработкой, или cvFindContours), находим угловые точки, находим перспективное преобразование, выравниваем и cvNorm. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ZlobnyiSerg 0 Жалоба Опубликовано April 15, 2011 Можно и без дескрипторов. Убираем фон. Находим прямоугольник (cvHoughLines с последующей обработкой, или cvFindContours), находим угловые точки, находим перспективное преобразование, выравниваем и cvNorm. К сожалению убрать фон - не вариант. Я привел пример с картинной галереей как некую упрощенную задачу, жизненная сложнее и на фоне там может быть что угодно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Иванус 1 Жалоба Опубликовано April 20, 2011 Прикольно, щас дипломную пишу как раз по этому случаю. Реализую - потом выложу исходники! А так, нашел сейчас у стенфордских студентов одну работу: Моя ссылка 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах