关于 c :Opencv 比较图像

Opencv comparing Images

我是 OPENCV 的新手,我正在尝试比较两个图像,所以我在两个 Mat 图像上使用了 absdiff 函数,但是这种比较很容易受到照明和发光的影响,请您给我一些更强大的建议吗?


有多种方法可以比较两个图像,而最佳方法实际上取决于您所需的准确性和应用。

一种可能对您有用的方法是在获取图像差异之前使用直方图均衡化。直方图均衡使场景的强度更加均匀,并且对于许多应用程序可以最大限度地减少照明对场景的影响。在 OpenCV 中,这可以通过以下函数完成:

1
cv::equalizeHist(src, dst);

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

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

这是一种更复杂的方法,它在 OpenCV 文档中有完整的文档记录,如果您愿意,我可以在这里更深入。

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