我有两张图片,每幅图像的直方图为R,G,B。我假设用直方图的值来寻找欧氏距离,以求相似度。
我知道欧几里德距离公式是:
= sqr((R1-R2)^2 +(G1-G2)^2+(B1-B2)^2)因为每幅图像的R和B的直方图都有几个值,所以你应该在一个直方图中取所有强度值的平均值,然后用另一个直方图的强度值的平均值减去它吗?
示例1:
Image1: R1 histogram has values of 2,3,4
Image2: R2 histogram has values of 2,3,1那么我要做R1=(2+3+4)/3 ,R2=(2+3+1)/3
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然后,我在sqr((R1-R2)^2 +(G1-G2)^2+(B1-B2)^2)中为(R1-R2)^2做(2-2)^2 +(3-3)^2 +(4-1)^2吗?
请帮帮我,谢谢!
发布于 2020-08-25 14:09:00
把直方图想象成矢量(可能有256个垃圾箱,所以它是一个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);发布于 2020-08-25 13:45:11
我想你把归一化和欧几里得距离混在一起。
Euclidean Distance = Sqrt( Sum( ( a[i][j] - b[i][j] )^2 ) ) for all i = 0..width, j = 0..heightA和b可以是规范化数据或非规范化数据。如果使用的是原始图像像素值,则它们是非标准化的.您可以通过除以像素值的强度范围(最小-最大归一化)对图像进行规范化。
因此,在第一遍中,计算归一化图像和b范数,
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和b范数。
https://stackoverflow.com/questions/63579933
复制相似问题