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