函数 实现将彩色图像转化为直方图分量向量
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));