gpt4 book ai didi

ruby - 检测不同分辨率下的图像是否相等

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:26 25 4
gpt4 key购买 nike

我正在尝试构建一个脚本来浏览我的原始高分辨率照片,并替换我在拥有专业帐户之前上传到 Flickr 的低分辨率旧照片。

对于他们中的许多人,我可以只使用 Exif 信息(例如拍摄日期)来确定匹配。但有些真的很旧,要么原始文件没有 Exif 信息,要么被我当时使用的任何愚蠢的大小调整软件破坏了。

因此,由于无法依赖元数据,我不得不求助于内容本身。问题是原件的分辨率与 Flickr 上的分辨率不同(这就是这项工作的重点)。那么有没有一种方法可以让我将它们与某种模糊相似性度量进行比较,从而允许我设置是否需要人工输入的阈值?

我想知道一张图片是另一张图片的调整大小版本比一般相似性产生更好的结果。任何语言的解决方案都可以,但 Ruby 将是一个加号:)

最佳答案

有趣的问题,顺便说一句:)

缓慢的解决方案 - 极好的成功机会

使用尺度不变特征检测器在两个图像中找到相应的特征。如果特征与相似位置的高分相匹配,那么你就有了匹配项。

我推荐 SIFT它为在图像中找到的特征生成一个缩放和旋转不变的 128 整数描述符。 SURF (在 OpenCV 中可用)是另一种(更快的)特征点检测器。

您可以通过暴力匹配两个图像的特征(将每个描述符与另一个图像中的描述符进行比较),这是 O(n^2) 但非常快(尤其是在 VL SIFT 实现中)。但是,如果您需要将一个图像中的特征与多个图像中的特征进行比较(您可能必须这样做),您应该构建一个特征树以使用其他图像的特征来查询它。 K-D 树很有用,而且 OpenCV有一个很好的实现。

快速解决方案 - 可能有效

将高分辨率图像下采样到低分辨率尺寸,并使用类似 SAD 的相似性度量(其中两个图像中一个像素周围的 3x3 像素 block 之间的差异之和就是分数)以确定匹配。

关于ruby - 检测不同分辨率下的图像是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1705790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com