2

Я пытаюсь выполнить регистрацию изображений без большой удачи.Методы регистрации изображений для относительно безликих объектов

Изображение, приведенное ниже, является моим образцом «ссылки». Я использую веб-камеру для получения изображений одного и того же объекта в разных ориентациях, а затем вам необходимо выполнить преобразование на этих изображениях, чтобы они выглядели как можно ближе к эталонному изображению.

object to detect

Я использую оба Aforge.NET и Accord.NET библиотеки для того, чтобы решить эту проблему.

обнаружение Feature/извлечение

До сих пор я пытался метод сшивания изображений, используемый в this статьи. Он хорошо работает для определенных типов изображений, но, к сожалению, он не работает для моих образцовых изображений. Сам объект довольно мягкий и не имеет много функций, поэтому алгоритм не находит много точек корреляции. Я попробовал две версии вышеупомянутого подхода, в котором используется угловый детектор Харриса, и тот, который использует SURF, ни один из которых не предоставил мне результаты, которые мне нужны.

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

обнаружение Формы

Я также попытался несколько вариаций методов обнаружения формы, используемых в this статьи. В идеале я хотел бы обнаружить четыре четко определенных круга/отверстия на объекте. Затем я мог бы использовать их координаты для создания матрицы преобразования (гомографии?), Которую я мог бы использовать для преобразования изображения.

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

  • поворота изображения в оттенках серого
  • применить фильтр (среднее, медиана, Консервативная Сглаживание, адаптивное сглаживание и т.д.)
  • применять края обнаружения (гомогенность, Собели, разница, Канне и т.д.)
  • Применение цвета Фильтрация
  • детектор форма работы/круг

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

Image/шаблона соответствия

Опять же, я хотел бы, чтобы обнаружить четыре кружки/отверстия в объекте, так что я попробовал метод сопоставления изображений/шаблонов с небольшим успехом. Я создал шаблон (небольшое изображение одного из кругов) и запускаю алгоритм Exhaustive Template Matching без особого успеха. Обычно он обнаруживает только одно из отверстий, обычно тот, из которого был создан шаблон!

Резюмируя

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

Любые помощь или указатели были бы наиболее ценными.

+0

Не могли бы вы также привести пример движущегося изображения? С какими типами трансформаций вы имеете дело? Жесткое? Аффинных? Проективная? – eigenchris

ответ

1

Если вы добавили примеры преобразований, к которым вы пытаетесь быть инвариантными, мы могли бы быть более конкретными. Но в целом вы можете попытаться использовать HOG для обнаружения этой структуры, так как она довольно богата градиентами.

HOG в основном используется для обнаружения пешеходов, кроме того, он хорош для обнаружения различных логотипов.

Я не уверен в неизменности HOG для поворотов, но он довольно устойчив при разном освещении и при умеренных искажениях перспективы. Если важна инвариантность вращения, вы можете попытаться подготовить классификатор к повернутой версии объекта, хотя ваш детектор может стать менее дискриминационным.

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

1

Я знаю, что это было некоторое время, но только короткое возможное решение:

Я бы просто генерировать сетку точек на исходном изображении (скажем, 16х16), а затем использовать Lucas-Kanade (или какой-либо другой) чтобы найти эти точки на втором изображении. Конечно, вы, вероятно, не найдете все точки, но можете сортировать и выбирать наилучшие корреляции. Скажем, лучшие четыре? Тогда вы можете легко вычислить матрицу преобразования.

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

Надежды, которые помогают кому угодно.

Смежные вопросы