Сопоставление сфотографированного изображения со скриншотом (или сгенерированным изображением на основе модели данных)

Прежде всего, я должен сказать, что я новичок в области компьютерного зрения, и в настоящее время я столкнулся с проблемой, которую я безуспешно пытался решить с помощью opencv (Java Wrapper).

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

Пример изображения:

введите здесь описание изображенияИзображение модели:

desc

Итак, один вопрос: с чего мне начать/какой алгоритм мне следует использовать?

Моей первой попыткой было использовать сопоставление ключевых точек с SURF в качестве детектора, дескриптора и BF в качестве сопоставления. Это сработало примерно на 2 фотографиях из 10. Я использовал параметры по умолчанию и пробовал другие детекторы, без каких-либо улучшений. (Возможно, это вопрос правильных параметров. Но как узнать правильные параметры в сочетании с правильным алгоритмом?...) Два примера:

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

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

Моя вторая попытка состояла в том, чтобы использовать цвет, чтобы различать определенные элементы в модели и сравнивать структуру с самой моделью (в дополнение к изображению модели у меня также есть представление модели в формате xml...). Прямо сейчас я извлек красный цвет из изображения, отрегулировал значения h, s, v вручную, чтобы получить наилучшее обнаружение примерно для 4 изображений, что не удается для других изображений.

Два примера:

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

Я также пытался использовать обнаружение краев (осторожный, серый, с выравниванием гистограммы) для обнаружения геометрических структур. Для некоторых результатов я мог предположить, что это сработает, но использование тех же хитроумных параметров для других изображений «не работает». Два примера:

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

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

заранее спасибо

геморра


person gemorra    schedule 09.09.2014    source источник
comment
Я бы попытался сначала исправить изображение, деформировав его так, как если бы камера смотрела под прямым углом к ​​доске (попробуйте найти линейные структуры и прямоугольники). после этого сопоставление формы может работать. Для ваших хитрых порогов вы можете сначала попробовать нормализацию цвета.   -  person Micka    schedule 09.09.2014


Ответы (1)


Ваша первоначальная идея использования функций SURF была на самом деле очень хорошей, просто попытайтесь понять, как работают параметры этого алгоритма, и вы сможете зарегистрировать свои изображения. Хорошей отправной точкой для ваших параметров было бы изменение только порога Гессе и боязни при этом: ваши функции достаточно хорошо определены, поэтому старайтесь использовать пороги около 2000 и выше (увеличивая шагами 500-1000, пока вы не получите хороший результат). результаты в полном порядке).

В качестве альтернативы вы можете попытаться обнаружить свои эллипсы и рассчитать аффинную деформацию, которая нормализует их, и запустить взаимную корреляцию, чтобы зарегистрировать их. Эта альтернатива требует гораздо больше работы, но она весьма увлекательна. Некоторые идеи по этой нормализации с использованием ковариационной матрицы и ее разложения Холецкого здесь .

person McMa    schedule 09.09.2014
comment
спасибо за ваши предложения. Я возьму кучу тестовых изображений, чтобы найти оптимальный порог Гессе. А как насчет других параметров? Нравится фильтровать совпадения на основе расстояния. Какой Matcher следует использовать? ФЛАНН, БФ? – - person gemorra; 09.09.2014
comment
Обычно я получаю идентичные или похожие результаты с обоими сопоставителями, гораздо важнее настроить количество соседей, которые вы найдете... я предполагаю, что должно подойти k = 1, но компьютерное зрение во многом основано на пробах и ошибках: / - person McMa; 09.09.2014
comment
хорошо понял. Когда я хотел попробовать разные картинки и настроить порог, я столкнулся со странной проблемой. Я открыл новый вопрос, потому что он не связан напрямую с этим: stackoverflow.com/questions/25752497/ - person gemorra; 09.09.2014