我有2张二进制图像(黑/白)。它们具有相同的内容,但在内容(文本)的轮换/翻译和缩放方面可能略有不同。
如何在OpenCV中获得2个图像相似度的简单测量?
操作需要尽可能快(实时)。
示例:
A:
B:
答案 0 :(得分:1)
您需要删除比例和旋转。
要移除旋转,请使用pca(可为您提供主轴),并旋转两个图像,使主轴沿x。 (使用剪切旋转)。要删除刻度,您可以简单地取一个边界框,或者如果那里有一点噪音,取区域并缩放一直到它相等。只需对像素中心进行缩放(有点icky,但很难很好地缩放二进制图像)。
我应该为二进制图像库提供一些支持。您可能会发现该材料很有用
答案 1 :(得分:1)
您可以使用LogPolarFFT registration algorithm注册图像,然后使用相似性检查(PSNR or SSIM)对它们进行比较。
答案 2 :(得分:0)
我能想到的一种方法是使用SIFT / SURF找到关键点,然后计算两个图像之间的Homography并根据计算出的Homography对其进行扭曲(以便固定旋转和平移)。然后你可以简单地用SAD计算相似度。
答案 3 :(得分:0)
需要使用旋转和缩放不变的方法。在需要特征提取之前还需要基于阈值的区域分割。我建议按照以下步骤操作:
1 /二进制阈值&扫描线算法可用于分割特定的文本行区域。
2 /分割后,您应该使用warpAffine变换调整旋转。见example
3 /在调整后的图片上,您可以应用SIFT
或BRISK
或SURF
功能来获取功能
4 /使用模板匹配方法匹配或生成相似度或距离得分。
请参阅以下链接了解更多详情: