Opencv 比较图像
Opencv comparing Images
我是 OPENCV
的新手,我正在尝试比较两个图像,所以我在两个 Mat 图像上使用了 absdiff
函数,但是这种比较很容易受到 光照 和 luminescence,你能给我一些更强大的建议吗?
有多种方法可以比较两个图像,最佳方法实际上取决于您所需的准确性和应用。
一种可能对您有用的方法是在获取图像差异之前使用直方图均衡化。直方图均衡化使场景的强度更加均匀,并且对于很多应用程序可以最大限度地减少照明对场景的影响。在 OpenCV 中,这可以通过以下函数完成:
cv::equalizeHist(src, dst);
更复杂的方法涉及使用特征检测器,然后进行特征匹配。如果 FLANN,OpenCV 提供了一种简单的方法。本质上,它识别图像中容易识别的区域(即角)并在另一幅图像中寻找图案。
您可以使用两个图像中匹配的特征来计算两个图像之间的变换,例如旋转、缩放、倾斜等。特征的存在以及它们在两个图像之间移动的距离是您随后用于相似性评分的内容。
这是一个更复杂的方法,它在 OpenCV 文档中有完整的记录,如果您愿意,我可以在这里进行更深入的介绍。
我是 OPENCV
的新手,我正在尝试比较两个图像,所以我在两个 Mat 图像上使用了 absdiff
函数,但是这种比较很容易受到 光照 和 luminescence,你能给我一些更强大的建议吗?
有多种方法可以比较两个图像,最佳方法实际上取决于您所需的准确性和应用。
一种可能对您有用的方法是在获取图像差异之前使用直方图均衡化。直方图均衡化使场景的强度更加均匀,并且对于很多应用程序可以最大限度地减少照明对场景的影响。在 OpenCV 中,这可以通过以下函数完成:
cv::equalizeHist(src, dst);
更复杂的方法涉及使用特征检测器,然后进行特征匹配。如果 FLANN,OpenCV 提供了一种简单的方法。本质上,它识别图像中容易识别的区域(即角)并在另一幅图像中寻找图案。
您可以使用两个图像中匹配的特征来计算两个图像之间的变换,例如旋转、缩放、倾斜等。特征的存在以及它们在两个图像之间移动的距离是您随后用于相似性评分的内容。
这是一个更复杂的方法,它在 OpenCV 文档中有完整的记录,如果您愿意,我可以在这里进行更深入的介绍。