【问题标题】:Euclidean distance between RGB histogram of two images两幅图像的RGB直方图之间的欧几里得距离
【发布时间】:2020-12-14 05:01:06
【问题描述】:

我有两张图片,每张图片的 R、G、B 强度直方图。我想使用直方图的值来找到欧几里得距离以找到相似度。

我知道欧式距离公式是:

= sqr((R1-R2)^2 +(G1-G2)^2+(B1-B2)^2)

由于每张图像的 RG 和 B 的直方图都有多个值,所以您是否假设取一个直方图中所有强度值的平均值,然后用另一个直方图的强度值平均值减去它?

示例 1:

Image1: R1 histogram has values of 2,3,4 
Image2: R2 histogram has values of 2,3,1
  1. 那我要不要R1=(2+3+4)/3 ,R2=(2+3+1)/3
  2. 那我要为sqr((R1-R2)^2+(G1-G2)^2+(B1-B2)^2)中的值(R1-R2)^2(9-6)^2吗?

示例 2:

Image1: R1 histogram has values of 2,3,4 
Image2: R2 histogram has values of 2,3,1
  1. 那么我要为(R1-R2)^2 中的sqr((R1-R2)^2 +(G1-G2)^2+(B1-B2)^2) 执行此(2-2)^2 +(3-3)^2 +(4-1)^2 吗?

请帮帮我,谢谢!

【问题讨论】:

  • RGB 颜色与欧式距离无关。即 2 个 RGB 值之间的欧几里得距离与我们人类感知这些颜色的距离无关。如果您想比较颜色(例如找到与特定颜色最接近的颜色),则需要使用L*a*b* 颜色空间。
  • @AnderBiguri:问题是关于直方​​图距离。它与颜色比较和人类感知关系不大。

标签: image-processing computer-vision histogram euclidean-distance


【解决方案1】:

我认为您将归一化与欧几里得距离混合在一起。

Euclidean Distance = Sqrt( Sum( ( a[i][j] - b[i][j] )^2 ) ) for all i = 0..width, j = 0..height

a[][] 和 b[][] 可以是规范化数据或非规范化数据。如果您使用的是原始图像像素值,则它们是非标准化的。您可以通过除以像素值的强度范围来对图像进行归一化(最小-最大归一化)。

所以,在第一遍计算归一化图像 anorm[][] 和 bnorm[][] 其中,

for(i = 0; i < width; i++) {
  for(j = 0; j < height; j++) {
    anorm[i][j] = a[i][j] / (max_a - min_a);
    bnorm[i][j] = b[i][j] / (max_b - min_b);
  }
}

现在,在 anorm[][] 和 bnorm[][] 上应用欧几里得距离公式。

【讨论】:

  • 参见:citeseerx.ist.psu.edu/viewdoc/… 了解图像欧几里得距离的定义(参考方程式 (1))
  • @Cris Luengo:关于标准化你是对的。我已将上面的内容更改为引用 min-max 归一化变换,它将像素值转换为 0 到 1 的范围。
  • 那么我将删除我的反对票。但我反对称该距离为“欧几里得”。在这篇论文中他们明确指出他们的距离不满足三角不等式,这是欧几里得距离的一个重要特征。他们应该以不同的方式命名他们的方法,用最基本、最重要的距离测量的众所周知的名称来调用新的距离测量充其量是令人困惑的。尽管如此,那篇论文似乎在某个地方隐藏了一个有趣的想法,我会更详细地阅读它并重新审视你的答案。谢谢!
  • @Chris Luengo:我将图像视为尺寸为 MxN 的向量。在这种情况下,计算是两个向量的教科书欧几里得距离。
  • 问题是关于直方​​图之间的距离,而您使用 SSD 相似度指标进行回复。无关紧要。
【解决方案2】:

将直方图视为一个向量(可能有 256 个 bin,所以它是一个 256 维向量)。现在计算两个向量之间的欧几里得距离:

DR = norm(R1-R2); % same as sqrt(sum((R1-R2).^2))

您可以对每个 R、G 和 B 分量重复此操作,并使用欧几里得范数再次组合三个距离:

D = sqrt(DR.^2 + DG.^2 + DB.^2);

这与连接每个图像的 3 个颜色直方图并计算它们的距离相同:

H1 = [R1,G1,B1]; % assuming histograms are row vectors
H2 = [R2,G2,B2];
D = norm(H1-H2);

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2023-03-25
    相关资源
    最近更新 更多