加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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应该对平移和缩放不变;如果您为两个图像计算这些图像并进行比较,则应为略微裁剪的图像获得接近相同的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读