распознавание образов между двумя очень разными изображениями - PullRequest
3 голосов
/ 02 марта 2012

Итак, моя проблема в том, что я должен найти общие точки между двумя изображениями микрочипа. Вот пример двух изображений: enter image description here enter image description here Между этими двумя изображениями мы можем ясно видеть некоторый общий образец, такой как провода в правом нижнем углу первых изображений, которые можно найти относительно в том же месте на втором изображении. Кроме того, вид белой Z-формы на первом изображении можно увидеть на вторых изображениях, немного сложнее, но он есть.

Я пытался сопоставить их с SURF (OpenCV), но не нашел ничего общего. Пытался применить какой-то фильтр к обоим изображениям, такой как обнаружение краев, порог и другие фильтры, которые я мог найти в GIMP, но что бы я ни пытался, никакой общей точки не было найдено.

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

Было бы предпочтительнее решение, использующее OpenCV, но я ищу любое возможное предложение. В OpenCV все ситуации сопоставления с образцом, которые я видел, были более очевидными, чем эта. Нет разницы в цвете и т. Д.

Ответы [ 2 ]

4 голосов
/ 19 июня 2012

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

Печатные платы, подобные изображенным на изображениях, часто основаны на перпендикулярных отрезках прямых линий. Таким образом, вы можете «очищать» и удалять такие вещи, как пятна от кофе, находя сегменты.

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

Вы можете чередовать, чтобы ускорить процесс. края пятен и пятнышки могут пережить это, если вы хотите, чтобы углы были близки к 45 * изображениям!

Полученное изображение можно интерпретировать как разреженное облако точек. Теперь вы можете использовать RANSAC или другие подобные подходы, чтобы описать многие из оставшихся корреляций как отрезки. * используйте 2-х точечный линейный сегмент в качестве входной модели для RANSAC, уменьшите, если он небольшой. * Определить бесконечные линии, которые имеют много внутренних * используйте подходы роста или binninng для сегментирования линий.

Преимущества: высокая вероятность представлений отрезков, которые фактически представлены в виде схем в изображении. 2-х точечное описание сегментов, возможные преобразования просты. легкая интерпретация данных, поскольку они могут быть наложены в openCV

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

  • применить вращение.

повторите для обоих изображений.

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

1 голос
/ 04 марта 2012

Если верхнее изображение всегда такого качества (квазиуровневые структуры, простое обнаружение кромок), я бы попробовал хороший алгоритм геометрического сопоставления (например, Cognex или Halcon), обучаясь верхнему изображению и ища нижнее. 1001 *

Может быть, стоит сначала компенсировать вращение (надеюсь, масштабирования нет). Это можно сделать, определив направление доминирующего края, возможно, используя преобразование Хафа. Или, что гораздо лучше, благодаря тщательному механическому выравниванию датчиков.

В любом случае, шансы на успех невелики, это сложная проблема.

...