MATLAB實現彩色圖像灰度化

彩色圖像灰度化

實現彩色圖像的灰度化主要有三種方法:最大值法、平均值法、加權平均法。

最大值法 取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('加權平均值灰度圖像');
發佈了15 篇原創文章 · 獲贊 26 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章