8

是否可以比较具有不同分辨率的两张图像?

我的意思是这里有一些算法/编程方法。例如,现在我从图像的字节数组中计算哈希码并比较这些哈希码值。这是很好的工作,但在不同分辨率的情况下会失败,即图像在眼睛上是相同的,但字节内容不同。

例如看我的图片附件:
在此处输入图像描述在此处输入图像描述

其中一个有72 ppi,但另一个有96 ppi。我想在比较相等时获得TRUE值,但现在我得到FALSE。请帮助在这里找到正确的解决方案。

4

2 回答 2

6

在进入更复杂的领域之前,您可以尝试两种非常简单的感知散列方法,它们基于离散余弦变换和图像的局部与全局均值:

  1. 将图像转换为灰度

    1.1(编辑)使您的图像零均值

  2. 将您的图像压缩到缩略图大小,例如 [32x32]
  3. 运行二维离散余弦变换
  4. 保留左上角 [8 x 8],最重要的低频分量
  5. 根据组件的符号对块进行二值化
  6. 结果是 64 位哈希

这个主题的一个变体是

  1. 将图像转换为灰度
  2. 可以选择将大小重新调整为预定义的大小。
  3. 将图像划分为固定数量的块
  4. 确定全局平均值
  5. 确定每个块的局部平均值
  6. 对于散列,每块写出 1 或 0,如果局部平均值大于或小于全局平均值,则待定。

另外,看看phash

于 2012-04-14T17:47:08.943 回答
4

对于具有几种不同颜色的合成图像,我将从直方图匹配开始。

基本上将每个图像中每种颜色的像素数相加,然后除以像素总数。然后你有一个简单的浮点向量作为指纹。如果您希望具有更多或更少边框的图像算作匹配,则可以忽略白色

它不会检测到重新排列切片的相同图像,或者文本向下移动一行,但我认为这不是这种情况下的问题

于 2012-04-14T15:26:00.493 回答