数字图像处理实验指导书_第1页
数字图像处理实验指导书_第2页
数字图像处理实验指导书_第3页
数字图像处理实验指导书_第4页
数字图像处理实验指导书_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字图像处理实验指导书实验一 数字图像文件基本类型转换一、实验目的 1. 了解Matlab支持4种图像类型:灰度图像、二值图像、索引图像和RGB图像。2. 学会运用MATLAB实现4种类型之间的转换。 3. 熟练掌握在MATLAB中如何读取和存储图像。 4. 掌握图像间的基本运算。二、实验原理数字图像处理就是将图像信号转换成数字格式并利用计算机对其进行一系列的操作,以得到所期望的结果。它基本的步骤可分为图像信息的获取、存储、处理、传输、输出和显示。数字图像处理的基本方法包括图像数字化、图像变换、图像增强、图像恢复、图像压缩编码、图像分割、图像分析与描述和图像识别分类。应用领域则是非常广泛,主要

2、包括有宇宙探测、通信工程、遥感、生物医学、工业生产、军事公安、信息安全和信息检索等。1、数字图像的特点相比于语音等其他信号,图像具有信息量大、占用频带宽的特点。在图像通信中,有限信道根本无法实时传输图像,这对图像频带压缩提出了很高的要求。像素间相关性大。在同一帧内各相邻像素间具有相同或相近的灰度可能性很大,而运动图像的相邻帧相关性更大。这些都说明数字图像中存在着大量的冗余,通过减少或消除这些冗余,进行图像压缩的可能性很大。 在数字图像处理中,一方面要充分考虑人的视觉特性,简化处理过程。2、 图像的读取及存储 图像的读取读取图像函数:imread()格式:变量名=imread(路径文件名,文件格

3、式)例:x=imread('city.jpg', 'jpg'); 需要注意的是这是简略的写法,说明这幅图片在MATLAB的默认路径下。 图像的保存将图像写到文件 imwrite()格式:imwrite(变量名,新文件名)例: imwrite(x,'new_image.bmp') 此时图片会自动存入默认路径下。将图像用save命令以mat文件形式保存到磁盘中,以后可用load命令调用。格式:save 保存的文件名 变量名(图像) load 保存的文件名 3、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐

4、标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1-1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。作为MATLAB基本数据类型的数值数组本身十分适于表

5、达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。图1-1 图像的采样和量化根据图像数据矩阵解释方法的不同,MATLAB把其处理为4类:Ø 索引图像(Indexed images)Ø 灰度图像(Intensity images)Ø 二值图像(Binary images)Ø RGB图像(RGB images)MATLAB图像处理工具箱为开发者提供了丰富的图像处理函数,内容包括图像I/O、图像空间变换、图像配准、图像变换、线性滤波及滤波器设计、邻域与块处理、图像增强、图像模糊消除、感兴趣区域操作和图像形态学分析等。 索引图像索引图像包括图像矩阵与颜色

6、图数组。其中颜色图是按照图像中颜色值进行排序后的数组。对于每个象素,图像矩阵包含一个值,这个值就是颜色图数组中的索引。索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。 颜色图为m*3双精度值矩阵,各行分别指定红、绿、蓝单色值。图像矩阵与颜色图的关系依赖于图像矩阵是双精度还是无符号8位整数(unit8)。 灰度图像 灰度图像也成为亮度图像,一幅灰度。图像是一个数据矩阵,其归一化的取值表示亮度

7、。若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是0,255和0,65536。若图像是double类,则像素取值就是浮点数。规定双精度型归一化亮度图像的取值范围是0,1 二值图像二值图像也成为二进制图像,一幅二值图像是一个取值只有0和1的逻辑数组。而一幅取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像。使用logical函数可以把数值数组转化为二值数组或逻辑数组。创建一个逻辑图像,其语法为: B=logical(A)其中,B是由0和1构成的数值数组。要测试一个数组是否为逻辑数组,可以使用函数: islogical(c)若C是逻辑数组,则该函数返回

8、1;否则,返回0。 RGB图像一幅RGB图像就是彩色像素的一个M×N×3数组,M和N表示图像像素的行列数。其中每一个彩色相似点都是在特定空间位置的彩色图像相对应的红、绿、蓝三个分量。按照惯例,形成一幅RGB彩色图像的三个图像常称为红、绿或蓝分量图像。令fR,fG和fB分别代表三种RGB分量图像。一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像: rgb_image=cat(3,fR,fG,fB)在操作中,图像按顺序放置。 4、数据类和图像类型间的转化 数据类型间的转换表1-1中列出了MATLAB表示像素所支持的各种数据类。表中的前8项称为数值数据类,第9项

9、称为字符类,最后一项称为逻辑数据类。工具箱中提供了执行必要缩放的函数(见表1-2)。以在图像类和类型间进行转化。表1-1 MATLAB和IPT支持数据类型名称描述double双精度浮点数,范围为uint8无符号8比特整数,范围为0 255uint16无符号16比特整数,范围为0 65536uint32无符号32比特整数,范围为0 4294967295int8有符号8比特整数,范围为-128 127int16有符号16比特整数,范围为-32768 32767int32有符号32比特整数,范围为-2147483648 2147483647single单精度浮点数,范围为char字符logical值

10、为0或1表1-2 格式转换函数名称将输入转化为有效的输入图像数据类im2uint8uint8logical,uint8,uint16和doulbeim2uint16uint16logical,uint8,uint16和doulbemat2graydouble,范围为0 1doubleim2doubledoublelogical,uint8,uint16和doulbeim2bwlogicaluint8,uint16和double 图像类型间的转换 MATLAB支持BMP(windows位图格式)、JPG(联合图像专家组格式)、PCX(windows画刷格式)、PNG(可移动网络图形格式)、TIF

11、(编制图像文件格式)等多种图像文件格式。 灰度图像与索引图像的相互转换:gray2ind( ),ind2gray( )。 格式: X,MAP=gray2ind(I,n) 其中,I表示存放灰度图像的变量, n为颜色值(缺省64)。 I=ind2gray(X,MAP) 其中,X表示图像矩阵变量 , MAP表示颜色图数组变量 。 RGB图像与灰度图像的转换:rgb2gray( )。 格式: I=rgb2gray(RGB) 表示将真彩图像RGB转换为灰度级亮度图像I。注意!灰度图像是不能转成RGB图像的。 RGB图像与索引图像的相互转换:rgb2ind( ),ind2rgb( )。 格式: X,MAP

12、=rgb2ind(RGB) RGB=ind2rgb(X,MAP) 其中X表示索引图像变量名,MAP为索引图像调色板。 将索引图像、灰度图像、 RGB图像转换为二值图像:im2bw( )。 需要注意的是,只有灰度图像可以直接调用im2bw( )来转成二值图像,而其他类型的图像都需要先转成灰度级图像再转成二值图像。输出图像在输入图像所有亮度小于给定值(level)像素点处均为0,在其他地方均为1。level值得取值范围为0,1。 格式:BW=im2bw(I,level) BW=im2bw(X,MAP,level) BW=im2bw(RGB,level) 5、图像的运算和空间域操作 图像的运算 图像

13、的代数运算是图像的标准算术操作的实现方法,是两幅输入图像之间进行的点对点的加、减、乘、除运算后得到输出图像的过程。如果输入图像为A(x,y)和B(x,y),输出图像为C(x,y),则图像的代数运算有如下四种形式: C(x,y) = A(x,y) + B(x,y) C(x,y) = A(x,y) - B(x,y) C(x,y) = A(x,y) * B(x,y) C(x,y) = A(x,y) / B(x,y)图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算术操作,还能为许多复杂的图像处理提供准备。例如,图像减法就可以用来检测同一场景或物体生产的两幅或多幅图像的误差。使用MA

14、TLAB的基本算术符(+、-、*、/ 等)可以执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型。为了更方便地对图像进行操作,MATLAB图像处理工具箱包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。下表列举了所有图像处理工具箱中的图像代数运算函数。表1-3 图像处理工具箱中的代数运算函数函数名功能描述Imabsdiff两幅图像的绝对差值Imadd两幅图像的加法Imcomplement补足一幅图像Imdivide两幅图像的除法Imlincomb计算两幅图像的线性组合Immultiply两幅图像的乘法imsubtract两幅图像的减法使用图像处理工具箱中的图像

15、代数运算函数无需再进行数据类型间的转换,这些函数能够接受uint8和uint16数据,并返回相同格式的图像结果。虽然在函数执行过程中元素是以双精度进行计算的,但是MATLAB工作平台并不会将图像转换为双精度类型。代数运算的结果很容易超出数据类型允许的范围。例如,uint8数据能够存储的最大数值是255,各种代数运算尤其是乘法运算的结果很容易超过这个数值,有时代数操作(主要是除法运算)也会产生不能用整数描述的分数结果。图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。例如,如果数据类型是uint8,那么大于255

16、的结果(包括无穷大inf)将被设置为255。图像可以和常数进行运算,它表示对图像中的每一个像素点来进行相应的操作,相当于把矩阵中所有元素都进行扩大或缩小的操作。所以,如果是图像和图像间的逻辑运算,必须要让两幅图的尺寸,也就是长和宽保持一致,相当于操作的两个数组是同样的大小,即维数相同,并且运算后会得到相同维数的数组,也就是说进行了逻辑运算以后的图像尺寸并不会改变。能够进行逻辑运算的两幅图像除了要满足尺寸一致这个条件以外,还需要满足图像类型一致的条件。¨ 图像加法(函数:imadd()¨ 功能:实现两幅图像相加或图像加上一个常数两幅图像的像素值相加时产生的结果很可能超过图像数

17、据类型所支持的最大值,尤其对于uint8类型的图像,溢出情况最为常见。当数据值发生溢出时,imadd函数将数据截取为数据类型所支持的最大值,这种截取效果称之为饱和。为了避免出现饱和现象,在进行加法计算前最好将图像转换为一种数据范围较宽的数据类型。例如,在加法操作前将uint8图像转换为uint16类型。¨ 图像减法(函数:imsubtract()¨ 功能:实现两幅图像相减或图像减去一个常数。 图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。图像减法可以作为许多图像处理工作的准备步骤。例如,可以使用图像减法来检测一系列相同场景图像的差异。图像减法与阈

18、值化处理的综合使用往往是建立机器视觉系统最有效的方法之一。在利用图像减法处理图像时往往需要考虑背景的更新机制,尽量补偿由于天气、光照等因素对图像显示效果造成的影响。减法操作有时会导致某些像素值变为一个负数,对于uint8或uint16类型的数据,如果发生这种情况,那么imsubtract函数自动将这些负数截取为0。为了避免差值产生负值,同时避免像素值运算结果之间产生差异,可以调用函数imabsdiff。imabsdiff将计算两幅图像相应像素差值的绝对值,因而返回结果不会产生负数。该函数的调用格式与imsubtract函数类似。¨ 图像乘法(函数:immultiply()¨

19、 功能:实现两幅图像相乘或图像的亮度缩放。两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。一幅图像乘以一个常数通常被称为缩放,这是一种常见的图像处理操作。如果使用的缩放因子大于1,那么将增强图像的亮度,如果因子小于1则会使图像变暗。缩放通常将产生比简单添加像素偏移量自然得多的明暗效果,这是因为这种操作能够更好地维持图像的相关对比度。此外,由于时域的卷积或相关运算与频域的乘积运算对应,因此乘法运算有时也被作为一种技巧来实现卷积或相关处理。uint8图像的乘法操作一般都会发生溢出现象。Immultiply函数将溢出的数据截取为数据类型的最大值。为了避免产生溢出现象,可以在执行乘法操作

20、之前将uint8图像转换为一种数据范围较大的图像类型,例如uint16。¨ 图像除法(函数:imdivide()¨ 功能:实现两幅图像相除或图像的亮度缩放。除法运算可用于校正成像设备的非线性影响,这在特殊形态的图像(如断层扫描等医学图像)处理中常常用到。图像除法也可以用来检测两幅图像间的区别,但是除法操作给出的是相应像素值的变化比率,而不是每个像素的绝对差异,因而图像除法也称为比率变换。 图像的空间域操作 图像的缩放(函数:imresize()格式:J=imresize(I,n),其中 n为缩放比例 图像的旋转(函数:imrotate()格式:J=imrotate(I,旋转

21、度数,方法, crop) 其中旋转度数一般在0,360之间,方法一般来说有3种 'nearest'(最邻近插值法) ,   'bilinear' (双线性插值法),   'bicubic'(三次卷积插值法)。不同的插值方法得到的旋转图像有细微的差,缺省时 matlab默认为选最邻近插值法,此时图像会有一定的失真,这个失真主要是因为matlab在计算每个点的新坐标的时候得到的数值不是整数,要去整所造成的。最后如果加上crop表示旋转完成以后,将新得到的图像裁剪到跟原来同样的大小。 图像的剪切(函数:

22、imcrop()格式:J=imcrop(I,xmin ymin xmax ymax,) xmin ymin xmax ymax表示剪切时,从原图什么地方开始和终止的坐标。三、实验例题 1、任选一幅图像对其进行各种图像变换a=imread('city.jpg','jpg'); subplot(2,2,1)subimage(a)title('原彩色图像')i=rgb2gray(a);subplot(2,2,2)subimage(i)title('灰度图像')X,MAP=rgb2ind(a,256);subplot(2,2,3)subi

23、mage(X)title('索引图像')2、为图像中每个像素增加亮度 x=imread('aaa.tif'); I=rgb2gray(x); J=imadd(I,100); subplot(1,2,1); subimage(I); subplot(1,2,2); subimage(J); 四、实验报告要求 1、简述实验目的及实验原理。2、选取两幅大小一样的图像,首先转换成灰度图像,然后对其中一幅进行旋转(旋转角度自定),再对两幅图像进行代数运算,并附上程序及处理前后的图像。3、对实验结果进行总结。实验二 数字图像变换一、实验目的 1、了解图像变换的意义和手段2、

24、熟悉傅立叶变换的基本性质3、熟练掌握FFT变换方法及应用4、通过实验了解二维频谱的分布特点5、掌握图片的压缩技术原理二、实验原理1、 应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。离散傅里叶变换具有许多重要的性质,这些性质为实际运算提供了极大的方便。例如,根据变换核的可分离性,二维离散傅里叶变换可以通过两次一维离散傅里叶变换来实现;根据周期性

25、,只需要一个周期就可以将整个变换完全确定;根据共轭对称性,只需要半个周期的变换就可以获得整个频谱。 图像傅里叶变换是将图像从图形的空间变换到频率空间,从而可利用傅里叶频谱特性进行图像处理,使运算变得简单。2、 傅立叶(Fourier)变换的定义对于二维信号,二维Fourier变换定义为:逆变换:二维离散傅立叶变换为:逆变换:图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。3、 离散傅里叶变换 计算机处理傅立叶变换用离散傅立叶变换,输入/输出数据均为离散,便于计算机处

26、理。在使用离散傅立叶变换时,可以使用其快速算法FFT。MATLAB提供的相关函数:FFT、FFT2、FFTn。对二值图像进行傅里叶变换以后观察其频谱,我们会发现直流成分主要集中在右上角,分辨率比较低。所以必须通过fftshift函数提供补零和直流成分显示区域调整后得到调整,再进行观察。4、 离散余弦变换使用傅立叶变换时存在一个问题,它的参数均为复数,数据描述上相当于实数的两倍,也就是说数据的计算量比较大,而离散余弦变换较好的解决了这个问题。离散余弦变换,根据实的偶函数的离散傅里叶变换只包含余弦项(实部)的特性,可将实图像构造成实的偶函数,再求它的离散傅里叶变换,从而构成所谓的离散余弦变换(DC

27、T)。它是实的正交变换,变换核可分离且具有对称性,可以通过傅里叶变换的实部求得,所以具有快速算法。DCT变换具有良好的信息压缩能力,因而在图像的压缩编码等领域具有广泛的应用。离散余弦的MATLAB实现一种是基于图像离散余弦变换的算法,这是通过MATLAB工具箱提供的dct2 函数和idct2函数实现的;另一种是DCT变换矩阵方法。变换矩阵方法非常适合做8*8 或16*16 的图像块的DCT 变换,工具箱提供了dctmtx 函数来计算变换矩阵。离散余弦变换具有很强的“能量集中”特性,而且能量主要集中在左上角处,因此在实际图像应用中,能量不集中的地方可在余弦编码中忽略。于是我们可以通过对mask矩

28、阵进行变换来实现,即将mask矩阵左上角置1,其余全部置0。然后通过离散余弦反变换后,图像得以恢复,这种处理方法叫做图像的压缩。5、 沃尔什变换由于傅里叶变换和余弦变换的变换核由正弦、余弦函数组成,运算速度受影响。在特定问题中,往往引进不同的变换方法,以求运算简单且变换核矩阵产生方便。沃尔什变换中的变换矩阵简单(只有1和1),占用存储空间少,产生容易,有快速算法,所以在需要实时处理大量数据的图像处理问题中,应用广泛。6、 图像的压缩离散余弦变换是先将整体图像分成N×N像素块,然后对N×N像素块逐一进行离散余弦变换。由于大多数图像的高频分量较小,相应于图像高频分量的系数经常为

29、零,加上人眼对高频成分的失真不太敏感,所以可以用更粗的量化。这样起到压缩图像的目的,使传输的数码率要远远小于实际图像的数码率,接收端通过反变换得到的恢复图像也不会有明显的改变。图像压缩主要任务是取不同的DCT系数,观察即满足不影响图像质量有能达到较大的压缩率。对图像进行分块处理时,我们会用到函数blkproc( ) 。调用格式: B=blkproc(A,m n,fun, parameter1, parameter2, .) B=blkproc(A,m n,mborder nborder,fun,.) B=blkproc(A,'indexed',.)参数说明: m n:图像以m*

30、n为分块单位,对图像进行处理(如8*8) Fun:应用此函数对分别对每个m*n分块的像素进行处理 parameter1, parameter2: 要传给fun函数的参数 mborder nborder:对每个m*n块,上下进行mborder个单位的扩充,左右进行nborder个单位的扩充,扩充的像素值为0,fun函数对整个扩充后的分块进行处理。 这里:fun='P1*x*P2',fun的参数P1,P2,将T,T'传递给fun的参数,即:P1=T,P2=T'。三、实验例题 1、有一矩形函数f(m,n),矩形区域为1,其余为0,对该矩形作傅立叶变换。clear;N=

31、100;f=zeros(50,50);f(15:35,23:28)=1;subplot(2,1,1)imshow(f)subplot(2,1,2)F=fft2(f);imshow(log(abs(F)2、fftshift函数实现补零操作和改变图象显示象限N=100;f=zeros(50,50);f(15:35,23:28)=1;subplot(2,1,1)imshow(f)F=fft2(f,256,256);F2=fftshift(F);subplot(2,1,2)imshow(log(abs(F2);3、对图像进行离散余弦变化,观察其余弦变换系数及余弦反变换后恢复图像。 将变换后小于10的元

32、素忽略I = imread('cameraman.tif') ; %装入原始图像subplot(3,1,1); imshow(I);J = dct2(I) ; %对I 进行二维DCTsubplot(3,1,2); imshow(log(abs(J),); %图像大部分能量集中在左上角处J (abs (J ) < 10) = 0 ; %将DCT 变换值小于10的元素设为0K= idct2 (J ) / 255 ; %对逆DCT 变换值归一化subplot(3,1,3); imshow(K); 将变换后小于255的元素忽略I = imread('cameraman.t

33、if') ; %装入原始图像figuresubplot(1,3,1); imshow(I);J = dct2(I) ; %对I 进行二维DCTsubplot(1,3,2); imshow(log(abs(J),); %图像大部分能量集中在左上角处J (abs (J ) < 255) = 0 ; %将DCT 变换值小于255的元素设为0K= idct2 (J ) / 255 ; %对逆DCT 变换值归一化subplot(1,3,3); imshow(K);4、 选取一幅图像,取不同的压缩度,对其进行压缩处理。A=imread('aaa.tif'); I=rgb2gr

34、ay(A);trueImage=im2double(I); %转换图像矩阵为双精度型imshow(trueImage); title('原始图像');dctm=dctmtx(8); %计算离散余弦变换imageDCT=blkproc(trueImage,8 8,'P1*x*P2',dctm,dctm.'); %对图像I 的每个不同8*8数据块应用矩阵式P1*x*P2进行处理。 M10=1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

35、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; %二值掩模,用来压缩DCT 的系数newImage2=blkproc(imageDCT,8 8,'P1*(x.*P2)*P3',dctm',M10,dctm);figure;imshow(newImage2); title('压缩图像 M10');A=imread('aaa.tif'); I=rgb2gray(A);trueImage=im2double(I); %转换图像矩阵为双精度型imshow(trueImage); title('原始图像

36、');dctm=dctmtx(8); %计算离散余弦变换imageDCT=blkproc(trueImage,8 8,'P1*x*P2',dctm,dctm.'); %对图像I 的每个不同8*8数据块应用矩阵式P1*x*P2进行处理。 M10=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0; %二值掩模,用来压缩DCT 的系数newImage2=blkpro

37、c(imageDCT,8 8,'P1*(x.*P2)*P3',dctm',M10,dctm);figure; imshow(newImage2); title('压缩图像 M10');四、实验报告要求 1、简述实验目的及实验原理。2、调试参考程序,掌握工具函数的使用方法。3、验证图像的傅立叶变换的旋转性质。(方法:对正方形图像进行旋转操作,观察原图的傅立叶频谱与旋转后的傅立叶频谱的对应关系。)4、选取图像,利用余弦变换,观察变换后图像的变换情况。(图像分块压缩)5、对实验结果进行总结。实验三 数字图像增强一、实验目的 1、了解图像增强的目的及意义,加深对

38、图像增强的感性认识,巩固所学理论知识。2、学会对图像直方图的分析。3、掌握直接灰度变换的图像增强方法。4、掌握图片的滤波。二、实验原理 术语空间域指的是图像平面本身,在空间与内处理图像的方法是直接对图像的像素进行处理。空间域处理方法分为两种:灰度级变换、空间滤波。空间域技术直接对像素进行操作其表达式为g(x,y)=Tf(x,y)其中,f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定领域内。定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域,。此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该

39、区域会包含不同的领域。T应用于每个位置(x,y),以便在该位置得到输出图像g。在计算(x,y)处的g值时,只使用该领域的像素。灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个亮度或灰度级变化函数。当处理单设(灰度)图像时,这两个术语可以互换。由于亮度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:s=T(r)其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主

40、要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。本实验以直方图均衡化增强图像对比度的方法为主要内容。 一般来说,图像增强的目的有两点:一是改善图像的视觉效果,提高清晰度,二是增强感兴趣部分,提高可懂度。图像增强包括直接变换增强、滤波增强、变换增强。直接变换增强也称为灰度级调整,是将图像的灰度级映射到一个新的范围,在新的范围内能够容纳图像多数的灰度级,使图像的对比更加鲜明。滤波增强就是消除噪声的图像增强方法,有均值滤波、中值滤波、自适应滤波。变换增强称为频域增强,包括低通、高通滤波。 空间域增强空间域增强

41、是指在空间域中,通过线性或非线性变换来增强构成图像的像素。增强的方法主要分为点处理和模板处理。点处理就是作用在单个像素,包括图像灰度变换、直方图处理和伪彩色处理等。模板处理是指作用于像素领域的处理方法,包括图像平滑和图像锐化等技术。 频率域增强频率域增强是增强技术的重要组成部分,它通过傅立叶变换,可以把空间域混叠的成分在频率域中分离出来,从而提取或滤去相应的图像成分,达到图像增强的目的。这一过程中的核心基础为傅立叶变换。频率域图像增强技术主要有:频率域平滑技术(低通滤波)、频率域锐化技术(高通滤波)和同态滤波等。1、 对比度调整 颜色图变亮或变暗函数: brighten(beta) 用于调整灰

42、度值或颜色图,0<beta<1增量,反之变暗 调用格式:MAP=brighten(beta) 返回当前使用的颜色图的更亮或更暗变换后的颜色图MAP,但不改变现有的显示。 NEWMAP=brighten(MAP,beta) 返回指定颜色图的更亮或更暗变换后的颜色图,但不改变显示。 brighten(FIG,beta) 增强图FIG的所有物体。 对比度调整函数:imadjust( ) 用于调整灰度值或颜色图,其基本调用格式如下: J=imadjust(I,low high,bottom top,gamma) 将灰度图像I转换为图像J,使值从low到high与从bottom到top相匹配

43、。值大于high或 小于low的被减去。即小于low与bottom相匹配,大于high的与top相匹配。如果矩阵为空矩阵表示缺省值为0,1。gamma用来指定描述I和J值关系曲线的形状,gamma<1,越亮输出值越加强;gamma>1,越亮输出值越减弱;缺省gamma=1,表示线性变换。 map1=imadjust(map,low high,bottom,top,gamma)对索引图像的颜色图进行变换,如果low high,bottom top均为2×3矩阵,则gamma为1×3向量,函数分别调整红、绿、蓝成分,调整后的颜色图的大小与原来的一样。 RGB1=im

44、adjust(GRB,low high,bottom,top,gamma)对彩色图像进行变换,与索引图像中颜色图调整方法一样。特殊情况:如果top<bottom,则图像颜色或灰度值将倒置。2、直方图调整直方图是多种空间城处理技术的基础。直方图操作能有效地用于图像增强。除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为了实时图像处理的一个流行工具。直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善

45、图像的亮度分布状态,增强图像的视觉效果。灰度直方图是图像预处理中涉及最广泛的基本概念之一。图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。直方图调整方法常用的有直方图均衡化和直方图规定化。直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。由于均衡化的直方图技术只能产生一种近似均匀的直方图,而不适于需要交互作用的图像增强的应用。实际上为了能增强图像中某些灰度级的范围,有时希望能够规定交互作用的特定的直方图,直

46、方图规定化可看作是直方图均衡化方法的改进。所以说,直方图规定化可以突出感兴趣灰度范围,是对均衡化的一种有效扩展,直方图均衡化是规定化的一种特例,即规定直方图是均匀分布。 直方图调整函数:histeq( )直方图均衡通过转换灰度图像亮度值或索引图像的颜色图值来增强图像对比度,输出图像的直方图近似与给定的直方图相匹配。调用格式如下: J=histeq(I,N)将灰度图像I转换成具有N个离散灰度级的灰度图像J,N缺省值为64。 NEWMAP=histeq(X,MAP,hgram) 变换索引图像X的颜色图,使索引图像的灰度级成分与hgram相匹配,返回变换后的颜色图NEWMAP,length(hgra

47、m)必须与size(MAP,1)一样。 直方图的显示函数:imhist( )其调用格式如下: J=imhist(I,n)显示图像I的直方图, n为灰度级数目,灰图像的缺省值为256,黑白图像缺省值为2。 J=imhist(I,map) J 返回调色板为map的图像I的直方图。 counts,X=imhist(I,)返回图像I的每个灰度上的像素点数目。3、 图像的滤波图像的滤波都是针对灰度级图像而言的。其中锐化和平滑是图像增强的重要手段,采用前者可以突出图像的细节,采用后者可以滤除图像中的噪声,从而达到图像清晰的目的。如果用用信号处理的理论来解释对图像进行平滑的话,这种做法实现的是一种简单的低通

48、滤波器(low pass filter)。在灰度连续变化的图象中,如果出现了与相邻像素的灰度相差很大的点,比如说一片暗区中突然出现了一个亮点,人眼能很容易觉察到。就象看老电影时,由于胶片太旧,屏幕上经常会出现一些亮斑。这种情况被认为是一种噪声。灰度突变在频域中代表了一种高频分量,低通滤波器的作用就是滤掉高频分量,从而达到减少图象噪声的目的。锐化和平滑恰恰相反,它是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波(high pass filter)。锐化处理在增强图象边缘的同时增加了图象的噪声。常用的锐化模板是拉普拉斯(Laplacian)模板。拉普拉斯模板的含义是先将自身与周围的8个像素

49、相减,表示自身与周围像素的差别,再将这个差别加上自身作为新像素的灰度。可见,如果一片暗区出现了一个亮点,那么锐化处理的结果是这个亮点变得更亮,增加了图象的噪声。滤波工具函数:fspecial(type)格式:H=fspecial(type) 其中type的取值: average 均值低通滤波 gaussian 高斯低通滤波 prewitt 边缘算子增强滤波 sobel 边缘算子增强滤波除了以上列出的算子,更多算子可以在MATLAB中查询。三、实验例题 1、灰度图像亮度调整cleara=imread('abc.jpg');I=rgb2gray(a);subplot(1,2,1);

50、 imshow(I)J=imadjust(I,0.1 0.8,0.5);subplot(1,2,2); imshow(J)2、 灰度图像倒置cleara=imread('abc.jpg');I=rgb2gray(a);subplot(1,2,1); imshow(I)J=imadjust(I,0 1,1 0,1.3);subplot(1,2,2); imshow(J)3、 直方图均衡化cleara=imread('city.jpg');I=rgb2gray(a);subplot(1,2,1); imshow(a)J=histeq(I);subplot(1,2,2

51、); imshow(J)4、 直方图规定化I=imread('rice.png');subplot(2,4,1);imshow(I);subplot(2,4,5);imhist(I,256);J=histeq(I,32);subplot(2,4,2);imshow(J);subplot(2,4,6);imhist(J,256);counts,x=imhist(J);K=imread('cameraman.tif');subplot(2,4,3);imshow(K);subplot(2,4,7);imhist(K);L=histeq(K,counts);subpl

52、ot(2,4,4);imshow(L);subplot(2,4,8);imhist(L);5、 几种滤波的比较I=double(imread('cameraman.tif');subplot(2,2,1); imshow(I,)H=fspecial('average',5);F1=double(filter2(H,I);subplot(2,2,2); imshow(F1,)H=fspecial(gaussian,7,3);F2=double(filter2(H,I);subplot(2,2,3); imshow(F2,)H=fspecial('prewi

53、tt');F3=uint8(I+filter2(H,I);subplot(2,2,4); imshow(F3,)通过实验可知,均值和高斯滤波是使图像模糊,而边缘算子可以增强图像边缘。6、采用“原图-低通图像”的方法锐化图像I=double(imread('cameraman.tif');subplot(1,3,1)imshow(I,)H=fspecial('average',5);F1=double(filter2(H,I);subplot(1,3,2)imshow(F1,)F2=2*I-F1;subplot(1,3,3)imshow(uint8(F2),)4、 实验报告要求1、 简述实验目的。2、 简述直

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论