彩色圖像灰度化
實現彩色圖像的灰度化主要有三種方法:最大值法、平均值法、加權平均法。
最大值法 | 取RGB三色分量中的最大值,即R=G=B=max(R,G,B) |
---|---|
平均值法 | 取RGB三色分量中的平均值,即R=G=B=(R+G+B)/3 |
加權平均法 | 按權取RGB三色分量的平均值,即R=G=B=WrR+WgG+WbB,當Wr=0.587,Wg=0.299,Wb=0.114時,效果更佳。 |
實現效果
-
原圖【彩色圖像】
-
最大值灰度圖像
-
平均值灰度圖像(左),加權平均值灰度圖像(右)
參考代碼
最大值法參考代碼
im=imread('autumn.tif');
[x,y,z]=size(im);
immax=ones(x,y);
%最大值灰度圖像
for i=1:x
for j=1:y
immax(i,j)=max(im(i,j,:));
end
end
im(:,:,1)=immax;
im(:,:,2)=immax;
im(:,:,3)=immax;
figure('name','最大值灰度圖像');
imshow(im);
平均值法、加權平均法參考代碼
注意在進行圖像處理前,要對讀入的圖像數據使用double()或im2double()進行類型轉換!!
否則,uint8類型的圖像數據運算結果超出255就會發生溢出!!
im=imread('autumn.tif');
figure('name','原圖像');
imshow(im);
%提取R、G、B三色分量
imR=im2double(im(:,:,1));
imG=im2double(im(:,:,2));
imB=im2double(im(:,:,3));
%平均值灰度圖像
%取完平均值之後還要乘以255,將灰度值範圍變回[0,255]並取整
imRGB=round((imR+imG+imB)/3*255);
im(:,:,1)=imRGB;
im(:,:,2)=imRGB;
im(:,:,3)=imRGB;
figure('name','灰度圖像');
subplot(1,2,1);
imshow(im);
title('平均值灰度圖像');
%加權平均值灰度圖像
%Wr=0.587,Wg=0.299,Wb=0.114,加權平均後還要乘以255,將灰度值範圍變回[0,255]並取整
imRGB2=round((0.587*imR+0.299*imG+0.114*imB)*255);
im(:,:,1)=imRGB2;
im(:,:,2)=imRGB2;
im(:,:,3)=imRGB2;
subplot(1,2,2);
imshow(im);
title('加權平均值灰度圖像');