关于灰度图像的直方图均衡化,我已经写过,不知道的童鞋可以点连接http://blog.csdn.net/qq_34119437/article/details/53086799
那么如何进行彩色图像的直方图均衡化。
我们知道jpg图像是由RGB三色通道,那么我们可以对一幅图像三个通道进行提取,然后分别进行直方图均衡化。最后合并即可。话不多说上代码
function coloraverage()
I=imread('lena2.jpg');
imshow(I);
I1=I(:,:,1);%提取R通道
I2=I(:,:,2);%提取G通道
I3=I(:,:,3);%提取B通道
I1=test(I1);%直方图均衡化
I2=test(I2);%直方图均衡化
I3=test(I3);%直方图均衡化
c=cat(3,I1,I2,I3); %合并
subplot(121);imshow(I);
subplot(122);imshow(c);
function m=test(I)
J=I;
[w,l]=size(I);%确定矩阵大小
area=w*l;
a=zeros(1,256);
b=zeros(1,256);
for i=1:w %记录每个灰度的个数
for j=1:l
m=I(i,j)+1;
a(1,m)=a(1,m)+1;
end
end
for i=1:256 %均衡化
sum=0;
for j=1:i
sum&