Matlab比较2个 二维矩阵 或 二维图像 相似度的方法总结

1、corr2

A = ;
B = ;
cor = corr2(A,B)

2、通过直方图相似性比较

(参考:https://blog.csdn.net/xiaojianzhao/article/details/103785809

    如果两张图像的直方图一样,或者有极高的相似度,那么在一定程度上,可以认为这两幅图是一样的,这就是直方图比较的应用之一。通过默认的欧氏距离来比较直方图的相似性大小,值越小,两个图像的直方图越相似。

i1 = a;
i2 = b;
[c1,n]=imhist(i1);
c1=c1/size(i1,1)/size(i1,2);
[c2,n2]=imhist(i2);
c2=c2/size(i2,1)/size(i2,2);
d=pdist2(c1',c2')

3、直方图 - 巴氏距离、欧式距离、直方图相交距离

(参考:https://blog.csdn.net/shanshangyouzhiyangM/article/details/52217644)这篇博文的代码运行,会报Count1未声明,我得代码将Count1改为CountI,count2改为CountJ,不知道对不对,搞清楚了回来补笔记

 I=imread('6.tif');
 J=imread('06.tif');
 [CountI]=imhist(I);
 [CountJ]=imhist(J);

 %% 巴氏距离 =0时最匹配  =1时完全不匹配%
 SumI=sum(CountI);
 SumJ=sum(CountJ);
 %Sumup = sqrt(Count1.*Count2);
 %SumDown = sqrt(Sum1*Sum2);
 Sumup = sqrt(CountI.*CountJ);
 SumDown = sqrt(SumI*SumJ);
 Sumup = sum(Sumup);
 HistDist=sqrt(1-Sumup/SumDown)

 %% 欧式距离 =0时最匹配%
 HistDist=sqrt(sum((CountI-CountJ).*(CountI-CountJ)))

 %% 直方图相交距离 =1时最匹配 越小则越不匹配%
 HistDist=sum(min(CountI,CountJ))/sum(CountI)

 %% 图片和直方图显示%
 figure(1);
 subplot(2,2,1);imshow(I);
 subplot(2,2,2);imshow(J);
 subplot(2,2,3);imhist(I);
 subplot(2,2,4);imhist(J);

4、结构相似性度量

(参考:https://blog.csdn.net/u010977034/article/details/82733137

img1 = 
img2 = 
[ssimval, ssimmap] = ssim(img1,img2);

 

  • 10
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值