首页 > 代码库 > matlab实现将彩色图像(R,G,B)色分量的直方图匹配,并计算其相关性

matlab实现将彩色图像(R,G,B)色分量的直方图匹配,并计算其相关性

函数 实现将彩色图像转化为直方图分量向量

calcrgb2hist.m 文件

function hist  = calcrgb2hist(picname)
pic1 = imread(picname);
pic1R = pic1(:,:,1);
pic1G = pic1(:,:,2);
pic1B = pic1(:,:,3);


figure,imshow(pic1R)                 
title('R分量的图像')


% 二,绘制直方图
[m,n]=size(pic1R);                            %测量图像尺寸参数
rhist=zeros(1,256);                           %预创建存放灰度出现概率的向量
for k=0:255    
    rhist(k+1)=length(find(pic1R==k))/(m*n);     %计算每级灰度出现的概率,将其存入rhist中相应位置
end
figure,bar(0:255,rhist,'r')                   %绘制直方图 
title('R像直方图')
xlabel('灰度值')
ylabel('出现概率')
%%
ghist=zeros(1,256); 
for k=0:255    
    ghist(k+1)=length(find(pic1G==k))/(m*n);     
end
figure,bar(0:255,ghist,'g')                
title('R像直方图')
xlabel('灰度值')
ylabel('出现概率')


%%
bhist=zeros(1,256); 
for k=0:255    
    bhist(k+1)=length(find(pic1B==k))/(m*n);    
end
figure,bar(0:255,bhist,'b')                 
title('R像直方图')
xlabel('灰度值')
ylabel('出现概率')
hist = [reshape(rhist',1,256),reshape(ghist',1,256),reshape(bhist',1,256)]; %将直方图拼接成 256*3 的向量。
end


下面是执行的主函数

p1= calcrgb2hist('frame22.bmp');
p2= calcrgb2hist('frame22.bmp');
g = corrcoef(p1 ,p2);
fprintf('相关系数为 = %d\n',g(1,2));