MATLAB在数字图像处理中的应用课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《MATLAB在数字图像处理中的应用课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 数字图像 处理 中的 应用 课件
- 资源描述:
-
1、MATLAB在数字图像处理中的应用在数字图像处理中的应用 MATLAB中,一幅图像可能包含一个数据矩阵,也中,一幅图像可能包含一个数据矩阵,也可能包含一个颜色映射表矩阵。可能包含一个颜色映射表矩阵。MATLAB中有中有4 4种基本的图像类型:种基本的图像类型:(1)(1)索引图像索引图像 ;(2)(2)灰度图像灰度图像;(3)RGB (3)RGB图像图像 (4)(4)二值图像二值图像 1 1、索引图像、索引图像 索引图像包括一个数据矩阵索引图像包括一个数据矩阵X X,一个颜色映像矩阵,一个颜色映像矩阵mapmap。其中其中mapmap是一个包含三列和若干行的数据矩阵,其每是一个包含三列和若干行
2、的数据矩阵,其每一个元素的值均为【一个元素的值均为【0 0,1 1】之间的双精度浮点型数据。】之间的双精度浮点型数据。map map矩阵的每一列分别表示红色、绿色和蓝色的颜色矩阵的每一列分别表示红色、绿色和蓝色的颜色值。值。在在MATLABMATLAB中,索引图像是从像素值到颜色映射表值的中,索引图像是从像素值到颜色映射表值的“直接映射直接映射”。像素颜色由数据矩阵像素颜色由数据矩阵X X作为索引指向矩阵作为索引指向矩阵mapmap进行索引。进行索引。例如,值例如,值1 1指向矩阵指向矩阵mapmap中的第一行,中的第一行,2 2指向第二行,指向第二行,依次类推。依次类推。.4 15 6 8
3、.4 15 6 8 .2 8 3 79 .2 8 3 79 .0 0 00.2946 0.1234 0.23450.3245 0.2589 0.3689 X,map=imreadX,map=imread(trees.tif)image(X)image(X)colormap colormap(map)(map)显示结果如图显示结果如图6.4.1所示:所示:2、灰度图像、灰度图像 MATLAB中,一幅灰度图像是一个数据矩阵中,一幅灰度图像是一个数据矩阵I,其中,其中I中的数据均代表了在一定范围内的颜色灰度值。中的数据均代表了在一定范围内的颜色灰度值。MATLAB把灰度图像存储为一个数据矩阵,该数据
4、矩把灰度图像存储为一个数据矩阵,该数据矩阵中的的元素分别代表了图像中的像素。阵中的的元素分别代表了图像中的像素。在在MATLAB中,要显示一幅灰度图像,需要调用函数中,要显示一幅灰度图像,需要调用函数imagesc(即(即image scale,图像缩放函数)。,图像缩放函数)。例例6.4.2 用用imagesc函数显示一幅灰度图像。函数显示一幅灰度图像。x=imread(trees.tif);imagesc(x);colormap(gray)显示结果如图显示结果如图6.4.2所示:所示:3、RGB图像图像 RGB图像,即真彩图像,在图像,即真彩图像,在MATLAB中存储为中存储为nm3的数据
5、矩阵。的数据矩阵。数组中的元素定义了图像中每一个像素的红、绿、蓝数组中的元素定义了图像中每一个像素的红、绿、蓝颜色值。颜色值。像素的颜色由保存在像素位置上的红、绿、蓝的灰度像素的颜色由保存在像素位置上的红、绿、蓝的灰度值的组合来确定。值的组合来确定。图形文件格式把图形文件格式把RGB图像存储为图像存储为24位的图像,红、位的图像,红、绿、蓝分别占绿、蓝分别占8位。位。例例6.4.3 调用调用image函数显示函数显示RGB图像。图像。RGB=imread(flowers.tif);image(RGB)显示结果如图显示结果如图6.4.3所示:所示:4、二值图像、二值图像 与灰度图像相同,二值图像
6、只需要一个数据矩阵,每与灰度图像相同,二值图像只需要一个数据矩阵,每个像素只取两个灰度值。个像素只取两个灰度值。例:用例:用imshow函数显示一个二值图像。函数显示一个二值图像。imshow circles.tif 显示结果如图显示结果如图6.4.4所示:所示:5、在一个图形窗口中显示多幅图像、在一个图形窗口中显示多幅图像 为了便于在多幅图像之间进行比较,需要将这些要比为了便于在多幅图像之间进行比较,需要将这些要比较的图像显示在一个图形窗口中,用较的图像显示在一个图形窗口中,用subimage函数。函数。subimage(X,map),subimage(I),subimage(RGB)分分别
7、用于显示索引色、灰度及真彩色图像。别用于显示索引色、灰度及真彩色图像。subimage(x,y,)表示将图像按指定的坐标系)表示将图像按指定的坐标系(x,y)显示。显示。RGB1=imread(football.jpg);RGB2=imread(greens.jpg);I1=imread(rice.tif);I2=imread(testpat1.tif);subplot(2,2,1);subimage(0,500,0,500,RGB1);subplot(2,2,2);subimage(0,500,0,500,RGB2);subplot(2,2,3);subimage(0,500,0,500,I
8、1);subplot(2,2,4);subimage(0,500,0,500,I2);6、增强对比度、增强对比度 X1=imread(pout.tif);figure,imshow(X1)f0=0;g0=0;f1=70;g1=30;f2=180;g2=230;f3=255;g3=255;figure,plot(f0,f1,f2,f3,g0,g1,g2,g3)axis tight,xlabel(f),ylabel(g)title(intensity transformation)r1=(g1-g0)/(f1-f0);b1=g0-r1*f0;r2=(g2-g1)/(f2-f1);b2=g1-r2*
9、f1;r3=(g3-g2)/(f3-f2);b3=g2-r3*f2;m,n=size(X1);X2=double(X1);for i=1:mfor j=1:n f=X2(i,j);g(i,j)=0;if(f=0)&(f=f1)&(f=f2)&(f=f3)g(i,j)=r3*f+b3;end endendfigure,imshow(mat2gray(g)原图像、变换曲线和处理后的图像如下:原图像、变换曲线和处理后的图像如下:7、利用利用MATLAB工具箱中的函数工具箱中的函数imadjust()增强对比度。增强对比度。代码如下:代码如下:X1=imread(pout.tif);figure,im
10、show(X1)J=imadjust(X1,0.25 0.6,1.2322);figure,imshow(J)J=adjust(I,low high,bottom top,gamma)表示返回表示返回图像图像I经调整后的图像经调整后的图像J。low high为原图像中要变换的为原图像中要变换的灰度范围,灰度范围,bottom top指定了变换后的灰度范围,其中指定了变换后的灰度范围,其中low,high,bottom,top的取值范围都使的取值范围都使01,并且,并且lowhigh,bottom=0)&(f=f1)&(f=255)g(i,j)=255;end endendfigure,imsh
11、ow(mat2gray(g)变换曲线和变换结果分别如下图:变换曲线和变换结果分别如下图:10、实现直方图均衡化、实现直方图均衡化 用用J=histeq(I,n)函数来完成这项工作,其中函数来完成这项工作,其中I是原始图是原始图像矩阵,像矩阵,J是变换后所得的图像矩阵。是变换后所得的图像矩阵。实现代码如下:实现代码如下:I=imread(tire.tif);J=histeq(I);imshow(I)figure,imshow(J)figure,imhist(I,64)figure,imhist(J,64)原始图像原始图像 原始直方图原始直方图 直方图均衡化所得图像直方图均衡化所得图像 直方图均衡
12、化后的直方图直方图均衡化后的直方图11、实现直方图规定化、实现直方图规定化 I=imread(tire.tif);hgram=0:225 J=histeq(I,hgram);imshow(I)figure,imshow(J)figure,imhist(J,64)J=histeq(I,hgram)可实现直方图规定化,其中可实现直方图规定化,其中hgram是由用户指定的矢量,规定将原始图像是由用户指定的矢量,规定将原始图像I的直方图近似变的直方图近似变换成换成hgram。使用直方图均衡化得到的结果在一些较暗的区域有些使用直方图均衡化得到的结果在一些较暗的区域有些细节仍不太清楚;规定化所得的结果比均
13、衡化更亮,对应细节仍不太清楚;规定化所得的结果比均衡化更亮,对应于均衡化图像中较暗区域的一些细节更清晰。从直方图上于均衡化图像中较暗区域的一些细节更清晰。从直方图上看,灰度值高的一边更为密集。看,灰度值高的一边更为密集。二、二、图像间的代数运算图像间的代数运算 代数运算是指对两幅图像进行点对点的加、减、乘、代数运算是指对两幅图像进行点对点的加、减、乘、除计算而的到输出图像的运算。除计算而的到输出图像的运算。1.1.图像相减运算图像相减运算 设有图像设有图像f(x,y)f(x,y)和和h(x,y),h(x,y),它们的差为:它们的差为:g(x,y)=f(x,y)g(x,y)=f(x,y)h(x,
14、y)h(x,y)图像相减可以用于去除一幅图像中所不需要的加性图图像相减可以用于去除一幅图像中所不需要的加性图案,加性图案可能是缓慢变化的背景阴影、周期性的噪声案,加性图案可能是缓慢变化的背景阴影、周期性的噪声,或在图像上每个象素处均已知的附加污染等。或在图像上每个象素处均已知的附加污染等。减法也可以用于检测同一场景的两幅图像之间的变化。减法也可以用于检测同一场景的两幅图像之间的变化。例如通过对一场景的序列图像的减运算可检测运动。例如通过对一场景的序列图像的减运算可检测运动。在计算用于确定物体边界位置的梯度时,也要用到图像减在计算用于确定物体边界位置的梯度时,也要用到图像减运算。运算。例例1 1
15、 显示采用离散余弦变换压缩的图像与原图像的差别。显示采用离散余弦变换压缩的图像与原图像的差别。用原图像与压缩后的图像相减,实现代码如下:用原图像与压缩后的图像相减,实现代码如下:I=imread(cameraman.tif I=imread(cameraman.tif););I=double(I)/255;I=double(I)/255;T=dctmtx T=dctmtx(8);(8);B=blkproc B=blkproc(I,8 8,P1(I,8 8,P1*x x*P2,T,T);P2,T,T);mask=1 1 1 1 0 0 0 0mask=1 1 1 1 0 0 0 0 1 1 1
16、0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 0 0 0;B2=blkprocB2=blkproc(B,8 8,P1.(B,8 8,P1.*x,mask);x,mask);I2=blkproc(B2,8 8,P1I2=bl
17、kproc(B2,8 8,P1*x x*P2,T,T);P2,T,T);imshow(I),figure,imshowimshow(I),figure,imshow(I2)(I2)M=I2-I;M=I2-I;figure,imshowfigure,imshow(mat2gray(M)(mat2gray(M)原始图像原始图像 经压缩、解压后的图像经压缩、解压后的图像 相减所得图像相减所得图像 2.2.图像相加运算图像相加运算 设有图像设有图像f(x,y)f(x,y)和和h(x,y)h(x,y),它们的和为,它们的和为 g(x,y)=f(x,y)+h(x,y)g(x,y)=f(x,y)+h(x,y
18、)图像相加的一个重要应用是对同一场景的多幅图像求图像相加的一个重要应用是对同一场景的多幅图像求平均值。这种方法经常用来有效地降低加性随机躁声的影平均值。这种方法经常用来有效地降低加性随机躁声的影响。图像相加也可以用来将一幅图像的内容叠加到另一幅响。图像相加也可以用来将一幅图像的内容叠加到另一幅图像上去,以达到二次暴光的效果。图像上去,以达到二次暴光的效果。例例1 1 实现图像相加。实现图像相加。I=imread(saturn.tifI=imread(saturn.tif););figure,imshowfigure,imshow(I)(I)m,n=size(I);m,n=size(I);J(m
19、,n)=0;J(m,n)=0;for i=1:3for i=1:3 X=imnoise(I,gaussian X=imnoise(I,gaussian););figure,imshow figure,imshow(X)(X)Y=double(X);Y=double(X);J=J+Y/3;J=J+Y/3;endendfigure,imshowfigure,imshow(mat2gray(J)(mat2gray(J)图图6.4.1 索引图像索引图像 图图6.4.2 灰度图像灰度图像图图6.4.3 真彩图像真彩图像图图6.4.4 二值图像二值图像三三.边缘检测边缘检测 常用的边缘检测算子有常用的边缘
20、检测算子有RobertRobert算子、算子、SobelSobel算子、算子、PrewittPrewitt算子、算子、LOGLOG算子、算子、CannyCanny算子,以下分别进行介绍。算子,以下分别进行介绍。1.Robert1.Robert算子算子 Robert Robert算子是一种利用局部差分算子寻找边缘的算子,算子是一种利用局部差分算子寻找边缘的算子,其模板如图所示。其模板如图所示。100-101-10 Robert Robert算子算子 在在MATLABMATLAB中可以由函数实现,语法格式如下:中可以由函数实现,语法格式如下:BW=edge(I,roberts BW=edge(I,
21、roberts)BW=edge(I,roberts BW=edge(I,roberts,thresh),thresh)BW=edge(I,roberts BW=edge(I,roberts)自动选择阈值用自动选择阈值用RobertRobert算子进行边缘检测。算子进行边缘检测。BW=edge(I,roberts BW=edge(I,roberts,thresh),thresh)根据所指定的敏根据所指定的敏感度阈值感度阈值threshthresh用用RobertRobert算子进行边缘检测,它忽略了所算子进行边缘检测,它忽略了所有小于阈值的边缘。当有小于阈值的边缘。当threshthresh为空
22、为空()()时,自动选择阈值。时,自动选择阈值。2.2.SobelSobel算子算子 Sobel Sobel算子的两个卷积计算核如图所示,图像中的每算子的两个卷积计算核如图所示,图像中的每个点都用这两个核做卷积,第一个核对水平边缘响应最大,个点都用这两个核做卷积,第一个核对水平边缘响应最大,第二个核对垂直边缘响应最大。第二个核对垂直边缘响应最大。1 12 21 10 00 00 0-1-1-2-2-1-11 10 0-1-12 20 0-2-21 10 0-1-1 edge edge函数实现的语法格式如下:函数实现的语法格式如下:BW=edge(I,sobel BW=edge(I,sobel)
展开阅读全文