首页 > 编程知识 正文

汉明界,余弦距离和余弦相似度

时间:2023-05-05 04:33:54 阅读:138438 作者:610

计算图像之间的相似性可将lhzdxl距离、馀弦相似度/用作度量,前者强调点的思想,后者重视线的思想。

lhzdxl距离欧式距离/Euclidean Distance,即n维空间中两点之间的实际距离。 两个点a=(a1,a2, an ),b=) B1,b2,bn ) a=) a1,a2, an ),b=) B1,b2,bn ),AB之间的距离为

d(a,b ) ) (aibi )2) ) I=1,2,n ) d ) a,b ) ) ) aibi )2) ) I=1,2,n ) ) )

同样可以使用欧式距离计算图像的相似度,欧式距离越小相似度越大。

计算lhzdxl距离:

double euclidean _ distance (matbaseimg,Mat targetImg ) ) { double sumDescriptor=0; for(intI=0; i baseImg.cols; I ) ) doublenumbase=ABS (base img.atfloat (0,I ); doublenumtarget=ABS (target img.atfloat (0,I ); sum descriptor=pow (num base-num target,2; } doublesimility=sqrt (sum descriptor; return simility; }汉明距离/Hamming Distance也可以用于计算两个向量的相似度。 也就是说,向量的每一比特是否相同,在不同的情况下,通过在汉明距离上加1来得到汉明距离。 向量的相似度越高,对应的汉明距离就越小。 像10001001和10110001一样相差3位数。

馀弦相似度馀弦相似度是利用两个向量之间中心角的馀弦值来测量两个向量之间的馀弦相似度。 两个向量越相似,夹角越小,余弦值越接近1。

在n维空间中,对于向量A=(a1,a2, an )、B=(b1,b2,bn ) A=(a1,a2,bn )、B=(b1,b2,bn )

cos=N1(AIbi ) N1A2I )N1B2I ) cos=1n ) aIBI ) naI21nbI2

doublecos_distance(matbaseimg,Mat targetImg ) { double squSumB=0; 双精度squ SUMT=0; double innerPro=0; for(intI=0; i baseImg.cols; I ) ) doublenumbase=ABS (base img.atfloat (0,I ); doublenumtarget=ABS (target img.atfloat (0,I ); squSumB=squSumB numBase*numBase; squ SUMT=squsumtnumtarget * num target; inner pro=innerpronumbase * num target; }doubleMODB=sqrt(squsumb ); doubleModt=sqrt(squSumt ); doublesimility=inner pro/(modb * modt; return simility; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。