ruby – 比较两个图像,其中一个略微裁剪(缩放)
发布时间:2020-12-17 02:05:15 所属栏目:百科 来源:网络整理
导读:我使用图像库rmagick for ruby??来比较两个图像,以便检测它们是否实际上是相同的图像(避免重复). 我通常这样做的方式是使用difference方法: require 'rmagick'img1.difference(img2)#= [238.738932291668,0.001389172567175018,0.0184313725490196] 上面的
我使用图像库rmagick for
ruby??来比较两个图像,以便检测它们是否实际上是相同的图像(避免重复).
我通常这样做的方式是使用difference方法: require 'rmagick' img1.difference(img2) #=> [238.738932291668,0.001389172567175018,0.0184313725490196] 上面的例子是两个图像的输出,它们肯定是相同的.这对我来说非常好用,直到我偶然发现一个新方案,这个方法处理得不好 – 如果图像是相同的(甚至相同的大小),但其中一个已被裁剪,例如10px的边界.现在突然,即使两个图像看起来与人眼完全相同,计算机也会认为它们非常不同,因为其中一个图像只被裁剪了一小部分. 无论如何我可以处理这种情况,所以我仍然会发现它是相同的图像,即使其中一个被裁剪了一点? 解决方法
虽然您的示例图片可能看起来与人类非常相似,但原始图像数据看起来非常不同.
您需要一些更复杂的图像处理算法,它不会比较原始数据,但对转换,缩放或旋转等操作不变. 一般来说,我建议你使用像OpenCV这样的计算机视觉库;它也有ruby bindings.你可能会在this文档中看到所谓的Image Moments.标准化的中心矩nu_ij应该对平移和缩放不变;如果您为两个图像计算这些图像并进行比较,则应为略微裁剪的图像获得接近相同的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |