2011年2月16日星期三

在Matlab中实现RGB颜色直方图显示源代码

在做图像处理的时候,我们可能需要RGB直方图来检验图像的一些特性。 Matlab中没有提供相应的函数,而hist函数只能表达灰度图像的直方图。 今天我在网上找到了一段代码,可以解决这个问题:


I=imread('D:\Desktop\testpic\test1\temp2.jpg', 'jpg');  % 文件名自己改
siz=size(I);
I1=reshape(I,siz(1)*siz(2),siz(3));  % 每个颜色通道变为一列
I1=double(I1);
[N,X]=hist(I1, [0:1:255]);    % 如果需要小矩形宽一点,划分区域少点,可以把步长改大,比如0:5:255
bar(X,N(:,[3 2 1]));    % 柱形图,用N(:,[3 2 1])是因为默认绘图的时候采用的颜色顺序为b,g,r,c,m,y,k,跟图片的rgb顺序正好相反,所以把图片列的顺序倒过来,让图片颜色通道跟绘制时的颜色一致
xlim([0 255])
hold on
plot(X,N(:,[3 2 1]));    % 上边界轮廓
hold off




最终效果图 (RGB分别用三个分量来显现):


没有评论:

发表评论