Я новичок в OpenCV. Я хотел бы знать, можем ли мы сравнить два изображения (одно из изображений, сделанных фотошопом, исходным изображением, а другое - с камеры) и найти, являются ли они такими же или нет. Я попытался сравнить изображения с помощью сопоставления с шаблонами. Это не работает. Можете ли вы рассказать мне, какие другие процедуры мы можем использовать для такого сравнения?
Метод сравнения изображений с С++ и OpenCV
Ответ 1
Сравнение изображений может осуществляться по-разному в зависимости от того, какую цель вы имеете в виду:
- если вы просто хотите сравнить, являются ли два изображения приблизительно одинаковыми (с несколькими различия яркости), но с той же перспективой и видом камеры вы можете просто вычислить разницу в пикселях в пиксель, для каждой цветовой полосы. Если сумма квадратов выше два изображения меньше порога, с которым сопоставляются изображения, в противном случае нет.
- Если одно изображение является черно-белым вариантом другого, преобразование цветных изображений (см., например, http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale). Afterwarts просто выполняют описанный выше шаг.
- Если одно изображение является прообразом другого, вам необходимо выполнить регистрацию двух изображений. Это означает определение масштаба, возможное вращение и XY-перевод, который необходимо уложить подвид на более крупном изображении (для способов регистрации изображений см. Pluim, J.P.W., Maintz, J.B.A., Viergever, M.A., Взаимно-информационная регистрация медицинские изображения: обзор, IEEE Transactions on Medical Imaging, 2003, том 22, выпуск 8, стр. 986 - 1004)
- Если у вас есть перспективы различий, вам нужен алгоритм для размещения одного изображения для как можно лучше совпадают друг с другом. Для того, чтобы выглядеть так, http://javaanpr.sourceforge.net/anpr.pdf со страницы 15 и далее.
Удачи!
Ответ 2
Вы должны попробовать SIFT. Вы применяете SIFT к вашему маркеру (изображение, сохраненное в памяти), и вы получаете некоторые дескрипторы (точки, которые необходимо распознать). Затем вы можете использовать алгоритм FAST с кадрами камеры, чтобы найти совпадающие ключевые точки маркера в изображении камеры. У вас много тем по этой теме:
Как получить прямоугольник вокруг целевого объекта с помощью функций, извлеченных SIFT в OpenCV
Как выполнить поиск изображения для объекта с помощью SIFT и OpenCV?
OpenCV - сопоставление объектов с использованием дескрипторов SURF и BruteForceMatcher
Удачи.