一、基础知识

彩色图像:每个像素由R、G、B三个分量表示,每个通道取值范围0~255。(通一个彩色图像是由三页组成的,分别是R、G、B,每一页都是一个二维矩阵)

灰度图像:每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度。灰度值分布在0~255之间。

二值图像(黑白图像):每个像素点只有两种可能,0和1.0代表黑色,1代表白色。数据类型通常为1个二进制位。

二、图像灰度化的三种方法

最大值法:使R,G,B的值等于3值中最大的一个,R=G=B=max(R,G,B),最大值法会形成亮度很高的灰度图像。

平均值法:是R,G,B的值求出平均值,R=G=B=(R+G+B)/3,平均值法会形成较柔和的灰度图像。

加权平均值法:根据重要性或其他指标给R,G,B赋予不同的权值,并使R,G,B的值加权平均,R=G=B=WR+VG+UB,W,V,U分别表示权重,研究表明,人对绿色的敏感度最高,对红色次之,对蓝色的敏感度最低,因此W>V>U,实验和理论证明当W=0.30,V=0.59,U=0.11时,能得到最合理的灰度图像。

%代码如下

clc;%clc的作用就是清屏幕

clear;%clear是删除所有的变量

close all;%close all是将所有打开的图片关掉。

i=imread('E:\我的桌面\MATLAB\练习\1.jpg');%绝对路径的读取

[n m a]=size(i);%判断图像的大小

z= rgb2gray(i);%调用MATLAB函数实现灰度化

i1=zeros(n,m);

i2=zeros(n,m);

i3=zeros(n,m);

for x=1:n%通过双循环对图像进行灰度化处理

for y=1:m

i1(x,y)=max(i(x,y,1),max(i(x,y,2),i(x,y,3))); %第一种方法实现灰度化

i2(x,y)=(i(x,y,1)+i(x,y,2)+i(x,y,3))/3;%第二种方法实现灰度化

i3(x,y)=0.3*i(x,y,1)+0.59*i(x,y,2)+0.11*i(x,y,3);%第三种方法实现灰度化

end

end

figure,imshow(i);title('原图像')

figure,imshow(z);title('调用系统函数实现灰度化')

figure,imshow(uint8(i1));title('第一种方法')

figure,imshow(uint8(i2));title('第二种方法')

figure,imshow(uint8(i3));title('第三种方法')

%也可以把地下显示代码改成

subplot(231);imshow(i);title('原图像')

subplot(232);imshow(z);title('调用系统函数实现灰度化')

subplot(233);imshow(uint8(i1));title('第一种方法')

subplot(234);imshow(uint8(i2));title('第二种方法')

subplot(235);imshow(uint8(i3));title('第三种方法')

查看原文