【发布时间】:2015-10-29 17:35:07
【问题描述】:
我想找到向用户输出最佳匹配图像的源图像和图像列表之间的相似度比率。输入图像可以是任何形状,我的程序应该找到最匹配的图像。我对 OpenCV 很陌生,但我试图为我的实现学习它。我尝试了许多教程并尝试找到一些示例,但没有一个满足我的要求。示例图像如下所示。
我尝试了以下方法:
- 比较直方图 => 不是我实施的最佳方法
- 模板匹配 => 图像可以有不同的形状和大小。
- 特征匹配 => 没有找到任何可以区分相似之处的最佳教程。
我尝试过的其他方法是 SIFT、SURF 和 FAST,但它们都适用于点数据而不适用于形状数据。我正在使用 C++ 的 openCV 来实现这一点。
【问题讨论】:
-
我只是想知道,您的图像是否总是二进制的?和形状会像上面一样理想吗?
-
必须制作二进制...因为它们都是形状匹配的,所以我猜不会是问题...
-
我认为,与其使用无监督的方法,不如做一些类似的事情,比如计算圆形、正方形、矩形、三角形等,因为在这种情况下更容易。计算完形状后,您还可以从形状中提取信息,例如它们的大小、方向等,并利用这些信息根据您定义的相似度指标找到相似度。
-
提取轮廓并使用 cv::matchShapes。 docs.opencv.org/modules/imgproc/doc/… 只是出于兴趣:你会说第一排 nr 3 和第一排 5 是否相似? “相似度”这个词非常含糊不清,所以根据你对相似度的定义,你必须选择或设计你的算法。
-
霍夫变换很有帮助
标签: c++ opencv image-processing