彩色图像的灰度化处理
处理灰度照片的方法

处理灰度照片的方法
处理灰度照片的方法有以下几种:
1. 灰度化:将彩色照片转换为灰度图像。
可以使用公式将彩色图像的RGB通道值进行加权平均,或者使用专门的灰度转换算法,如使用YUV颜色空间中的亮度分量进行灰度化。
2. 对比度调整:可以通过直方图均衡化或对比度拉伸等方法来增强图像的对比度。
直方图均衡化是一种常用的方法,它通过重新分配图像的灰度级来增强图像的对比度。
3. 滤波处理:可以使用各种滤波器对图像进行平滑或锐化处理。
常用的滤波器包括均值滤波器、高斯滤波器、中值滤波器等。
4. 边缘检测:可以使用边缘检测算法,如Sobel算子、Canny算子等,来提取图像中的边缘信息。
5. 图像修复:可以使用图像修复算法来修复灰度图像中的缺失或损坏的部分。
常用的图像修复算法包括基于纹理合成、基于图像修复模型等方法。
6. 图像增强:可以使用各种图像增强算法来增强图像的细节和清晰度,如锐化、增强边缘等。
以上是一些常用的处理灰度照片的方法,具体选择哪种方法取决于具体的应用需求和图像处理的目标。
彩色图像的灰度化处理

第1章绪论1.1数字图像数字图像,又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。
数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用计算机或数字电路存储和处理的图像。
像素(或像元,Pixel)是数字图像的基本元素,像素是在模拟图像数字化时对连续空间进行离散化得到的。
每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值。
通常,像素在计算机中保存为二维整数数阻的光栅图像,这些值经常用压缩格式进行传输和储存。
数字图像可以许多不同的输入设备和技术生成,例如数码相机、扫描仪、坐标测量机、seismographic profiling、airborne radar等等,也可以从任意的非图像数据合成得到,例如数学函数或者三维几何模型,三维几何模型是计算机图形学的一个主要分支。
数字图像处理领域就是研究它们的变换算法。
1.2设计平台本次设计采用的平台是MATLAB 7.0。
MATLAB编程语言被业界称为第四代计算机语言,它允许按照数学推导的习惯编写程序。
MATLAB7.0的工作环境包括当前工作窗口、命令历史记录窗口、命令控制窗口、图形处理窗口、当前路径选择菜单、程序编辑器、变量查看器、模型编辑器、GUI编辑器以及丰富的函数库和MATLAB附带的大量M文件。
MATLAB是由美国Math Works公司生产的一个为科学和工程计算专门设计的交互式大型软件,是一个可以完成各种计算和数据处理的、可视化的、强大的计算工具。
它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂计算的领域得到了广泛应用。
MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担,被称为第四代编程语言。
在MATLAB设计环境中,图像处理工具箱提供一套全方位的参照标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。
[笔记]图像的二值化,灰度化,滤波,反色的基本原理
![[笔记]图像的二值化,灰度化,滤波,反色的基本原理](https://img.taocdn.com/s3/m/162260af1b37f111f18583d049649b6648d70935.png)
图像的二值化,灰度化,滤波,反色的基本原理一、图像的灰度化处理的基本原理将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。
彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。
而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。
灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。
图像的灰度化处理可用两种方法来实现。
第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
二图像的二值化的基本原理图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。
即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。
为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。
所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。
彩色灰度转换原理

彩色灰度转换原理彩色灰度转换是一种将彩色图像转换为灰度图像的技术。
在计算机图像处理中,彩色图像由红、绿、蓝三个颜色通道组成,每个通道的像素值表示对应颜色的强度。
而灰度图像只有一个通道,每个像素值表示灰度的强度,即黑白图像。
彩色灰度转换的原理是通过将彩色图像的三个颜色通道的像素值加权求和,得到对应像素的灰度值。
常用的加权求和方法是将红、绿、蓝三个颜色通道的像素值按照一定的权重相加,得到灰度图像的像素值。
一种常用的加权求和方法是将红、绿、蓝三个颜色通道的像素值按照不同的权重相加,得到灰度图像的像素值。
常用的加权方法是将红色通道的权重设为0.299、绿色通道的权重设为0.587、蓝色通道的权重设为0.114。
这是因为人眼对不同颜色的敏感度是不同的,对绿色最敏感,对红色次之,对蓝色最不敏感。
通过按照不同的权重相加,可以更好地反映人眼对图像的感知。
彩色灰度转换的过程可以通过以下步骤进行:1. 加载彩色图像:首先,需要将彩色图像加载到计算机内存中。
彩色图像可以是常见的图像格式,如JPEG、PNG等。
2. 分离颜色通道:将彩色图像的红、绿、蓝三个颜色通道分离出来,得到三个单独的通道图像。
3. 加权求和:对于每个通道图像的对应像素,按照设定的权重进行加权求和,得到灰度图像的对应像素值。
4. 合并通道:将灰度图像的三个通道合并为一个通道,得到最终的灰度图像。
通过彩色灰度转换,可以将彩色图像转换为灰度图像,简化了图像处理的复杂度。
灰度图像具有更低的存储需求和计算复杂度,使得图像处理算法更加高效。
此外,灰度图像在一些特定应用中也具有重要的作用,如图像识别、图像压缩等。
总结起来,彩色灰度转换是通过将彩色图像的颜色通道加权求和,得到灰度图像的过程。
通过合理选择权重,可以更好地反映人眼对图像的感知。
彩色灰度转换简化了图像处理的复杂度,并在一些应用中发挥重要作用。
数字图像处理试题库

试题库一、填空题:1.彩色图像的灰度化处理,将真彩色图像转化成256色灰度图像。
要求:转换关系为:Gray(i,j)=0.11R(i,j)+0.59G(i,j)+0.3B(i,j)(1) 获取原图像像素的首地址,及图像的高度和宽度;(2) 得到像素的蓝、绿、红的三个分值;(3) 按照公式要求,计算Gray(i,j);(4) 将该值返回给蓝、绿、红三个分量。
void MakeColorDib::MakegGray(){BYTE *p_data;int wide,height,DibWidth;p_data=this->GetData ();wide=this->GetWidth ();height=this->GetHeight ();DibWidth=this->GetDibWidthBytes();for(int j=0;j< height;j++ )for(int i=0;i< DibWidth;i+=3){BYTE* pbyBlue = p_data++; //得到蓝色值BYTE* pbyGreen = p_data++; //得到绿色值BYTE* pbyRed = p_data++; //得到红色值BYTE r = *pbyRed;BYTE g = *pbyGreen;BYTE b = *pbyBlue;gray =0.11*r+0.59*g+0.3*b*pbyBlue = gray; //将取到的最大值赋给像素的蓝分量*pbyGreen = gray; //将取到的最大值赋给像素的绿分量*pbyRed = gray; //将取到的最大值赋给像素的红分量}for(int j= height/3;j<2*height/3;j++) // 每行for(int i=0;i<DibWidth;i++) // 每列{int a=*p_data; //取得当前点的值*p_data=255-a; //取反p_data++; //指向下一指针}for(int j=2*height/3;j<height;j++) // 每行for(int i=0;i<DibWidth;i++) // 每列{BYTE* pbydata = p_data++; //取得当前点的值BYTE a=*pbydata; //传给临时变量*pbydata=(a>128)?a:(255-a); //调整}}2.目标物体的轮廓提取。
[数字图像处理](一)彩色图像转灰度图像的三种方式与效果分析
彩色图像转灰度图像的三种方式与效果分析](https://img.taocdn.com/s3/m/a9ad791dbb1aa8114431b90d6c85ec3a87c28bdb.png)
[数字图像处理](⼀)彩⾊图像转灰度图像的三种⽅式与效果分析图像处理(⼀)彩⾊图⽚转灰度图⽚三种实现⽅式最⼤值法imMax=max(im(i,j,1),im(i,j,2),im(i,j,3))平均法imEva=im(i,j,1)3+im(i,j,2)3+im(i,j,3)3加权平均值法imKeyEva=0.2989×im(i,j,1)+0.5870×im(i,j,2)+0.1140×im(i,j,3)matlba实现clc;close all;clear all;% 相对路径读⼊图⽚(和代码在同⼀⽂件夹下)im = imread('p2.jpg');%---查看图⽚,检测是否成功读⼊% 对显⽰的图⽚进⾏排版subplot(2,3,4);imshow(im);% 对图⽚进⾏命名title('原图');[col,row,color] = size(im);%col为图⽚的⾏数,row为图⽚的列数,color对于彩⾊图⽚⼀般为3,每层对应RGB %利⽤matlab⾃带的函数进⾏ rgb_to_gray;im_matlab = rgb2gray(im);subplot(2,3,1);imshow(im_matlab);title('matlab⾃带rgb2gray');%--------------------------------------------------------%---⽤最⼤值法% 创建⼀个全为1的矩阵,长宽等同于原图的im_max = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_max(i,j) = max( im(i,j,:) );endend% 将矩阵变为8byte⽆符号整型变量(不然⽆法显⽰图⽚)% 最好在计算操作结束后再变化,不然会有精度问题!!im_max = uint8(im_max);subplot(2,3,2);imshow(im_max);title('最⼤值法');%--------------------------------------------------------% 平均值法im_eva = ones(col,row);for i = 1:1:colfor j = 1:1:rowim_eva(i,j) = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3 ;% 两种的结果其实⼀样,但是如果先转换为uint8就会出现精度问题%sum1 = im(i,j,1)/3 + im(i,j,2)/3 + im(i,j,3)/3%sum2 = ( im(i,j,1) + im(i,j,2)+ im(i,j,3) )/3;%fprintf( " %.4f %.4f \n",sum1 ,sum2 ) ;endendim_eva = uint8(im_max);subplot(2,3,3);imshow(im_eva);title('平均值法');%--------------------------------------------------------% 加权平均法(rgb2gray所使⽤的权值)im_keyeva = ones(col,row);% 加权算法先转换为uint8计算效果更好im_keyeva = uint8(im_max);for i = 1:1:colfor j = 1:1:rowim_keyeva(i,j) = 0.2989*im(i,j,1) + 0.5870*im(i,j,2) + 0.1140*im(i,j,3) ;endendsubplot(2,3,5);imshow(im_keyeva);title('加权平均法');Processing math: 100%附matlab——rgb2gray源码function I = rgb2gray(X)%RGB2GRAY Convert RGB image or colormap to grayscale.% RGB2GRAY converts RGB images to grayscale by eliminating the% hue and saturation information while retaining the% luminance.%% I = RGB2GRAY(RGB) converts the truecolor image RGB to the% grayscale intensity image I.%% NEWMAP = RGB2GRAY(MAP) returns a grayscale colormap% equivalent to MAP.%% Class Support% -------------% If the input is an RGB image, it can be of any numeric type. The output% image I has the same class as the input image. If the input is a% colormap, the input and output colormaps are both of class double.%% Notes% -----% RGB2GRAY converts RGB values to grayscale values by forming a weighted % sum of the R, G, and B components:%% 0.2989 * R + 0.5870 * G + 0.1140 * B%% The coefficients used to calculate grayscale values in RGB2GRAY are% identical to those used to calculate luminance (E'y) in% Rec.ITU-R BT.601-7 after rounding to 3 decimal places.%% Rec.ITU-R BT.601-7 calculates E'y using the following formula:%% 0.299 * R + 0.587 * G + 0.114 * B%% Example% -------% I = imread('example.tif');%% J = rgb2gray(I);% figure, imshow(I), figure, imshow(J);%% indImage = load('clown');% gmap = rgb2gray(indImage.map);% figure, imshow(indImage.X,indImage.map), figure, imshow(indImage.X,gmap);%% See also RGB2IND, RGB2LIGHTNESS.% Copyright 1992-2020 The MathWorks, Inc.narginchk(1,1);isRGB = parse_inputs(X);if isRGBI = matlab.images.internal.rgb2gray(X);else% Color map% Calculate transformation matrixT = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]);coef = T(1,:);I = X * coef';I = min(max(I,0),1);I = repmat(I, [1 3]);end%--------------------------------------------------------------------------function is3D = parse_inputs(X)is3D = (ndims(X) == 3);if is3D% RGBif (size(X,3) ~= 3)error(message('MATLAB:images:rgb2gray:invalidInputSizeRGB'))end% RGB can be single, double, int8, uint8,% int16, uint16, int32, uint32, int64 or uint64validateattributes(X, {'numeric'}, {}, mfilename, 'RGB');elseif ismatrix(X)% MAPif (size(X,2) ~= 3 || size(X,1) < 1)error(message('MATLAB:images:rgb2gray:invalidSizeForColormap'))end% MAP must be doubleif ~isa(X,'double')error(message('MATLAB:images:rgb2gray:notAValidColormap'))endelseerror(message('MATLAB:images:rgb2gray:invalidInputSize'))end总结通过上⾯的代码结合实际的测试,果然,matlab⾃带的rgb2gray也就是加权平均的⽅法,对光线明暗的处理是最好的。
灰度图像处理技术在医学图像识别中的应用

灰度图像处理技术在医学图像识别中的应用近年来,随着技术的不断进步和医学影像学的不断发展,医学图像识别技术已经成为了医学领域中的重要研究方向之一。
而其中一个重要的技术支撑就是灰度图像处理技术。
灰度图像处理技术是将图像从彩色图像转换为黑白灰度图像的过程。
这个过程可以使我们更加有效地处理和分析出与我们所关注的部位有关的信息。
在医学领域中,灰度图像处理技术的应用具有极为重要的意义。
医生可以通过医学影像手段获取一个人身体内部的结构信息。
但是,对于不同的人、不同的部位,在同一时刻所获得的图像,有很多的差异性,可能会影响医生的诊断和治疗结果。
而灰度图像处理技术,可以将这些影像信息转化为灰度图像,使得医生能够通过图像中的明暗灰度快速识别出关键的信息,从而在诊断和治疗中更加精准。
同时,灰度图像处理技术还可以用来优化医学影像质量。
在影像采集过程中,常常会出现一些噪点、伪影和模糊等问题。
而灰度图像处理技术能够通过各种算法实现这些问题的自动消除。
比如,在利用CT影像进行检查时,灰度图像处理技术能够去除CT图像中的伪影,使CT图像呈现更加清晰的咳嗽病灶,从而更加准确地诊断肺炎。
此外,灰度图像处理技术还可以作为医学影像处理中的预处理环节使用。
在进行医学影像处理时,往往需要进行一系列的处理、筛选和分析过程。
而灰度图像处理技术能够将预处理步骤中的数据处理得更加精确,使得后续的分析和处理更具有针对性和有效性。
总之,灰度图像处理技术在医学图像识别领域中的应用,对于精准诊断和科学治疗都有着非常重要的作用。
未来,随着这项技术的不断发展和完善,相信它会在医学影像处理中发挥更加重要的作用,对人类的健康事业做出更加重要的贡献。
matlab灰度处理二值化处理

Matlab在图像处理领域有着广泛的应用,其中灰度处理和二值化处理是常见的图像处理方法之一。
本文将详细介绍Matlab中的灰度处理和二值化处理的原理和实现方法。
一、灰度处理1. 灰度图像的概念灰度图像是指图像中每个像素的灰度值介于0-255之间的图像。
在灰度图像中,0代表黑色,255代表白色,中间的灰度值代表了不同程度的灰色。
2. 灰度处理的原理灰度处理是将彩色图像转换为灰度图像的过程。
在Matlab中,可以通过以下公式实现灰度处理:灰度值 = 0.299 * R + 0.587 * G + 0.114 * B其中,R、G、B分别代表彩色图像中的红色、绿色和蓝色分量。
通过对每个像素的RGB分量进行加权求和,可以得到对应的灰度值。
3. 灰度处理的实现在Matlab中,可以使用`rgb2gray`函数实现灰度处理。
具体的代码如下:```matlab读取彩色图像rgbImage = imread('example.jpg');灰度处理grayImage = rgb2gray(rgbImage);显示灰度图像imshow(grayImage);```二、二值化处理1. 二值化图像的概念二值化图像是指将灰度图像中的像素值转换为0或255的图像。
在二值化图像中,像素值为0代表黑色,像素值为255代表白色。
2. 二值化处理的原理二值化处理的目的是将灰度图像中的灰度值转换为0或255。
一般可以通过设置一个阈值,将低于阈值的像素值设为0,将高于阈值的像素值设为255。
3. 二值化处理的实现在Matlab中,可以使用`im2bw`函数实现二值化处理。
具体的代码如下:```matlab读取灰度图像grayImage = imread('example_gray.jpg');设置阈值threshold = 128;二值化处理binaryImage = im2bw(grayImage, threshold/255);显示二值化图像imshow(binaryImage);```三、总结本文详细介绍了Matlab中灰度处理和二值化处理的原理和实现方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章绪论1.1数字图像数字图像,又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。
数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用计算机或数字电路存储和处理的图像。
像素(或像元,Pixel)是数字图像的基本元素,像素是在模拟图像数字化时对连续空间进行离散化得到的。
每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值。
通常,像素在计算机中保存为二维整数数阻的光栅图像,这些值经常用压缩格式进行传输和储存。
数字图像可以许多不同的输入设备和技术生成,例如数码相机、扫描仪、坐标测量机、seismographic profiling、airborne radar等等,也可以从任意的非图像数据合成得到,例如数学函数或者三维几何模型,三维几何模型是计算机图形学的一个主要分支。
数字图像处理领域就是研究它们的变换算法。
1.2设计平台本次设计采用的平台是MATLAB 7.0。
MATLAB编程语言被业界称为第四代计算机语言,它允许按照数学推导的习惯编写程序。
MATLAB7.0的工作环境包括当前工作窗口、命令历史记录窗口、命令控制窗口、图形处理窗口、当前路径选择菜单、程序编辑器、变量查看器、模型编辑器、GUI编辑器以及丰富的函数库和MATLAB附带的大量M文件。
MATLAB是由美国Math Works公司生产的一个为科学和工程计算专门设计的交互式大型软件,是一个可以完成各种计算和数据处理的、可视化的、强大的计算工具。
它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂计算的领域得到了广泛应用。
MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担,被称为第四代编程语言。
在MATLAB设计环境中,图像处理工具箱提供一套全方位的参照标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。
可用其对有噪声图像或退化图像进行去噪声或还原、增强图像以获得更高清晰度、提取特征、分析形状和纹理以及对两个图像进行匹配。
工具箱中大部分函数均以开放式MATLAB 语言编写。
这意味着可以检查算法、修改源代码和创建自定义函数。
图像处理工具箱在生物测定学、遥感、监控、基因表达、显微镜技术、半导体测试、图像传感器设计、颜色科学及材料科学等领域为工程师和科学家提供支持。
它也促进了图像处理技术的教学。
1.3发展前景在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。
这类图像通常显示为从最暗的黑色到最亮的白色的灰度,尽管理论上这个采样可以是任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。
灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。
但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。
在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。
彩色图像的灰度化技术在现代科技中应用越来越广泛, 例如人脸目标的检测与匹配以及运动物体目标的监测等等, 在系统预处理阶段, 都要把采集来的彩色图像进行灰度化处理, 这样既可以提高后续算法速度, 而且可以提高系统综合应用实效, 达到更为理想的要求。
因此研究图像灰度化技术具有重要意义。
第2章设计原理将彩色图转化成为灰度图的过程称为图像的灰度化处理。
彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255个中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。
而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其中一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。
灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。
在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B 的值叫做灰度值。
因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。
本设计采用三种方法对图像进行灰度化处理。
a)加权平均法根据重要性及其它指标,将三个分量以不同的权值进行加权平均。
由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,对RGB三分量进行加权平均能得到较合理的灰度图像。
b)平均值法求出每个像素点的R、G、B三个分量的平均值,然后将彩色图像中的这个平均值赋予给这个像素的三个分量。
c)最大值法将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。
本课程设计分别采用了以上三种设计方案,即加权平均法、平均值法和最大值法。
在MATLAB中,通过编程实现了彩色图像的灰度化处理。
第3章仿真3.1源代码首先,打开MATLAB软件,新建M文件。
M文件是包括MATLAB代码的文件。
然后,进行代码编写。
本次课程设计的源代码如下:MyYuanLaiPic = imread('F:/334/0.jpg'); %读取RGB格式的图像MyFirstGrayPic = rgb2gray(MyYuanLaiPic); %用已有的函数进行RGB到灰度图像的转换[rows,cols,colors] = size(MyYuanLaiPic); %得到原来图像的矩阵的参数SecGrayPic = zeros(rows,cols); %用得到的参数创建一个全零的矩阵,这个矩阵用来存储用下面的方法产生的灰度图像SecGrayPic = uint8(SecGrayPic); %将创建的全零矩阵转化为uint8格式,因为用上面的语句创建之后图像是double型的ThirdGrayPic=zeros(rows,cols);ThirdGrayPic=uint8(ThirdGrayPic);for i = 1:rowsfor j = 1:colssum1 = 0;sum2 = 0;for k = 1:colorssum1=sum1+MyYuanLaiPic( i,j,k )/3; %用均值法进行RGB到灰度图像的转换sum2=sum2+max(MyYuanLaiPic( i,j,k ));%用最大值法进行RGB到灰度图像转换endSecGrayPic(i,j) = sum1; %将得到的加权平均值作为对应像素点的灰度值ThirdGrayPic(i,j)=sum2;%将得到的简单平均值作为对应像素点的灰度值endendimwrite(SecGrayPic ,'F:/334/1.bmp','bmp'); %将转换后图像以bmp格式写入文件1.bmpimwrite(ThirdGrayPic,'F:/334/2.bmp','bmp'); %将转换后图像以bmp格式写入文件2.bmpfigure(1); %显示第1幅图像imshow(MyYuanLaiPic); %显示原来的RGB图像title('原图');figure(2); %显示第2幅图像imshow(MyFirstGrayPic); %显示经过系统函数运算过的灰度图title('图1');figure(3); %显示第3幅图像imshow(SecGrayPic); %显示均值法转化之后的灰度图像title('图2');figure(4); %显示第4幅图像imshow(ThirdGrayPic); %显示最大值法转化之后的灰度图像title('图3');3.2 代码分析该程序采用三种方法实现彩色图像的灰度化。
程序首先读取一RGB格式的图象,然后调用已有的函数rgb2gray()来实现彩色图像灰度化,此为方法一;继而,调用size函数读取原图像图像的尺寸,并以该尺寸构建一个全零矩阵来存储用下面的方法产生的灰度图像。
由于在此之前的语句创建之后图像为双精度型,因而我们采用uint8()将其转化成无符号整型。
然后对原图像中的像素逐点处理,首先采用的是均值法,即将每个像素点上的R,G,B分量取其平均,将处理后均值作为该像素点的灰度值输出,对应代码中MyYuanLaiPic( i,j,k )/3语句,在对所有像素点处理完毕后即可实现彩色图像的灰度化处理,此为方法二;最后我还采用了取最大值法,即调用max()函数读取像素点上RGB分量中的最大值作为该点灰度值输出,从而实现彩色图像的灰度化处理。
第4章彩色图像的灰度化处理本设计采用的三种方法,都实现了对彩色图像的灰度化处理。
下面分别对其作具体分析。
4.1加权平均法根据重要性及其它指标,将R、G、B三个分量以不同的权值进行加权平均。
由于人眼对绿色的敏感度最高,对蓝色敏感度最低。
因此,在MATLAB中我们可以按下式系统函数对RGB三分量进行加权平均能得到较合理的灰度图像。
GjjBii+,(j=(4-1)f+ijRi),(.011,(59.030.0)),()程序首先读取一个RGB格式的图象,然后调用已有的函数rgb2gray()来实现彩色图像灰度化。
4.2平均值法将彩色图像中的R、G、B三个分量的亮度求简单的平均值,将得到均值作为灰度值输出而得到灰度图。
其表达式见下式:jjiiGi=(4-2)+f+jR(),())3/B,(i),(j,()用size函数读取原图像图像的尺寸,并以该尺寸构建一个全零矩阵来存储用下面的方法产生的灰度图像。
由于在此之前的语句创建之后图像为双精度型,因而我们采用uint8()将其转化成无符号整型。
然后对原图像中的像素逐点处理,首先采用的是均值法,即将每个像素点上的R,G,B分量取其平均,将处理后均值作为该像素点的灰度值输出,对应代码中MyYuanLaiPic( i,j,k )/3语句,在对所有像素点处理完毕后即可实现彩色图像的灰度化处理。
4.3最大值法将彩色图像中的R、G、B三个分量中亮度的最大值作为灰度图的灰度值。
其表达式见下式:jGiijiBf=(4-3)jR)),(),,(i),,(j,()max(调用max()函数读取像素点上RGB分量中的最大值作为该点灰度值输出,从而实现彩色图像的灰度化处理。
稍作比较即可发现,以三种方法得到的处理结果并不完全相同,这是由于不同的处理方法对于灰度值的选取不同,考虑库函数rgb2gray(),其转化是依据亮度方程f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))来实现的,即依据人眼对不同颜色的敏感度不同,对RGB分量以不同系数的加权平均,得到较为合理的灰度化结果。