灰度图像上每一个像素的颜色值又称为灰度,指黑白图像中点的颜色深度, 范围通常从0到255 ,白色为255 ,黑色为0。所谓灰度值是指色彩的浓淡程度,灰度直方图是指一幅数字图像中,对应每个灰度值统计出具备该灰度值的象素数。web
灰度就是没有色彩, RGB色彩份量所有相等。若是是一个二值灰度图象 ,它的象素值只能为0或1 ,咱们说它的灰度级为2。一个256级灰度的图象,若是RGB三个量相同时,如: RGB(100, 100,100)就表明灰度为100 , RGB(50,50,50)表明灰度为50。如今大部分的彩色图像都是采用RGB颜色模式,处理图像的时候,要分别对RGB三种份量进行处理,实际上RGB并不能反映图像的形态特征,只是从光学的原理上进行颜色的调配。svg
图像灰度化处理能够做为图像处理的预处理步骤,为以后的图像分割、图像识别和图像分析等 上层操做作准备。函数
2.1根据matlab函数rgb2gray来实现3d
f=imread('下载.jpg'); >> h=rgb2gray(f); >> imshow(h);
2.2份量法
将彩色图像中的三份量的亮度做为三个灰度图像的灰度值,可根据应用须要选取一种灰度图像。
code
im=imread('下载.jpg'); figure('name','原图像'); imshow(im); %提取R、G、B三色份量 imR=im2double(im(:,:,1)); imG=im2double(im(:,:,2)); imB=im2double(im(:,:,3)); %乘以255,将灰度值范围变回[0,255]并取整 imRGB1=round(imR*255); im(:,:,1)=imRGB1; im(:,:,2)=imRGB1; im(:,:,3)=imRGB1;subplot(1,3,1); imshow(im); title('份量法1灰度图像'); imRGB2=round(imG*255); im(:,:,1)=imRGB2; im(:,:,2)=imRGB2; im(:,:,3)=imRGB2;subplot(1,3,2); imshow(im); title('份量法2灰度图像'); imRGB3=round(imB*255); im(:,:,1)=imRGB3; im(:,:,2)=imRGB3; im(:,:,3)=imRGB3;subplot(1,3,3); imshow(im); title('份量法3灰度图像');
2.3最大值法
将彩色图像中的三份量亮度的最大值做为灰度图的灰度值。
xml
im=imread('下载.jpg'); [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);
2.4平均值法
将彩色图像中的三份量亮度求平均获得一个灰度值。
blog
im=imread('下载.jpg'); 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','灰度图像'); imshow(im); title('平均值灰度图像');
2.5加权平均法
根据重要性及其它指标,将三个份量以不一样的权值进行加权平均。因为人眼对绿色的敏感最高, 对蓝色敏感最低,所以,按下式对RGB三份量进行加权平均能获得较合理的灰度图像。
图片
im=imread('下载.jpg'); figure('name','原图像'); imshow(im); %提取R、G、B三色份量 imR=im2double(im(:,:,1)); imG=im2double(im(:,:,2)); imB=im2double(im(:,:,3)); %加权平均值灰度图像 %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; imshow(im); title('加权平均值灰度图像');