图像由彩色图转化为灰度图的三种方法
一、原理
对于图像由彩色图转化为灰度图有三种方法
分别为 加权法 均值法 最大值法加权法就是 GRAY==0.3*R+0.59*G+0.11*B
均值法就是 GRAY==(R+G+B)/3
最大值发就是 max(R,G,B)
二、代码
[filename,pathname]=uigetfile({'*.jpg';'*bmp';'*gif'},'选择原图片');
picture=imread([pathname,filename]);%读取RGB格式的图像?
%用加权平均法处理图片
FirstGrayPic=rgb2gray(picture);
%用最大值法处理图片
[rows,cols,colors]=size(picture);%得到原来图像的矩阵的参数?
SecGrayPic=zeros(rows,cols);%创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像?
SecGrayPic=uint8(SecGrayPic);%将创建的全零矩阵转化为uint8格式
R=double(picture(:,:,1));
G=double(picture(:,:,2));
B=double(picture(:,:,3));
for i=1:rows
for j=1:cols
SecGrayPic(i,j)=max(max(R(i,j),G(i,j)),B(i,j));
end
end
%用平均值法处理图片?
[rows,cols,colors]=size(picture);%得到原来图像的矩阵的参数?
ThirdGrayPic=zeros(rows,cols);
ThirdGrayPic=uint8(ThirdGrayPic);
for i=1:rows
for j=1:cols
sum2=0;
for k=1:colors
sum2=sum2+picture(i,j,k)/3;%用均值法进行RGB到%灰度图像的转换?
end
ThirdGrayPic(i,j)=sum2;%将得到的简单平均值作为对应像素点?
end
end
%显示图像
figure(1);
subplot(2,2,1);
imshow(picture);%显示原来的图像
title('原图片')
subplot(2,2,2);%显示加权平均值图片?
imshow(FirstGrayPic);
title('加权平均值图片');
subplot(2,2,3);%显示最大值图片?
imshow(SecGrayPic);
title('最大值法图片')
subplot(2,2,4);%显示平均值图片?
imshow(ThirdGrayPic);
title('平均值图片')
三、实验结果