Сопоставление изображения на черно-белых изображениях - PullRequest
1 голос
/ 06 ноября 2019

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

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

Итак, у меня есть вопрос, потому что я просто имею дело сЧерно-белые и прямые линии, которые соприкасаются друг с другом, как и прикрепленные изображения, не достаточно ли дифференцированной информации между изображениями для точного соответствия? В качестве альтернативы, есть ли подход ML, который может быть принят за пределы распознавания объекта?

Даг

Master/Base Image

Subimage

1 Ответ

1 голос
/ 06 ноября 2019

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

Здесь я делаю это с ImageMagick в терминале:

magick compare -metric RMSE -subimage-search haystack.png needle.png locations.png

и тамнет результата. Но если я сначала урежу его, а затем повторите попытку:

magick needle.png -trim +repage trimmed-needle.png
magick compare -metric RMSE -subimage-search haystack.png trimmed-needle.png locations.png

, я получу:

949,638

, что означает идеальное совпадение в этих координатах.

TLDR; Вам нужно обрезать свое изображение до наименьшего возможного размера, и оно будет работать.

...