《数字图像处理及应用MATLAB第8章课件.ppt》由会员分享,可在线阅读,更多相关《数字图像处理及应用MATLAB第8章课件.ppt(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第八章 数字图像处理实验 8.1数字图像处理基本操作数字图像处理基本操作8.2图像增强技术实验图像增强技术实验 8.3图像变换实验图像变换实验 8.4图像分割实验图像分割实验8.5图像压缩编码实验图像压缩编码实验 8.6图像特征提取实验图像特征提取实验 8.1数字图像处理基本操作数字图像处理基本操作 1、实验目的、实验目的(1)掌握)掌握MATLAB软件的运用,熟练掌握建立、保存、运行、调软件的运用,熟练掌握建立、保存、运行、调试试m文件的方法。文件的方法。(2)了解)了解MATLAB软件中图像处理工具箱的使用方法。软件中图像处理工具箱的使用方法。(3)熟练掌握图像文件(黑白、灰度、索引色和彩
2、色图像)的读熟练掌握图像文件(黑白、灰度、索引色和彩色图像)的读取及显示方法。取及显示方法。(4)熟悉常用的图像文件格式和格式转换。)熟悉常用的图像文件格式和格式转换。2、实验中所用部分函数介绍、实验中所用部分函数介绍(1)imread功能:图像文件的读取功能:图像文件的读取格式:格式:A=imread(filename,fmt)将文件命为将文件命为filename表示的扩展名为表示的扩展名为fmt的图像文件读取到矩的图像文件读取到矩阵阵A中。中。MATLAB支持的图像格式有支持的图像格式有bmp、jpg或或jpeg、tif或或tiff、gif、pcx、png、xwd。(2)imwrite功能
3、:图像文件的写入(保存),把图像写入图形文件中功能:图像文件的写入(保存),把图像写入图形文件中格式:格式:imwrite(A,filename,fmt);A,filename,fmt意义同上意义同上所述。所述。(3)imshow功能:显示图像功能:显示图像格式:格式:imshow(I,n);imshow(I,lowhigh);imshow(BW)%显示黑白图像显示黑白图像imshow(X,map)%显示索引色图像;显示索引色图像;imshow(RGB)%显示真彩色图像显示真彩色图像imshowfilename(4)figure功能:创建图形窗口功能:创建图形窗口(5)subplot功能:将多
4、个图画到一个平面上的工具。功能:将多个图画到一个平面上的工具。格式:格式:subplot(m,n,p)或者)或者subplot(mnp)说明:其中,说明:其中,m表示是图排成表示是图排成m行,行,n表示图排成表示图排成n列,也就列,也就是整个是整个figure中有中有n个图是排成一行的,一共个图是排成一行的,一共m行。行。(6)rgb2ind功能:将真彩色图像转换成索引色图像功能:将真彩色图像转换成索引色图像格式格式:X,map=rgb2ind(I,n)说明:说明:I表示被转换的表示被转换的RGB原图像,其中原图像,其中n指定指定map中颜色项数中颜色项数,n最大不能超过最大不能超过65536
5、。(7)ind2rgb功能:将索引色图像转换成真彩色图像,功能:将索引色图像转换成真彩色图像,格式:格式:RGB=ind2rgb(X,map)说明:说明:X表示被转换的索引色图像,表示被转换的索引色图像,map是是X的调色板。的调色板。MATLAB的实际处理方式是创建一个三维数组,然后将索引色图像中与颜色的实际处理方式是创建一个三维数组,然后将索引色图像中与颜色对应的对应的map值赋值给三维数组。值赋值给三维数组。(8)im2bw功能:通过设置阈值将功能:通过设置阈值将RGB、索引色、灰度图像转换成二值图像、索引色、灰度图像转换成二值图像格式格式:BW=im2bw(I,level)说明:参数说
6、明:参数I可以是真彩色图像、灰度图像和索引色图像,当是索可以是真彩色图像、灰度图像和索引色图像,当是索引色图像时,引色图像时,I表示成表示成X,map;level为转换阈值,转换阈值根据图为转换阈值,转换阈值根据图像而不同,可以通过函数像而不同,可以通过函数graythresh()求得。求得。3、实验内容示例部分、实验内容示例部分(1)对二值图像、索引色图像实现读取、显示和保存)对二值图像、索引色图像实现读取、显示和保存 clear,clcclosealli1=imread(circbw.tif);%读取图片读取图片imshow(i1),title(黑白图像黑白图像)%显示图片显示图片imwr
7、ite(i1,newcircbw.bmp);%保存图片保存图片figure,imshow(newcircbw.bmp);title(newcircbw.bmp)loadclownimwrite(X,map,clown.bmp);i2,map=imread(clown.bmp);figure,imshow(i2,map)title(索引色图像索引色图像)imwrite(i2,map,newclown.bmp);figure,imshow(newclown.bmp)title(newclown.bmp)whosi1i2实验结果如图实验结果如图8.1.1所示及以下数据:所示及以下数据:NameSiz
8、eBytesClassi1280 x27276160logicalarrayi2291x24069840uint8array(a)circbw.tif(b)newcircbw.bmp(c)clown.bmp(d)new clown.bmp(2)在一个图形窗口中显示在一个图形窗口中显示RGB图像图像 clear,clcclose allI=imread(peppers.png);subplot(2,2,1),imshow(I,notruesize),title(真彩色图像)R=I;R(:,:,2 3)=0;%红色分量G=I;G(:,:,1 3)=0;%绿色分量B=I;B(:,:,1 2)=0;%
9、蓝色分量subplot(2,2,2),imshow(R,notruesize);title(显示第一个颜色分量)subplot(2,2,3),imshow(G,notruesize);title(显示第二个颜色分量)subplot(2,2,4),imshow(B,notruesize);title(显示第三个颜色分量)实验结果图如图所示实验结果图如图所示。(a)真彩色图像(b)第一个颜色分量(c)第二个颜色分量(d)第三个颜色分量(3)通过图像点运算增强图像对比度)通过图像点运算增强图像对比度 clear,clccloseallI=imread(rice.png);subplot(1,2,1)
10、,imshow(I);I1=double(I);J=I1*1.4+40;%点运算增强点运算增强I2=uint8(J);subplot(1,2,2),imshow(I2);实验结果如图所示:实验结果如图所示:(a)原始图像(b)处理后图像 实验结果图(4)实现真彩色图像与索引图像的互相转换。)实现真彩色图像与索引图像的互相转换。clear,clccloseallRGB1=imread(peppers.png);%读入真彩色图像读入真彩色图像X1,map1=rgb2ind(RGB1,128);%真彩色图像转化为索引图像真彩色图像转化为索引图像imshow(X1,map1)%显示索引图像显示索引图像
11、loadclown;%载入图像载入图像rgb2=ind2rgb(X,map);%将索引图像转化为真彩色图像将索引图像转化为真彩色图像figure,imshow(rgb2)(a)真彩色图像(b)转换成的索引色图像(c)索引色图像(d)转换成的真彩色图像(5)图像相加是即将大小相等的两幅图像对应像素相加,下面为)图像相加是即将大小相等的两幅图像对应像素相加,下面为将将MATLAB软件自带图像进行相加处理得到。软件自带图像进行相加处理得到。clear,clccloseallIbackground=imread(rice.png);%读入第一个图像读入第一个图像imshow(Ibackground)J
12、=imread(cameraman.tif);%读入第二个图像读入第二个图像figure,imshow(J)K2=imadd(Ibackground,J,uint16);%图像相加图像相加figure,imshow(K2,)实验结果如图所示实验结果如图所示:(a)rice(b)cameraman(c)相加后的图像 4、实验内容程序设计部分、实验内容程序设计部分(1)对灰度图像、真彩色图像实现读取、显示和保存。)对灰度图像、真彩色图像实现读取、显示和保存。(2)matlab图像文件夹中的图像文件夹中的mri.tif是一个包含是一个包含27帧、图像尺寸为帧、图像尺寸为128*128的多帧索引图像,
13、请将前的多帧索引图像,请将前20帧图像顺序读入到一个数组中帧图像顺序读入到一个数组中并显示出来。并显示出来。(3)通过图像点运算减弱图像对比度。)通过图像点运算减弱图像对比度。(4)分别将索引色图像转换为灰度图像和二值图像,并将灰度图)分别将索引色图像转换为灰度图像和二值图像,并将灰度图像转换为索引色图像像转换为索引色图像(5)求对任意两幅大小不相等的图像相加的结果,并加以验证用)求对任意两幅大小不相等的图像相加的结果,并加以验证用语句:语句:K2=Ibackground+J;代替示例程序中代替示例程序中K2=imadd(Ibackground,J,uint16);的处理结果是否相同。的处理结
14、果是否相同。8.2图像增强技术实验图像增强技术实验 1、实验目的、实验目的(1)了解图像增强的目的和意义。)了解图像增强的目的和意义。(2)掌握)掌握MATLAB中常用的图像增强函数的使用方法。中常用的图像增强函数的使用方法。(3)掌握图像灰度变换、图像平滑和图像锐化的算法原理。)掌握图像灰度变换、图像平滑和图像锐化的算法原理。2、实验中所用部分函数介绍、实验中所用部分函数介绍(1)imadjust功能:调节灰度图像的亮度或彩色图像的颜色矩阵。功能:调节灰度图像的亮度或彩色图像的颜色矩阵。格式:格式:J=imadjust(I,low_in;high_in,low_out;high_out,ga
15、mma)newmap=imadjust(map,low_inhigh_in,low_outhigh_out,gamma)RGB2=imadjust(RGB1,low_inhigh_in,low_outhigh_out,gamma)说明:说明:J=imadjust(I,low_in;high_in,low_out;high_out,gamma)中,将图像中,将图像I中的亮度值映射到中的亮度值映射到J中的新值,即中的新值,即将将low_in至至hige_in之间的值映射到之间的值映射到low_out至至high_out之间的值。之间的值。它们都可以使用空的矩阵它们都可以使用空的矩阵,默认值是,默认
16、值是01。newmap=imadjust(map,low_inhigh_in,low_outhigh_out,gamma)为调整索引色图像的调色板为调整索引色图像的调色板map。RGB2=imadjust(RGB1,low_inhigh_in,low_outhigh_out,gamma)为对为对RGB图像图像1的红、绿、蓝调色板分别进行的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。参数参数gamma指定了曲线的形状,该曲线用来映射指定了曲线的形状,该曲线用来映射I的亮度的亮度值。如果值。如果gamma小
17、于小于1,映射被加权到更高的输出值。如果,映射被加权到更高的输出值。如果gamma大于大于1,映射被加权到更低的输出值。如果省略了函数的参,映射被加权到更低的输出值。如果省略了函数的参量,则量,则gamma默认为默认为1(线性映射)。(线性映射)。(2)imhist功能:计算和显示图像的色彩直方图功能:计算和显示图像的色彩直方图格式格式:imhist(I,n);imhist(X,map)说明:说明:其中其中,n为指定的灰度级数目为指定的灰度级数目,缺省值为缺省值为256;imhist(X,map)就算和显示索引色图像就算和显示索引色图像X的直方图的直方图,map为调色为调色板板。(3)hist
18、eq功能:实现直方图均衡化功能:实现直方图均衡化格式:格式:J=histeq(I,n);J=histeq(I,hgram);J,T=histeq(I,.)说明:说明:J=histeq(I,n)指定均衡化后的灰度级数指定均衡化后的灰度级数n,缺省值缺省值64;J=histeq(I,hgram)是是实现直方图的规定化,即将原实现直方图的规定化,即将原图象图象I的直方图变换成用户指定的向量的直方图变换成用户指定的向量hgram,hgram中的每一中的每一个元素都在个元素都在0,1中;中;J,T=histeq(I,.)返回从能将图像返回从能将图像I的灰度直方图的灰度直方图变换成图像变换成图像J的直方图
19、的变换的直方图的变换T。(4)filter2功能:基于卷积的图象滤波函数功能:基于卷积的图象滤波函数格式:格式:Y=filter2(h,X)说明:说明:Y=filter2(h,X)返回图像返回图像X经滤波算子经滤波算子h滤波后的结果,滤波后的结果,默认返回图像默认返回图像Y与输入图像与输入图像X大小相同。大小相同。(5)fspecial功能:产生预定义滤波器功能:产生预定义滤波器格式:格式:H=fspecial(type)H=fspecial(gaussian,n,sigma)高斯低通滤波器高斯低通滤波器H=fspecial(sobel)Sobel水平边缘增强滤波器水平边缘增强滤波器H=fsp
20、ecial(prewitt)Prewitt水平边缘增强滤波水平边缘增强滤波器器H=fspecial(laplacian,alpha)近似二维拉普拉斯运算滤近似二维拉普拉斯运算滤波器波器H=fspecial(log,n,sigma)高斯拉普拉斯(高斯拉普拉斯(LoG)运)运算滤波器算滤波器H=fspecial(average,n)均值滤波器均值滤波器H=fspecial(unsharp,alpha)模糊对比增强滤波器模糊对比增强滤波器(6)imnoise功能:给图像增加噪声功能:给图像增加噪声格式格式:J=imnoise(I,type);J=imnoise(I,type,parameter)说明
21、:说明:J=imnoise(I,type)返回对图像返回对图像I添加典型噪声后的有添加典型噪声后的有噪图像噪图像J,参数,参数type和和parameter用于确定噪声的类型和相应的用于确定噪声的类型和相应的参数。参数。(7)medfilt2功能:二维中值滤波功能:二维中值滤波格式:格式:B=medfilt2(A)用用33的滤波窗口对图的滤波窗口对图像像A进行中值滤波。进行中值滤波。B=medfilt2(A,mn)用指定大小为用指定大小为mn的窗的窗口对图像口对图像A进行中值滤波。进行中值滤波。说明:说明:B=medfilt2(A)表示用表示用33的滤波窗口对图像的滤波窗口对图像A进行中进行中
22、值滤波。值滤波。B=medfilt2(A,mn)表示表示用指定大小为用指定大小为mn的窗口的窗口对图像对图像A进行中值滤波。进行中值滤波。(8)imfilter功能:多维图像滤波功能:多维图像滤波格式:格式:B=imfilter(A,h)说明:将原始图像说明:将原始图像A按指定的滤波器按指定的滤波器h进行滤波处理,处理进行滤波处理,处理后的图像后的图像B与与A的尺寸和类型相同。的尺寸和类型相同。3、实验内容示例部分、实验内容示例部分(1)对图像进行灰度变换,实现反转图像效果。)对图像进行灰度变换,实现反转图像效果。clear,clccloseallI=imread(cameraman.tif)
23、;subplot(1,2,1)imshow(I),title(原始图像原始图像)I1=imadjust(I,01,10);%利用函数实现反转利用函数实现反转subplot(1,2,2)imshow(I1)title(负片图像负片图像)实验结果如图所示:实验结果如图所示:(a)原始图像(b)反转图像反转效果(2)对原始图像进行直方图均衡化。)对原始图像进行直方图均衡化。clear,clccloseallI=imread(circuit.tif);subplot(2,2,1),imshow(I)title(原始图像原始图像)subplot(2,2,2),imhist(I)title(原始图像直方图
24、原始图像直方图)J=histeq(I,256);subplot(2,2,3),imshow(J)title(均衡化后的图像均衡化后的图像)subplot(2,2,4),imhist(J)title(均衡化后图像的直方图均衡化后图像的直方图)直方图均衡化(3)给原始图像增加椒盐噪声和高斯噪声,再分别用中值滤波和)给原始图像增加椒盐噪声和高斯噪声,再分别用中值滤波和均值滤波处理图像。均值滤波处理图像。%含椒盐噪声和高斯噪声图像分别用中值滤波和均值滤波处理含椒盐噪声和高斯噪声图像分别用中值滤波和均值滤波处理clear,clccloseallI=imread(eight.tif);J1=imnoise
25、(I,salt&pepper,0.02);%添加椒盐噪声添加椒盐噪声J2=imnoise(I,gaussian,0.02);%添加椒盐噪声添加椒盐噪声subplot(2,3,1),imshow(J1);title(salt&pepper(J1);subplot(2,3,4),imshow(J2);title(gaussian(J2)Z1=medfilt2(J1,3,3);%中值滤波中值滤波Z2=medfilt2(J2,3,3);%中值滤波中值滤波subplot(2,3,2),imshow(Z1);title(medfilt2(J1)subplot(2,3,5),imshow(Z2);title
26、(medfilt2(J2)K1=imfilter(J1,fspecial(average,3);%对添加高斯噪声后对添加高斯噪声后图像进行均值处理图像进行均值处理K2=imfilter(J2,fspecial(average,3);%对添加高斯噪声后对添加高斯噪声后图像进行均值处理图像进行均值处理subplot(2,3,3),imshow(K1);title(imfilter(J1)subplot(2,3,6),imshow(K2);title(imfilter(J2)(a)含椒盐噪声图像(b)中值滤波(c)均值滤波(d)含高斯噪声图像(e)中值滤波(f)均值滤波(4)对图像进行空间域锐化滤波
27、)对图像进行空间域锐化滤波clear,clccloseallI=imread(moon.tif);w=fspecial(laplacian,0);w8=1,1,1;1,-8,1;1,1,1;%定义窗口模版定义窗口模版I1=imfilter(I,w,replicate);%滤波处理滤波处理figure(1);imshow(I);title(originalimage);J=im2double(I);J2=imfilter(J,w8,replicate);K=J-J2;figure(2),imshow(K);imwrite(K,ruihua.bmp);(a)原始图像(b)空域锐化后的图像空域锐化4
28、实验内容程序设计部分实验内容程序设计部分(1)利用函数)利用函数imadjust对灰度图像进行灰度变换。对灰度图像进行灰度变换。(2)对计算机中找到的灰度图像进行直方图均衡化)对计算机中找到的灰度图像进行直方图均衡化(3)用不同大小的均值滤波器模板对图像进行平滑滤波。)用不同大小的均值滤波器模板对图像进行平滑滤波。(4)采用)采用laplacian算子对示例(算子对示例(4)中图像进行锐化处理。)中图像进行锐化处理。8.3图像变换实验图像变换实验1、实验目的、实验目的(1)了解图像频域变换和几何变换的目的和意义。)了解图像频域变换和几何变换的目的和意义。(2)掌握)掌握MATLAB中常用的图像
29、频域变换、几何变换函数的使用中常用的图像频域变换、几何变换函数的使用方法。方法。(3)掌握图像傅里叶变换、离散余弦变换的算法原理。)掌握图像傅里叶变换、离散余弦变换的算法原理。(4)掌握图像位置变换、形状变换和复合变换的算法原理。)掌握图像位置变换、形状变换和复合变换的算法原理。(5)了解图像频域变换和空间变换的基本应用。)了解图像频域变换和空间变换的基本应用。2、实验中所用部分函数介绍、实验中所用部分函数介绍(1)fft2功能:二维离散傅里叶变换。功能:二维离散傅里叶变换。格式:格式:Afft2(X)(2)fftshift功能:快速傅立叶变换的频率移位函数,用于将变换后的功能:快速傅立叶变换
30、的频率移位函数,用于将变换后的图象频谱中心从矩阵的原点移到矩阵的中心。图象频谱中心从矩阵的原点移到矩阵的中心。格式:格式:B=fftshift(I)说明:对于矩阵说明:对于矩阵I,B=fftshift(I)将将I的一、三象限和二、的一、三象限和二、四象限进行互换。四象限进行互换。(3)dct2功能:二维功能:二维DCT变换。变换。格式格式:B=dct2(A);B=dct2(A,m,n);B=dct2(A,m,n)说明:说明:Bdct2(A)计算计算A的的DCT变换变换B,A与与B的大的大小相同;小相同;Bdct2(A,m,n)和和B=dct2(A,m,n)通过对通过对A补补0或剪裁,使或剪裁,
31、使B的大小为的大小为mn。(4)idct2功能:功能:DCT反变换。反变换。格式格式:B=idct2(A);B=idct2(A,m,n);B=idct2(A,m,n)说明:说明:Bidct2(A)计算计算A的的DCT反变换反变换B,A与与B的大小相同;的大小相同;Bidct2(A,m,n)和和B=idct2(A,m,n)通过对通过对A补补0或剪裁,使或剪裁,使B的大小为的大小为mn。(5)imresize功能:图像缩放函数。功能:图像缩放函数。格式:格式:B=imresize(A,scale,method);B=imresize(A,numrowsnumcols)说明:说明:B=imresiz
32、e(A,scale)返回的图像返回的图像B的长宽是图像的长宽是图像A的的长宽的长宽的m倍。即缩放图像,倍。即缩放图像,m大于大于1,则放大图像;,则放大图像;m小于小于1,缩小,缩小图像;参数图像;参数method用于指定插值的方法,可选用的值为用于指定插值的方法,可选用的值为nearest(最邻近法),(最邻近法),bilinear(双线性插值),(双线性插值),bicubic(双(双三次插值),默认为三次插值),默认为nearest。B=imresize(A,numrowsnumcols)中,中,numrows和和numcols分别指定目标图像的高度和宽度。由于这种格式允许图像分别指定目标
33、图像的高度和宽度。由于这种格式允许图像缩放后长宽比例和原图像长宽比例不相同,因此所产生的图像有可缩放后长宽比例和原图像长宽比例不相同,因此所产生的图像有可能发生畸变。能发生畸变。(6)imrotate功能:图像旋转函数。功能:图像旋转函数。格式:格式:B=imrotate(A,angle,method)说明:参数说明:参数method用于指定插值的方法,可选用的值为用于指定插值的方法,可选用的值为nearest(最邻近法),(最邻近法),bilinear(双线性插值),(双线性插值),bicubic(双(双三次插值),默认为三次插值),默认为nearest。3、实验内容示例部分:、实验内容示例
34、部分:(1)将真彩色图像变成灰度图像,并进行将真彩色图像变成灰度图像,并进行DCT变换,将变换,将DCT系数系数中小于中小于10的系数舍弃,使用的系数舍弃,使用idct2重构图像。重构图像。clear,clccloseallRGB=imread(autumn.tif);subplot(2,2,1),imshow(RGB),title(RGB)I=rgb2gray(RGB);%彩色图像转化为灰度图像彩色图像转化为灰度图像J=dct2(I);%DCT变换变换subplot(2,2,2),imshow(I),title(J)K1=idct2(J);%离散余弦反变换离散余弦反变换subplot(2,2
35、,3),imshow(K1,0255),title(K1)J(abs(J)a(k)I(i,j)=255;elseI(i,j)=0;endendendfigure(k+1),imshow(I),title(阈值阈值a=num2str(a(k)end(a)原始图像(b)阈值90实验结果(c)阈值130(d)阈值150实验结果(2)利用直方图双峰法实现图像分割)利用直方图双峰法实现图像分割I=imread(coins.png);subplot(2,2,1),imshow(I),title(原图原图);subplot(2,2,2);imhist(I);%直方图直方图title(直方图直方图);u=im
36、hist(I);fori=1:256m(i)=0;endj=0;%求所有峰值灰度级求所有峰值灰度级fori=1:254forb=i+1forc=b+1ifu(i)u(c)j=j+1;m(j)=b;endendendend%求峰值中最小灰度级求峰值中最小灰度级w=m(1);fork0=2:jifu(m(k0)u(p)p=m(k);endend%求出与最大峰值相邻的峰值灰度级求出与最大峰值相邻的峰值灰度级l=u(w);fork1=1:jifu(m(k1)l;x=m(k1)-p;if(abs(x)30)l=u(m(k1);q=m(k1);endendendifpqk2=q;k3=p;elsek2=p
37、;k3=q;end%求出直方图谷底灰度值求出直方图谷底灰度值l1=u(k2);forn1=(k2+1):(k3-1)ifl1u(n1)l1=u(n1);p1=n1;endendF=im2bw(I,p1/255);%二值化二值化subplot(2,2,3),imshow(F),title(二值化后图像二值化后图像);双峰法阈值分割4实验内容程序设计部分实验内容程序设计部分(1)调用)调用edge函数利用多种边缘检测算子检测图函数利用多种边缘检测算子检测图8.4.3中图像的边中图像的边缘。缘。(2)利用图像分割处理测试图中图像中的微小结构。提示:在获)利用图像分割处理测试图中图像中的微小结构。提示
38、:在获取阈值的基础上进行二值化处理,再在进行形态学处理。取阈值的基础上进行二值化处理,再在进行形态学处理。例图例图8.5图像压缩编码实验图像压缩编码实验1、实验目的、实验目的(1)了解图像压缩的目的和意义。)了解图像压缩的目的和意义。(2)掌握)掌握MATLAB中常用的图像压缩函数的使用方法。中常用的图像压缩函数的使用方法。(3)掌握基于)掌握基于DCT和小波变换的压缩算法原理,掌握算术编码的和小波变换的压缩算法原理,掌握算术编码的算法原理。算法原理。2、实验中所用部分函数介绍、实验中所用部分函数介绍(1)dctmtx功能:计算功能:计算DCT变换矩阵变换矩阵格式:格式:Ddctmtx(n)说
39、明:说明:Ddctmtx(n)返回一个返回一个nn的的DCT变换矩阵,输出变换矩阵,输出矩阵矩阵D为为double类型。类型。(2)blkproc功能:实现图像的分块处理。功能:实现图像的分块处理。格式格式:B=blkproc(A,mn,fun)说明:说明:A为输入图像,为输入图像,B为输出图像,为输出图像,mn指定块大小,指定块大小,fun指定对所有块进行处理的函数指定对所有块进行处理的函数。(3)im2col功能:重调图像块为列。功能:重调图像块为列。格式:格式:B=im2col(A,mn,block_type)说明:将矩阵说明:将矩阵A分为分为mn的子矩阵,再将每个子矩阵作为的子矩阵,再
40、将每个子矩阵作为B的的一列。当一列。当block_type为为distinct时,将时,将A分解为互不重叠的子矩阵,分解为互不重叠的子矩阵,若不足若不足mn,以,以0补足;当补足;当block_type为为sliding时,将时,将A分解为尽分解为尽可能多的子矩阵,若不足可能多的子矩阵,若不足mn,不以,不以0补足。补足。(4)im2double功能:转换图像矩阵为双精度型。功能:转换图像矩阵为双精度型。格式格式:I2=im2double(I1)(5)wavedec2功能:二维信号的多层小波分解功能:二维信号的多层小波分解格式:格式:C,S=wavedec2(X,N,wname);C,S=wa
41、vedec2(X,N,Lo_D,Hi_D)说明说明:C,S=wavedec2(X,N,wname)使用小波基函数使用小波基函数wname对二维信号对二维信号X进行进行N层分层分;C,S=wavedec2(X,N,Lo_D,Hi_D)使用指定的分解低通和高通滤使用指定的分解低通和高通滤波器波器Lo_D和和Hi_D分解信号分解信号X(6)appcoef2功能:提取二维信号小波分解的近似分量功能:提取二维信号小波分解的近似分量格式:格式:A=appcoef2(C,S,wname,N)说明:说明:wname为小波名称,为小波名称,N为一整数。为一整数。(7)detcoef2功能:功能:提取二维信号小波
42、分解的细节分量提取二维信号小波分解的细节分量格式格式:D=detcoef2(O,C,S,N)说明:其中说明:其中O=h,代表水平细节分量;,代表水平细节分量;O=v,代表垂直细节分量;,代表垂直细节分量;O=d,代表对角细节分量;,代表对角细节分量;N为一整数。为一整数。(8)wrcoef2功能:由多层小波分解重构某一层的分解信号。功能:由多层小波分解重构某一层的分解信号。格式:格式:X=wrcoef2(type,C,S,wname)说明:说明:X=wrcoef2(type,C,S,wname)返回基于小波分解结返回基于小波分解结构构C,S的小波重构图像。参数的小波重构图像。参数type等于等
43、于a表示重构近似系数;表示重构近似系数;等于等于h表示重构水平细节系数;等于表示重构水平细节系数;等于v表示重构垂直细节系数,等于表示重构垂直细节系数,等于d表示重构对角细节系数。表示重构对角细节系数。3、实验内容示例部分、实验内容示例部分(1)将原始图像首先分割成将原始图像首先分割成1616的子图像,然后对每个子图像进的子图像,然后对每个子图像进行行DCT,将每个子图像的,将每个子图像的256个个DCT系数舍去系数舍去35小的变换系数,小的变换系数,进行压缩,显示解码图像。进行压缩,显示解码图像。initialimage=double(initialimage);t=dctmtx(16);d
44、ctcoe=blkproc(initialimage,16,16,P1*x*P2,t,t);将图像分将图像分成成88子图像,求子图像,求DCTcoevar=im2col(dctcoe,16,16,distinct);将变换系数矩将变换系数矩阵重新排列阵重新排列coe=coevar;y,ind=sort(coevar);m,n=size(coevar);snum=256-256*cr;根据压缩比确定要将系数变为根据压缩比确定要将系数变为0的的个数个数clear,clc;closeall;cr=0.5;initialimage=imread(cameraman.tif);读取原图像读取原图像ims
45、how(initialimage);显示原图像显示原图像title(原始图像原始图像)fori=1:ncoe(ind(1:snum),i)=0;将最小的将最小的snum个变换系数设为个变换系数设为0endb2=col2im(coe,16,16,256,256,distinct);重新排列系数重新排列系数矩阵矩阵i2=blkproc(b2,16,16,P1*x*P2,t,t);求逆离散余弦变换求逆离散余弦变换(IDCT)i2=uint8(i2);figureimshow(i2)显示压缩后的图像。显示压缩后的图像。title(压缩图像压缩图像)程序运行结果如图所示。程序运行结果如图所示。(a)原图
46、(b)压缩解码后图像实验结果(2)利用小波工具箱专用的阈值压缩图像函数()利用小波工具箱专用的阈值压缩图像函数(wdencmp)进行)进行图像压缩图像压缩i=imread(cameraman.tif);%读取图片读取图片n=2;%进行进行2层小波分解层小波分解w=coif2;%选取小波选取小波c,l=wavedec2(i,n,w);%全局阈值全局阈值thr,sorh,keepapp=ddencmp(cmp,wv,i);%对高频系数进行阈值化处理进行压缩对高频系数进行阈值化处理进行压缩Xcomp,cxc,lxc,perf0,perfl2=wdencmp(gbl,c,l,w,n,thr,sorh,
47、keepapp);%显示原图像显示原图像subplot(1,2,1);imshow(i);title(原始图像原始图像);%显示压缩后图像显示压缩后图像subplot(1,2,2);Xcomp=uint8(Xcomp);imshow(Xcomp);title(压缩后图像压缩后图像);%显示压缩有关信息显示压缩有关信息disp(小波分解系数中值为小波分解系数中值为0的系数个数百分比的系数个数百分比);disp(perf0);disp(压缩后剩余能量百分比压缩后剩余能量百分比);disp(perfl2)实验结果如图所示:实验结果如图所示:(a)图像压缩(3)利用)利用DCT变换进行图像压缩。变换进
48、行图像压缩。clear,clccloseallI=imread(cameraman.tif);I=im2double(I);T=dctmtx(8);B=blkproc(I,8,8,P1*x*P2,T,T);%将图像分为将图像分为8块块mask=11110000;11100000;11000000;10000000;00000000;00000000;00000000;00000000;B2=blkproc(B,88,P1.*x,mask);I2=blkproc(B2,88,P1*x*P2,T,T);求逆离散余弦变换求逆离散余弦变换imshow(I)figure,imshow(I2)实验结果如图
49、所示:实验结果如图所示:(a)原始图像(b)解压缩图像实验结果4、程序设计部分、程序设计部分(1)对图像进行小波分解后,会得到一系列不同分辨率的子图像,)对图像进行小波分解后,会得到一系列不同分辨率的子图像,表征图像最主要的部分是低频部分,高频部分的大部分数据接近于表征图像最主要的部分是低频部分,高频部分的大部分数据接近于0,因此可以利用小波分解去掉图像的高频部分,保留图像的低频,因此可以利用小波分解去掉图像的高频部分,保留图像的低频部分来进行图像数据压缩。请利用二维小波变换对图像进行编码。部分来进行图像数据压缩。请利用二维小波变换对图像进行编码。(提示:首先利用(提示:首先利用wavedec
50、2函数对图像进行小波分解,然后利用函数对图像进行小波分解,然后利用appcoef2函数提取低频系数,最后利用函数函数提取低频系数,最后利用函数wcodemat进行量化编进行量化编码。)码。)(2)假设信源符号为)假设信源符号为,这些符号出现的概率分别为这些符号出现的概率分别为,编程编程实现对信源符号实现对信源符号cadacdb进行算术编码和解码。进行算术编码和解码。8.6图像特征提取实验图像特征提取实验1实验目的实验目的(1)了解提取图像特征的目的和意义。)了解提取图像特征的目的和意义。(2)掌握)掌握MATLAB中常用的提取图像特征的函数使用方法。中常用的提取图像特征的函数使用方法。(3)掌