Я хотел бы знать, что было бы лучшей стратегией для сравнения группы контуров, фактически являющихся краями, полученными в результате обнаружения хитрых краев, из двух изображений, чтобы узнать, какая пара более похожа.
У меня есть это изображение:
http://i55.tinypic.com/10fe1y8.jpg
И я хотел бы знать, как я могу рассчитать, какой из них лучше всего подходит для него:
http://i56.tinypic.com/zmxd13.jpg
(это должен быть тот, что справа)
Можно ли как-то сравнить контуры в целом? Я могу легко поворачивать изображения, но я не знаю, какие функции использовать, чтобы вычислить, что эталонное изображение справа подходит лучше всего.
Вот что я уже пробовал с помощью opencv:
Функция matchShapes — я попробовал эту функцию, используя 2 изображения в градациях серого, и я всегда получаю один и тот же результат на каждом сравнительном изображении, и значение кажется неправильным, так как оно равно 0,0002.
Итак, что я понял о matchShapes, но я не уверен, что это правильное предположение, так это то, что функция работает с парами контуров, а не с полными изображениями. Теперь это проблема, потому что, хотя у меня есть контуры изображений, которые я хочу сравнить, их сотни, и я не знаю, какие из них следует «спарить».
Поэтому я также попытался сравнить все контуры первого изображения с двумя другими с помощью итерации for, но я мог бы сравнить, например, контур 5 с контуром круга двух эталонов. изображения, а не 2 контура.
Также попробовал простую функцию cv::compare и matchTemplate, но ничего не получилось.