Перейти к содержимому
Compvision.ru
ZlobnyiSerg

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

Recommended Posts

Добрый день!

Очень рад что наткнулся на ваш полезный сайт и форум. У меня встала проблема, повторю её описание как уже делал на другом форуме:

"Нарисовалась интересная задача, помогите, плиз, советом.

Даны:

1. Изображения/сканы картин хорошего качества (не очень много, скажем порядка 5-10)

2. Дана фотография выставочной стены с картинами под произвольным ракурсом (так, что возможны геометрические искажения, но картина хорошо различима).

Нужно понять какие картины (из имеющихся в БД) изображены на фотографии.

Подскажите в какую сторону копнуть поиском для решения подобной проблемы? Возможно этот тип задач имеет какое-то название?

Вот пример оригинальной более качественной фотографии картины: фото оригинал (там присутствует засвет небольшой, но эта ситуация приближенная к реальности, и раму наверно можно убрать).

Вот эту же картину сфотографировал на стене мобильником: фото мобильником"

Благодаря OpenCV и EmguCV (коннектор для C#) нашел такой полезный алгоритм, как SURF. Но он очень часто ошибается (гонял его во всяких позах).

Собственно вопрос следующий: нет ли более эффективного алгоритма для решения моей задачи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотри на ASIFT, его исходники доступны. Пример его работы можно посмотреть здесь или здесь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотри на ASIFT, его исходники доступны. Пример его работы можно посмотреть здесь или здесь

Спасибо за наводку, намного клевее SURFа похоже. Огорчает 2 момента очень:

1. Похоже не существует эффективных алгоритмов, учитывающих изменение освещения (день/ночь).

2. Все хвастают в демках как клево их алгоритм находит два схожих изображения. Но часто в задачах важно, чтобы он не находил сходство там, где его нет, а вот с этим большие проблемы, тот же ASIFT легко загибается на лишь незначительно похожих картинках :(

Мне казалось эта задача легче решается... но видимо это оочень сложная проблема...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

только Note from the editor: the source code and executable files are temporarily removed while a possible copyright issue is investigated.

SIFT,SURF и т.д.

есть дескрипторы инвариантные к освещению, только не помню какие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Похожие картины можно отсеять. Если мы знаем преобразование гомографии (вычисленное по точкам), то можем получить выровненный вид изображения. После этого нужно, выровнять освещение (например так: http://graphicon.ru/oldgr/courses/cg/assigns/2004/hw3/flatten.html) и вычислить степень сходства, при помощи cvNorm или чего в этом духе. Я бы еще к PCA присмотрелся в данном случае (применение к выровненным картинам).

ЗЫ: Стены в галереях обычно однотонные (Можно watershed или FloodFill предварительно применить). Если найти сначала прямоугольник(и), затем найти гомографию, выровнять (так чтобы было перпендикулярно взгляду), затем сравнивать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Похожие картины можно отсеять. Если мы знаем преобразование гомографии (вычисленное по точкам), то можем получить выровненный вид изображения. После этого нужно, выровнять освещение (например так: http://graphicon.ru/oldgr/courses/cg/assigns/2004/hw3/flatten.html) и вычислить степень сходства, при помощи cvNorm или чего в этом духе. Я бы еще к PCA присмотрелся в данном случае (применение к выровненным картинам).

Да-да, видимо подравнять освещение и cvNorm отлично должен помочь. Жаль SIFT (и базирующийся на нем ASIFT) - патентованная вещь - и похоже их нельзя использовать бесплатно... Остается вариант не очень качественного SURF

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно и без дескрипторов. Убираем фон. Находим прямоугольник (cvHoughLines с последующей обработкой, или cvFindContours), находим угловые точки, находим перспективное преобразование, выравниваем и cvNorm.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно и без дескрипторов. Убираем фон. Находим прямоугольник (cvHoughLines с последующей обработкой, или cvFindContours), находим угловые точки, находим перспективное преобразование, выравниваем и cvNorm.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прикольно, щас дипломную пишу как раз по этому случаю. Реализую - потом выложу исходники!

А так, нашел сейчас у стенфордских студентов одну работу:

Моя ссылка

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×