Opencv比较图像

时间:2015-04-08 13:06:07

标签: c++ opencv image-processing

我是OPENCV的新用户,我正在尝试比较两张图片,因此我在两张Mat图像上使用了absdiff功能,但这种比较很容易受到灯光的影响发光,你能不能给我一些更健壮的建议?

1 个答案:

答案 0 :(得分:2)

有两种比较两种图像的方法,最好的方法实际上取决于您所需的准确度和应用。

可能对您有用的一种方法是在获取图像差异之前使用直方图均衡。直方图均衡化使场景的强度更加均匀,并且对于许多应用可以最小化照明对场景的影响。在OpenCV中,可以使用以下函数完成此操作:

cv::equalizeHist(src, dst);

更复杂的方法涉及使用特征检测器然后进行特征匹配。如果是FLANN,OpenCV提供的一种简单方法。基本上,它识别图像中易于识别的区域(即角落)并在另一图像中查找图案。

您可以使用两个图像中匹配的特征来计算两个图像之间的变换,例如旋转,缩放,倾斜等。特征的存在以及它们在两个图像之间移动的距离是什么然后用你的相似度得分。

这是一个更复杂的方法,它在OpenCV文档中有完整的文档,如果你愿意,我可以在这里深入探讨。

文档:http://docs.opencv.org/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.html#feature-flann-matcher