我有两张图片,每张图片的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
R1=(2+3+4)/3 ,R2=(2+3+1)/3
(9-6)^2
中的值(R1-R2)^2
进行sqr((R1-R2)^2+(G1-G2)^2+(B1-B2)^2)
吗?OR
示例2:
Image1: R1 histogram has values of 2,3,4
Image2: R2 histogram has values of 2,3,1
(2-2)^2 +(3-3)^2 +(4-1)^2
中的(R1-R2)^2
做这个sqr((R1-R2)^2 +(G1-G2)^2+(B1-B2)^2)
吗?请帮帮我,谢谢!
答案 0 :(得分:1)
将直方图视为一个向量(也许有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);
答案 1 :(得分:-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 [] []。