RGB三通道直方图分别用直方图相交法,分别得出相似度,然后求均值

RGB三通道直方图分别用直方图相交法,分别得出相似度,然后求均值。

代码如下:

clc;
close all;
clear all;

r1=imread('1.jpg');
r2=imread('2.jpg');
r1=imresize(r1,[300,300]);
r2=imresize(r2,[300,300]);

r1 = mat2gray(r1);
r2 = mat2gray(r2);

x=0:1:255;
 
R1 = r1(:,:,1);
G1 = r1(:,:,2);  
B1 = r1(:,:,3);
H_R1=imhist(R1);
H_G1=imhist(G1);
H_B1=imhist(B1);
 
R2 = r2(:,:,1);  
G2 = r2(:,:,2);  
B2 = r2(:,:,3);  
H_R2=imhist(R2);
H_G2=imhist(G2);
H_B2=imhist(B2);
 
subplot(231);imshow(r1);title('图1');
subplot(232);imshow(r2);title('图2');

subplot(234);plot(x,H_R1,'b',x,H_R2,'r:');title('R通道直方图');legend('图1','图2');
subplot(235);plot(x,H_G1,'b',x,H_G2,'r:');title('G通道直方图');legend('图1','图2');
subplot(236);plot(x,H_B1,'b',x,H_B2,'r:');title('B通道直方图');legend('图1','图2');
 

for i=1:length(H_R1)
            
    if H_R1(i,1)<=H_R2(i,1)
       y1(i,1)= H_R1(i,1);
    else
        y1(i,1)= H_R2(i,1);
    end
          
    if H_G1(i,1)<=H_G2(i,1)
       y2(i,1)= H_G1(i,1);
    else
       y2(i,1)= H_G2(i,1);
    end
    
   if H_B1(i,1)<=H_B2(i,1)
       y3(i,1)= H_B1(i,1);
    else
        y3(i,1)= H_B2(i,1);
   end 
end

s1=min([sum(H_R1),sum(H_R2)]);
f1=(sum(sum(y1))/s1);
 
s2=min([sum(H_G1),sum(H_G2)]);
f2=(sum(sum(y2))/s2);
 
s3=min([sum(H_B1),sum(H_B2)]);
f3=(sum(sum(y3))/s3);
 
f=mean([f1,f2,f3]);
subplot(233);text(0.5,.5,{'颜色相似度',num2str(f)},'FontSize',24,'HorizontalAlignment','center');

图片1
图片2
运行结果如下所示:
结果图
代码很简单,所以没有注释,有兴趣的可以试一试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值