您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 图像处理灰度变换实验
一.实验名称:空间图像增强(一)一.实验目的1.熟悉和掌握利用matlab工具进行数字图像的读、写、显示、像素处理等数字图像处理的基本步骤和流程。2.熟练掌握各种空间域图像增强的基本原理及方法。3.熟悉通过灰度变换方式进行图像增强的基本原理、方法和实现。4.熟悉直方图均衡化的基本原理、方法和实现。二.实验原理(一)数字图像的灰度变换灰度变换是图像增强的一种经典而有效的方法。灰度变换的原理是将图像的每一个像素的灰度值通过一个函数,对应到另一个灰度值上去从而实现灰度的变换。常见的灰度变换有线性灰度变换和非线性灰度变换,其中非线性灰度变换包括对数变换和幂律(伽马)变换等。1、线性灰度变换1)当图像成像过程曝光不足或过度,或由于成像设备的非线性和图像记录设备动态范围太窄等因素,都会产生对比度不足的弊病,使图像中的细节分辨不清,图像缺少层次。这时,可将灰度范围进行线性的扩展或压缩,这种处理过程被称为图像的线性灰度变换。对灰度图像进行线性灰度变换能将输入图像的灰度值的动态范围按线性关系公式拉伸扩展至指定范围或整个动态范围。2)令原图像f(x,y)的灰度范围为[a,b],线性变换后得到图像g(x,y),其灰度范围为[c,d],则线性灰度变换公式可表示为ayxfbyxfabyxfccayxfabcddyxg),(),(),(,,]),([,),((1)由(1)式可知,对于介于原图像f(x,y)的最大和最小灰度值之间的灰度值,可通过线性变换公式,一一对应到灰度范围[c,d]之间,其斜率为(d-c)/(b-a);对于小于原图像的最小灰度值或大于原图像的最大灰度值的灰度值,令其分别恒等于变换后的最小和最大灰度值。变换示意图如图1所示。图1线性灰度变换示意图当斜率大于一时,变换后的灰度值范围得到拉伸,图像对比度得到提高;当斜率小于一时,变换后的灰度值范围被压缩,最小与最大灰度值的差变小,图像对比度降低;当斜率等于一时,相当于对图像不做变换。3)由上述性质可知,线性灰度变换能选择性地加强或降低特定灰度值范围内的对比度,故线性灰度变换同样也可做分段处理:对于有价值的灰度范围,将斜率调整为大于一,用于图像细节;对于不重要的灰度范围,将图像压缩,降低对比度,减轻无用信息的干扰。最常用的分段线性变换的方法是分三段进行线性变换。在原图像灰度值的最大值和最小值之间设置两个拐点,在拐点处,原图像的灰度值分别为r1,r2,该拐点对应的变换后的图像的灰度值分别为s1,s2,另外,取原图像灰度的最小值为r0,最大值为rm,对应的变换后的灰度值分别为s0,sm。则分段线性灰度变换公式为mmmryxfrsryxfrrssryxfrsryxfrrssryxfrsryxfrrssyxg),(,]),([),(,]),([),(,]),([),(222222111121210000101(2)调整公式中的各个参数,即可得到不同的变换效果4)在线性灰度变换中,有一种特殊的变换,叫做图像反色。通过图像反色变换,每一个像素点的变换前后的灰度值之和为白色(255)。图像反色的变换公式为),(1),(yxfLyxg(3)当L取为256时,实现图像反转变色2、非线性灰度变换除了图像灰度的线性变换外,还有非线性灰度变换。非线性灰度变换不是对图像的所有灰度值进行拉伸,一部分被拉伸,另一部分则会被压缩。非线性灰度变换在整个灰度值范围内采用统一的变换函数。比较常见的有对数变换和幂律(伽马)变换等。1)对数变换设原图像为f(x,y),变换后的图像为g(x,y),对数变换的变换函数为)),(1log(),(yxfcyxg(4)(4)式中,c是一个比例因子,log是求以e为底的数值的对数,原图像灰度值加1的目的是保证对数变化对于任何灰度值都有意义。c取适当的值,可得到对数变换的函数图像如图2所示。图2对数变换函数曲线由图2可知,通过对数变换,对于较低的灰度值起到较大程度的拉伸作用,而对于较高的灰度值起到压缩作用,从而将整幅图像的灰度值均匀化。2)幂律(伽马)变换伽马变换可通过调节幂指数参数来改变其变换特性,设f(x,y)和g(x,y)分别为变换前后的图像,γ为幂指数,c为比例系数,则伽马变换的公式如下),(),(yxcfyxg(5)对于c为正值的情况,当γ1时,伽马变换将低灰度值压缩,高灰度值拉伸;当γ1时,伽马变换将低灰度值拉伸,高灰度值压缩,类似对数变换;当γ=1时,等同于对原图像进行线性变换。伽马变换的曲线图如图3所示图3不同γ下的伽马变换曲线图(二)直方图处理1、直方图的两种定义直方图是反映一幅图像中的灰度级与出现这种灰度级的次数或概率之间的关系的统计图表。直方图有两种定义,分别如下。1)定义1:一幅灰度级范围在[0,L-1]的数组图像的直方图定义为以下离散函数:kknrh)((6)其中rk是第k个灰度级,nk是图像中灰度级为rk的像素个数,k=0,1,2...L-1。2)定义2:一幅灰度级范围[0,L-1]的数组图像的直方图定义为以下离散函数:nnrpkk)((7)其中rk和nk的意义同定义1,n是指图像的像素总数。此处,直方图便是图像中不同灰度级像素出现的概率。通过观察一幅图像的直方图可以判断这幅图像的对比度和清晰度,也可以掌握图像的明暗程度。但是直方图只能反映灰度值出现的概率,并不能反映各个灰度值在空间的分布情况。2、直方图的均衡化直方图的均衡化是将原图像的直方图通过变换函数修正为均匀的直方图,然后按照均衡后的直方图修正原图像。图像均衡化后,理论上,图像的直方图完全平直,即各个灰度级具有近似相同的出现频率。直方图均衡化的作用就是实现了灰度级的均匀分布,增加了图像的对比度,使得图像看起来更清晰。直方图均衡化的原理和方法如下。设r和s分别表示归一化了的原图像灰度和经直方图修正后的图像灰度。在[0,1]区间内,对任意一个灰度级r,可通过一种对应法则对应到灰度级s,设这种对应法则为T,则)(rTs(8)为了使变换后的灰度仍保持从暗到亮的单一变化顺序,且变换范围与变换前保持一致,以避免整体变量或变暗,一般规定:①正变换,在0≤r≤1中,T(r)为单调递增函数,且0≤T(r)≤1;②反变换,r=T-1(s),T-1(s)也为单调递增函数,即0≤s≤1。考虑到灰度变换不影响像素的位置分布且不增减像素数目,所以有rdrrprT0)()((9)而实际图像是有许多离散的像素点和离散的灰度级构成的,对于离散的情况,均衡化后的效果将受到一定限制,不一定绝对平整。离散情况下的均衡化方法如下。设一幅图像的像素总数为n,分为L个灰度级。若nk为第k个灰度级出现的频数,则第k个灰度级出现的概率为p(rk)=nk/n,其中,0≤rk≤1,k=0,1,2,...,L-1。变换后的灰度为kjjkjjkknnrprTs00)()((10)可以看出,离散情况下的直方图均衡化是将连续的积分转化为离散的叠加求和,可近似得到直方图平直的效果。三.实验器材PC,MATLAB软件(各版本),若干幅图像四.实验步骤(一)数字图像的灰度变换1、线性灰度变换1)在MATLAB中用imread函数读取原图像,将其赋值给某个矩阵,如I1,进而用imshow函数显示。2)检测图像的通道数目,即检测矩阵的高度,若超过了1个通道,将矩阵灰度化,变为单通道的灰度图。3)将矩阵中所有的8位整形元素转换为double型,便于计算的更精确,特别是进行除法运算的时候。4)用max函数和min函数得到原图像中灰度的最大值和最小值。5)预分配一个内存给矩阵I2,对矩阵中的每一个元素进行循环检测,并将每一个元素的灰度值带入线性灰度变换公式,即公式(1),其中,令d=250,c=10。将每一个变换后的像素灰度存入矩阵I2的相应元素位置上。6)将变换后的矩阵转换为8位整形,并将其显示出来,以另一个文件名的形式保存。7)绘制变换前后两幅图像的灰度直方图,将其与相应的图像一起,用一张图展示出来。8)绘制函数曲线。具体实验的流程图如图4所示。图4线性灰度变换实验流程图2、非线性灰度变换1)在MATLAB中用imread函数读取原图像,将其赋值给某个矩阵,如I1,进而用imshow函数显示。2)检测图像的通道数目,即检测矩阵的高度,若超过了1个通道,将矩阵灰度化,变为单通道的灰度图。3)将矩阵中所有的8位整形元素转换为double型,便于计算的更精确,特别是进行求对数运算的时候。5)预分配内存给矩阵I2,I3,用于存放对数变换和伽马变换后的图像灰度值。4)对数变换:取比例系数c=5,对原图像的每一个像素进行循环检测,并将其灰度值代入公式(4)进行对数变换,将变换后的灰度值存在矩阵I2的相应元素位置上。5)对图像进行显示,由于经过对数变换后,所有的灰度值均处于较低水平,直接显示将导致图像过暗不便观察。所以,采用MATLAB内部的拉伸方式将图像显示,函数为imshow(I2,[])。6)伽马变换:合理设置比例系数和指数,以免变换后的灰度值超过255。取比例系数c=1/255,指数γ=2,对原图像的每一个像素进行循环检测,并将其灰度值代入公式(5)进行伽马变换,将变换后的灰度值存在矩阵I3的相应元素位置上。7)对图像进行显示,也采用MATLAB内部的拉伸方式将图像显示,函数为imshow(I3,[])。8)利用plot函数和holdon命令将对数变换和伽马变换的函数曲线绘制在同一幅坐标图上。对数变换和伽马变换的实验流程图如图5所示。图5非线性灰度变换流程图说明:本实验将对数变换和幂律(伽马)变换均做了练习。(二)直方图处理1)在MATLAB中用imread函数读取原图像,将其赋值给某个矩阵,如I1,进而用imshow函数显示。2)检测图像的通道数目,即检测矩阵的高度,若超过了1个通道,将矩阵灰度化,变为单通道的灰度图。3)统计矩阵的行列数。4)利用统计带有某个灰度的像素的数目绘制直方图。在MATLAB中,对灰度级0-255依次寻找,可用find函数找到带有相应灰度的像素的位置,再用length函数求出这些位置的数目,即像素的个数,结合bar函数或stem函数绘制原图像的灰度直方图;将各灰度的像素个数除以总像素数,得到第二种定义下的灰度直方图,即灰度出现概率,绘制。5)对第二种定义下的灰度直方图进行操作。从灰度为0开始,对于该灰度出现的概率,与之前的灰度概率总和进行叠加,直到255,总和为1。6)用255与每一个灰度所在的概率和相乘,再四舍五入,将不同的概率归并为同一概率。7)对照该对应法则,将原图中相应位置的灰度进行替换,图像得到均衡化,对比度得到提高,将图像显示出来。8)再利用之前的方法,绘制均衡化后的灰度直方图,分析结果找到规律。直方图均衡化的流程图如图6所示。图6直方图均衡化流程图五.实验结果及分析(一)数字图像的灰度变换1、线性灰度变换实验结果:1)将原图片和线性变换后的图片以及其灰度直方图绘制在同一张图片上,得到如图7所示结果。图7线性灰度变换前后的图像和灰度直方图由实验结果可知,原图片的灰度值情况如下:最小灰度为49,最大灰度为181,较多出现的灰度值主要集中在120到160之间。实验中,我们规定,变换后的图像的最低灰度值为10,最高灰度值为250,实现线性灰度变换,得到图7中的结果。2)绘制本实验中的线性灰度变换函数曲线。本实验中线性灰度变换的函数曲线如图8所示。图8线性灰度变换的曲线图由图8知,当灰度小于等于49时,变换后的灰度值等于10;当灰度值大于等于181时,变换后的灰度值等于250;当灰度值介于49和181之间时,变换后的灰度值通过线性变换函数与原灰度值一一对应。结果分析:线性灰度变化将原图像的每一个灰度进行了线性变换,拉伸(或压缩了)原图像的灰度范围,但是不改变具有各灰度值的像素的数量,不改变灰度的分布,即不改变灰度直方图的形状。本实验中,将灰度范围做了线性的拉伸变换从而扩大了灰度范围,故原图像的最高灰度值增大,最低灰度值减小
本文标题:图像处理灰度变换实验
链接地址:https://www.777doc.com/doc-2558493 .html