无忧网站后台,湖南智能网站建设平台,南华网站建设,有哪些app软件开发公司实验一 Matlab语言、数字图象基本操作 一、实验目的 1、复习MATLAB语言的基本用法#xff1b; 2、掌握MATLAB语言中图象数据与信息的读取方法#xff1b; 3、掌握在MATLAB中绘制灰度直方图的方法#xff0c;了解灰度直方图的均衡化的方法。 二、实验原理 MATLAB是集数值… 实验一 Matlab语言、数字图象基本操作 一、实验目的 1、复习MATLAB语言的基本用法 2、掌握MATLAB语言中图象数据与信息的读取方法 3、掌握在MATLAB中绘制灰度直方图的方法了解灰度直方图的均衡化的方法。 二、实验原理 MATLAB是集数值计算符号运算及图形处理等强大功能于一体的科学计算语言。作为强大的科学计 算平台它几乎能够满足所有的计算需求。 MATLAB软件具有很强的开放性和适用性。在保持内核不变的情况下MATLAB可以针对不同的应用学科推 出相应的工具箱(toolbox)。目前MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域诸如 数据采集、概率统计、信号处理、图像处理和物理仿真等都在工具箱Toolbox家族中有自己的一席 之地。在实验中我们主要用到MATLAB提供图象处理工具箱Image Processing Toolbox。 1、MATLAB与数字图像处理 MATLAB全称是Matrix Laboratory矩阵实验室一开始它是一种专门用于矩阵数值计算的软件 从这一点上也可以看出它在矩阵运算上有自己独特的特点。实际上MATLAB中的绝大多数的运算都是通 过矩阵这一形式进行的。这一特点也就决定了MATLAB在处理数字图像上的独特优势。理论上讲图像是 一种二维的连续函数然而在计算机上对图像进行数字处理的时候首先必须对其在空间和亮度上进行 数字化这就是图像的采样和量化的过程。二维图像进行均匀采样就可以得到一幅离散化成M×N样本 的数字图像该数字图像是一个整数阵列因而用矩阵来描述该数字图像是最直观最简便的了。而 MATLAB的长处就是处理矩阵运算因此用MATLAB处理数字图像非常的方便。 MATLAB支持五种图像类型即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列支持BMP、GIF 、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读写和显示。MATLAB对图像的处理 功能主要集中在它的图像处理工具箱Image Processing Toolbox中。图像处理工具箱是由一系列支 持图像处理操作的函数组成可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与 图像增强、二值图像操作以及形态学处理等图像处理操作。 2、MATLAB语言的基本操作 MATLAB语言是一种运算纸型的运算语言其特点就是与平时在运算纸上书写运算的形式相同这使 得它成为一种比较容易掌握的语言其变量均以矩阵向量形式表示单独一个数据可以认为是一维向量 其程序语法类似于C语言只要有一点C语言基础的人可以很快掌握。针对数字图象处理的需要可 以重点掌握以下几个内容矩阵、向量的输入和操作包括如何输入一个矩阵如何产生一个全零全一 的矩阵如何对一个矩阵的行列元素进行读取、写入矩阵与向量的基本运算包括加、减、点乘等 以下主要介绍一下如何读取矩阵的指定行或指定列举例说明 x4:6 %产生一个一维数组范围从4到6步长为1 x 4 5 6 插入通过对x进行插入运算创建矩阵A A[x-3;x;x3] %当然也可以用别的方法产生A矩阵此处只作为示例 A 1 2 3 4 5 6 7 8 9 提取提取A的前两行和后两列形成矩阵C。 CA(1:2,2:3) C 2 3 5 6 置零将矩阵A 的第二行第二列的元素置零 A(2,2)0 A 1 2 3 4 0 6 7 8 9 将矩阵A的第一列全置1 A(:,1)1 A 1 2 3 1 0 6 1 8 9 强调一下矩阵的乘法与矩阵的点乘的不同举例说明 Aeye(2) %产生二维单位矩阵 A 1 0 0 1 B[1,2;3,4] %直接法输入矩阵 B 1 2 3 4 AB %求A与B的和符合矩阵求和原则 ans 2 2 3 5 A.*B %求A与B的点积即两矩阵中对应元素分别相乘 ans 1 0 0 4 A*B %求A与B的乘积符合矩阵乘积原则A的列数与B的行数相等 ans 1 2 3 4 注意请大家在E盘建一个目录imp在每次启动时都要将这个目录加入到MATLAB的搜索路径中添 加的方法为File----Set Path----Tool---Add Path 3、MATLAB中图象数据的读取 A、 imread imread函数用于读入各种图象文件其一般的用法为 [XMAP]imread(‘filename’,‘fmt’) 其中XMAP分别为读出的图象数据和颜色表数据fmt为图象的格式filename为读取的图象文件可 以加上文件的路径。 例[XMAP]imread’flowers.tif’,’tif’; B、 imwrite imwrite函数用于输出图象其语法格式为 imwrite(X,map,filename,fmt)按照fmt指定的格式将图象数据矩阵X和调色板map写入文件filename。 C、 imfinfo imfinfo函数用于读取图象文件的有关信息其语法格式为 imfinfo(filename,fmt) imfinfo函数返回一个结构info它反映了该图象的各方面信息其主要数据包括文件名路径、文 件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数 、图象的类型等。 例 imfinfo(rice.tif) ans Filename: C:\MATLAB6p5\toolbox\images\imdemos\rice.tif FileModDate: 26-Oct-1996 06:11:58 FileSize: 65966 Format: tif FormatVersion: [] Width: 256 Height: 256 BitDepth: 8 ColorType: grayscale FormatSignature: [73 73 42 0] ByteOrder: little-endian NewSubfileType: 0 BitsPerSample: 8 Compression: Uncompressed PhotometricInterpretation: BlackIsZero StripOffsets: [8x1 double] SamplesPerPixel: 1 RowsPerStrip: 32 StripByteCounts: [8x1 double] XResolution: 72 YResolution: 72 ResolutionUnit: Inch Colormap: [] PlanarConfiguration: Chunky TileWidth: [] TileLength: [] TileOffsets: [] TileByteCounts: [] Orientation: 1 FillOrder: 1 GrayResponseUnit: 0.0100 MaxSamplev alue: 255 MinSamplev alue: 0 Thresholding: 1 ImageDescription: [1x166 char] 4、 MATLAB中图象文件的显示 imshow imshow函数是最常用的显示各种图象的函数其语法如下 imshow(X,map) 其中X是图象数据矩阵map是其对应的颜色矩阵若进行图象处理后不知道图象数据的值域可以用[]代 替map。 需要显示多幅图象时可以使用figure语句它的功能就是重新打开一个图象显示窗口。 例 Iimread(‘rice.tif’); Imshow(I); Jimread(‘flowers.tif’); figure,imshow(J); 5、 MATLAB中灰度直方图的显示 MATLAB图象处理工具箱提供了imhist函数来计算和显示图象的直方图imhist函数的语法格式为 imhist(I,n) imhist(X,map) 其中imhist(I,n)计算和显示灰度图象I的直方图n为指定的灰度级数目默认值为256。imhist(X,map) 计算和显示索引色图象X的直方图map为调色板。 例 I imread(rice.tif); imshow(I) figure, imhist(I) 6、 对比度增强 如果原图象f(x,y)的灰度范围是[mM]我们希望调整后的图象g(x,y)的灰度范围是[nN]那么下 述变换就可以实现这一要求。 MATLAB图象处理工具箱中提供的imadjust函数可以实现上述的线性变换对比度增强。Imadjust函数的 语法格式为 J imadjust(I,[low_in high_in],[low_out high_out]) J imadjust(I,[low_in high_in],[low_out high_out])返回图象I经过直方图调整后的图象J [low_in high_in]为原图象中要变换的灰度范围[low_out high_out]指定了变换后的灰度范围。 例 I imread(pout.tif); J imadjust(I,[0.3 0.7],[]); imshow(I), figure, imshow(J) 三、实验要求 copy两个图形文件girl1.bmp和girl2.bmp到MATLAB目录下work文件夹中。 1、 将MATLAB目录下work文件夹中的girl.bmp图象文件读出.用到imreadimfinfo等文件观察一下图 象数据了解一下数字图象在MATLAB中的处理就是处理一个矩阵。将这个图象显示出来用imshow 尝试修改map颜色矩阵的值再将图象显示出来观察图象颜色的变化。 2、 将MATLAB目录下work文件夹中的girl2.bmp图象文件读出显示它的图象及灰度直方图可以发现其 灰度值集中在一段区域用imadjust函数将它的灰度值调整到[01]之间并观察调整后的图象与原图 象的差别调整后的灰度直方图与原灰度直方图的区别。 实验二 图像运算 本实验是综合性实验涵盖Matlab程序设计、图像点运算、代数运算、几何运算等多章基本知识及 其应用。需四个学时。 一、实验目的与要求 #61548; 理解图像点运算、代数运算、几何运算的基本定义和常见方法 #61548; 掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法 #61548; 掌握在MATLAB中进行插值的方法 #61548; 运用MATLAB语言进行图像的插值缩放和插值旋转 #61548; 进一步熟悉了解MATLAB语言的应用。 二、实验原理与功能 点运算是通过对图像中每个像素值进行计算,改善图像显示效果的操作,也称对比度增强,对比度拉伸,灰 度变换.可以表示为B(x,y)f(A(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) 其中A(x,y)和B(x,y)为输入图像而C(x,y)为输出图像。还可以通过适当的组合形成涉及几幅图像的 复合代数运算方程。 在MATLAB中我们可以用函数简单的得到数字图像的图像数据矩阵即A(x,y)和B(x,y)有了这些 矩阵后我们只要适当的设计代数运算的形式并写出方程就可以得到一个输出图像的矩阵即C(x,y) 图像相加的一个重要应用是对同一场景的多幅图像求平均值。这点被经常用来有效的降低加性随机噪声 的影响。在求平均值的过程中图像的静止部分不会改变而对每一幅图像各不相同的噪声图案则过 累积很慢。对M幅图像进行平均使图像中每一点的平方信噪比提高了M倍幅度信噪比是功率信噪比的平 方根因此达到了提高信噪比降低噪声的作用。 几何运算可改变图像中各物体之间的空间关系。这种运算可以被看成是将各物体在图像内移动。 一个几何运算需要两个独立的算法。首先需要一个算法来定义空间变换本身用它来描述每个像素如 何从其初始位置“移动”到终止位置即每个像素的“运动”。同时还需要一个用于灰度插值的算法 这是因为在一般情况下输入图像的位置坐标(x,y)为整数而输出图像的位置坐标为非整数反过 来也如此。因此插值就是对变换之后的整数坐标位置的像素值进行估计。MATLAB提供了一些函数实现这 些功能。 插值是常用的数学运算通常是利用曲线拟合的方法通过离散的采样点建立一个连续函数来逼近真 实的曲线用这个重建的函数便可以求出任意位置的函数值。 最近邻插值是最简便的插值在这种算法中每一个插值输出像素的值就是在输入图像中与其最临近 的采样点的值。最近邻插值是工具箱函数默认使用的插值方法而且这种插值方法的运算量非常小。当 图像中包含像素之间灰度级变化的细微结构时最近邻插值法会在图像中产生人工的痕迹。 双线性插值法的输出像素值是它在输入图像中2×2领域采样点的平均值它根据某像素周围4个像素 的灰度值在水平和垂直两个方向上对其插值。 双三次插值的插值核为三次函数其插值邻域的大小为4×4。它的插值效果比较好但相应的计算量 也比较大。 MATLAB图像处理工具箱中的函数imresize可以用上述的3种方法对图像进行插值缩放如果不指定插 值方法则默认为最邻近插值法。 Imresize函数的语法格式为 B imresize(A,m,method) 参数method用于指定插值的方法可选用的值为nearest最邻近法bilinear双线性插值 bicubic双三次插值默认为nearest。 B imresize(A,m,method)返回原图A的m倍放大的图像m小于1时效果是缩小。 三 实验设计例子与调试 1 完成人为的往一幅图像中加入噪声并通过多次相加求平均的方法消除所加入的噪声。 在MATLAB中提供了给图像加入噪声的函数imnoise imnoise的语法格式为 J imnoise(I,type) J imnoise(I,type,parameters) 其中J imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。 参数type和parameters用于确定噪声的类型和相应的参数。 下面的命令是对图像eight.tif分别加入高斯噪声、椒盐噪声和乘性噪声其结果如图所示 例 Iimread(eight.tif); J1imnoise(I,gaussian,0,0.02); J2imnoise(I,salt pepper,0.02); J3imnoise(I,speckle,0.02); subplot(2,2,1),imshow(I),title(原图像); subplot(2,2,2),imshow(J1),title(加高斯噪声); subplot(2,2,3),imshow(J2),title(加椒盐噪声); subplot(2,2,4),imshow(J3),title(加乘性噪声); 在上面的例子中使用了一个函数subplot。其作用就是将多幅图像显示再同一幅图像显示对话框中。 其语法格式为 subplot(m,n,p) 其作用就是将一个图像显示对话框分成m行n列并显示第p幅图像。 在MATLAB程序语言中分号的用处为不显示程序运算中的中间结果这在一定程度上使系统运算的效 率增高因此在不需知道中间结果的情况下可以用分号作为一个句子的结尾而不显示该句运算的中 间结果。 代数运算中需要有若干幅带有随机噪声的图像数据在这里我们运用MATLAB中的FOR循环语句来完成 产生多幅带有噪声的图像数据及将这些图像数据进行相加运算。MATLAB中FOR END循环的用法如下 for end循环 这种循环允许一组命令以固定的和预定的次数重复循环的一般形式为 for variable expression statements end 举例如下 例 %一个简单的for循环的例子。 for i1:10; y(i)i; end; y %显示y的结果 y 1 2 3 4 5 6 7 8 9 10 为了得到最大的速度在for循环被执行之前应预先分配数组。例如前面所考虑的第一种情况在 for循环内每执行一次命令向量y的维数增加1。这样就使得MATLAB每通过一次循环对y分配更多的内存 这当然要花费一定的时间。为了可以不执行这个步骤for循环的例子应重写为 yzeros(1,10); for i1:10; y(i)i; end; y 在实际的对图像处理过程中由于我们读出的图像是unit8型而在MATLAB的矩阵运算中要求所有的 运算变量为double型双精度型。因此读出的图像数据不能直接进行相加求平均因此必须使用一个 函数将图像数据转换成双精度型数据。MATLAB中提供了这样的函数 im2double函数其语法格式为 I2 im2double(I1) 其中I1是输入的图像数据它可能是unit8或unit16型数据通过函数的变化输出I2为一个double型 数据这样两图像数据就可以方便的进行相加等代数运算. 作为一个示例现将刚刚显示的加有噪声的图像进行相加求平均以消除图像的噪声。在图像中我们给 图像加的是均值为0方差为0.02的高斯噪声将图像相加了一百遍再求其平均值。程序如下 %例图像加噪声再通过多次相加求平均的方法祛除噪声 [I,M]imread(eight.tif); Jimnoise(I,gaussian,0,0.02); subplot(1,2,1),imshow(I,M),title(原图像); subplot(1,2,2),imshow(J,M),title(加噪声后图像); Kzeros(242,308); for i1:100 Jimnoise(I,gaussian,0,0.02); J1im2double(J); KKJ1; end KK/100; %求图像的平均 figure;imshow(K),title(相加求平均后的图像); 例子2 Imresize函数的语法格式为 B imresize(A,m,method) 这里参数method用于指定插值的方法可选用的值为nearest最邻近法bilinear双线性插值 bicubic双三次插值默认为nearest。 B imresize(A,m,method)返回原图A的m倍放大的图像m小于1时效果是缩小。 例 Iimread(ic.tif); J imresize(I,1.25); imshow(I),title(原图像) figure,imshow(J),title(放大后的图像) 在工具箱中的函数imrotate可用上述三种方法对图像进行插值旋转默认的插值方法也是最邻近插值 法。 Imrotate的语法格式为 B imrotate(A,angle,method 函数imrotate对图像进行旋转参数method用于指定插值的方法可选用的值为nearest最邻 近法bilinear双线性插值bicubic双三次插值默认为nearest。一般说来旋转后 的图像会比原图大超出原图部分值为0。 例 Iimread(rice.tif); Jimrotate(I,30,bilinear); imshow(I);title(原图像) figure,imshow(J),title(旋转后的图像) 四、实验任务 实验要求设计一个程序完成下列要求 1、 读出girl.bmp这幅图像完成基本点运算,并显示各次运算的结果图像 2、 给这幅图像加入椒盐噪声后并与前一张图显示在同一图像对话框中 3、 运用for循环将100幅加有噪声的图像进行相加并求其平均值,显示求平均后图像。 4、 将图像分别放大1.5倍和缩小0.8倍插值方法使用双线性插值法。将图像顺时针旋转45度显示旋 转后的图像。 5、 设计实验步骤完成实验报告。 实验三 傅立叶变换及图象的频域处理 一、实验目的 1、了解离散傅立叶变换的基本原理 2、掌握应用MATLAB语言进行FFT及逆变换的方法 3、了解图象在频域中处理方法应用MATLAB语言作简单的低通滤波器。 二、实验原理 1、傅立叶变换的基本知识。 在图象处理的广泛应用领域中傅立叶变换起着非常重要的作用具体表现在包括图象分析、图象增 强及图象压缩等方面。 假设fx,y是一个离散空间中的二维函数则该函数的二维傅立叶变换的定义如下 u0,1…M-1 v0,1…N-1 (1) 离散傅立叶反变换的定义如下 x0,1…M-1 y0,1…N-13 Fp,q称为fm,n的离散傅立叶变换系数。这个式子表明函数fm,n可以用无数个不同频率 的复指数信号和表示而在频率w1w2处的复指数信号的幅度和相位是Fw1w2。 例如函数fm,n在一个矩形区域内函数值为1而在其他区域为0. 假设fm,n为一个连续函数则fm,n的傅立叶变换的幅度值即显示为网格图。 将傅立叶变换的结果进行可视化的另一种方法是用图象的方式显示变换结果的对数幅值。 2、MATLAB提供的快速傅立叶变换函数 1fft2 fft2函数用于计算二维快速傅立叶变换其语法格式为 B fft2(I) B fft2(I)返回图象I的二维fft变换矩阵输入图象I和输出图象B大小相同。 例如计算图象的二维傅立叶变换并显示其幅值的结果其命令格式如下 load imdemos saturn2 imshow(saturn2) B fftshift(fft2(saturn2)); imshow(log(abs(B)),[],notruesize) 2fftshift MATLAB提供的fftshift函数用于将变换后的图象频谱中心从矩阵的原点移到矩阵的中心其语法格式为 B fftshift(I) 对于矩阵IB fftshift(I)将I的一、三象限和二、四象限进行互换。 2ifft2 ifft2函数用于计算图象的二维傅立叶反变换其语法格式为 B ifft2(I) B ifft2(A)返回图象I的二维傅立叶反变换矩阵输入图象I和输出图象B大小相同。其语法格式含义与 fft2函数的语法格式相同可以参考fft2函数的说明。 3、简单低通滤波器的设计 一个图象经过傅立叶变换后就从空域变到了频域因此我们可以用信号处理中对于频域信号的处理 方法对一幅图象进行处理。比如对图象进行低通滤波等。 虽然在计算机中必定能够模拟一个锐截止频率的理想低通滤波器但它们不能用电子元件来实现。实 际中比较常用的低通滤波器有巴特沃思Butterworth滤波器、指数滤波器ELPF、梯形低通滤波 器等。 在实验中我们设计一个理想的低通滤波器。 设计理想的低通滤波器由其定义可知只要设计一个与频域图象大小完全相同的矩阵。在某一个域值内 该矩阵的值为1其余为0即可。 例若图象的大小为128*128则可以这样设计一个低通滤波器 Hzeros(128); H(32:96,32:96)1; %此处的范围是人为取定的可以根据需要更改。 若图象矩阵I的傅立叶变换是B(已经用fftshift将频谱中心移至矩阵的中心)则对这幅图象做低通滤 波再做傅立叶逆变换命令为 LOWPASSB.*H; %此处设变换后的矩阵为LOWPASS另注意这儿是矩阵的点乘。 Cifft2(LOWPASS); Imshow(abs(C)) 三、实验要求 1、 读取图象girl.bmp显示这幅图象对图象作傅立叶变换显示频域振幅图象。作傅立叶逆变换 显示图象看是否与原图象相同。 2、 设计一个低通滤波器截止频率自选对图象作低通滤波再作反变换观察不同的截止频率下反 变换后的图象与原图象的区别。 2、 选做显示一幅频域图象的相位分布图分别对振幅分布和相位分布作傅立叶逆变换观察两幅图 象体会频域图象中振幅与位相的作用。 实验四 图像的空域滤波 一、实验目的 1、了解图象滤波的基本定义及目的 2、了解空域滤波的基本原理及方法 3、掌握用MATLAB语言进行图象的空域滤波的方法。 二、实验原理 1、均值滤波 均值滤波是在空间域对图象进行平滑处理的一种方法易于实现效果也挺好。 设噪声η(m,n)是加性噪声其均值为0方差噪声功率为σ2而且噪声与图象f(m,n)不相关。 除了对噪声有上述假定之外该算法还基于这样一种假设图象是由许多灰度值相近的小块组成。这 个假设大体上反映了许多图象的结构特征。2式表达的算法是由某像素领域内各点灰度值的平均值来 代替该像素原来的灰度值。 可用模块反映领域平均算法的特征。对模版沿水平和垂直两个方向逐点移动相当于用这样一个模块 与图像进行卷积运算从而平滑了整幅图象。模版内各系数和为1用这样的模版处理常数图象时图像 没有变化对一般图象处理后整幅图像灰度的平均值可不变。 2、中值滤波 中值滤波是一种非线性处理技术能抑制图象中的噪声。它是基于图象的这样一种特性噪声往往以 孤立的点的形式出现这些点对应的象素很少而图象则是由像素数较多、面积较大的小块构成。 在一维的情况下中值滤波器是一个含有奇数个像素的窗口。在处理之后位于窗口正中的像素的灰 度值用窗口内各像素灰度值的中值代替。例如若窗口长度为5窗口中像素的灰度值为80、90、200、 110、120则中值为110因为按小到大或大到小排序后第三位的值是110。于是原理的窗口正中 的灰度值200就由110取代。如果200是一个噪声的尖峰则将被滤除。然而如果它是一个信号则滤波 后就被消除降低了分辨率。因此中值滤波在某些情况下抑制噪声而在另一些情况下却会抑制信号。 中值滤波很容易推广到二维的情况。二维窗口的形式可以是正方形、近似圆形的或十字形的。在图像 增强的具体应用中中值滤波只能是一种抑制噪声的特殊工具在处理中应监视其效果以决定最终是 福才有这种方案。实施过程中的关键问题是探讨一些快速算法。 MATLAB中提供了卷积运算的函数命令conv2其语法格式为 C conv2(A,B) C conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma×na的矩阵B为mb×nb的矩阵则C的大小为 (mamb1)×(nanb1)。 例 Amagic(5) A 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 B[1 2 1 ;0 2 0;3 1 3] B 1 2 1 0 2 0 3 1 3 Cconv2(A,B) C 17 58 66 34 32 38 15 23 85 88 35 67 76 16 55 149 117 163 159 135 67 79 78 160 161 187 129 51 23 82 153 199 205 108 75 30 68 135 168 91 84 9 33 65 126 85 104 15 27 MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2filter2的语法格式为 Y filter2(h,X) 其中Y filter2(h,X)返回图像X经算子h滤波后的结果默认返回图像Y与输入图像X大小相同。例如 其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度再调用conv2函数进行计 算。 Fspecial函数用于创建预定义的滤波算子其语法格式为 h fspecial(type) h fspecial(type,parameters) 参数type制定算子类型parameters指定相应的参数具体格式为 typeaverage为均值滤波参数为n代表模版尺寸用向量表示默认值为[3,3]。 type gaussian为高斯低通滤波器参数有两个n表示模版尺寸默认值为[3,3]sigma表示滤波 器的标准差单位为像素默认值为0.5。 type laplacian为拉普拉斯算子参数为alpha用于控制拉普拉斯算子的形状取值范围为[0,1] 默认值为0.2。 type log为拉普拉斯高斯算子参数有两个n表示模版尺寸默认值为[3,3]sigma为滤波器的 标准差单位为像素默认值为0.5 type prewitt为prewitt算子用于边缘增强无参数。 type sobel为著名的sobel算子用于边缘提取无参数。 type unsharp为对比度增强滤波器参数alpha用于控制滤波器的形状范围为[0,1]默认值为 0.2。 下面举一个均值滤波的例子 在MATLAB图像处理工具箱中提供了medfilt2函数用于实现中值滤波。 Medfilt2函数的语法格式为 B medfilt2(A) 用3×3的滤波窗口对图像A进行中值滤波。 B medfilt2(A,[m n]) 用指定大小为m×n的窗口对图像A进行中值滤波。 实验五 二值形态学操作 一、实验目的 #61550; 了解二值形态学的基本运算 #61550; 掌握基本形态学运算的Matlab实现 #61550; 了解形态操作的应用 二、原理 收缩和膨胀是数学形态学最基本的变换数学形态学的应用几乎覆盖了图像处理的所有领域给出利 用数学形态学对二值图像处理的一些运算。 膨胀就是把连接成分的边界扩大一层的处理。而收缩则是把连接成分的边界点去掉从而缩小一层的处 理。若输出图像为g(i,j),则它们的定义式为二值图像目标X是E的子集。用B代表结构元素Bs代表结构 元素B关于原点0 , 0的对称集合 即Bs是B旋转180°获得的。给出了三种简单的结构元素。膨胀和腐蚀变换的定义式为 膨胀 腐蚀 Matlab中用imdilate函数实现膨胀。用法为 Imdilate(X,SE).其中X是待处理的图像SE是结构元素对象。 例如: bw imread(text.tif); se strel(line,11,90); bw2 imdilate(bw,se); imshow(bw), title(Original) figure, imshow(bw2), title(Dilated) Matlab用imerode函数实现图像腐蚀。用法为: Imerode(X,SE).其中X是待处理的图像SE是结构元素对象。 例如: I imread(cameraman.tif); se strel(ball,5,5); I2 imerode(I,se); imshow(I), title(Original) figure, imshow(I2), title(Eroded) 三、练习 1 读取一幅图像进行骨架化操作并得到其边界 2 读取一幅图像转化为二进制图像并计算其面积 3读取一幅图像比较不同距离变换的图像效果 实验六、图像的边缘检测 一、实验目的 1、了解图像边缘提取的基本概念 2、了解进行边缘提取的基本方法 3、掌握用MATLAB语言进行图像边缘提取的方法。 二、实验原理 图像理解是图像处理的一个重要分支研究为完成某一任务需要从图像中提取哪些有用的信息以及 如何利用这些信息解释图像。边缘检测技术对于处理数字图像非常重要因为边缘是所要提取目标和背 景的分界线提取出边缘才能将目标和背景区分开来。在图像中边界表明一个特征区域的终结和另一 个特征区域的开始边界所分开区域的内部特征或属性是一致的而不同的区域内部的特征或属性是不 同的边缘检测正是利用物体和背景在某种图像特性上的差异来实现的这些差异包括灰度颜色或者 纹理特征。边缘检测实际上就是检测图像特征发生变化的位置。 由于噪声和模糊的存在检测到的边界可能会变宽或在某些点处发生间断因此边界检测包括两个 基本内容首先抽取出反映灰度变化的边缘点然后剔除某些边界点或填补边界间断点并将这些边缘 连接成完整的线。边缘检测的方法大多数是基于方向导数掩模求卷积的方法。 导数算子具有突出灰度变化的作用对图像运用导数算子灰度变化较大的点处算得的值比较高因 此可将这些导数值作为相应点的边界强度通过设置门限的方法提取边界点集。 一阶导数与是最简单的导数算子它们分别求出了灰度在x和y方向上的变化率而方向α上的灰度变 化率可以用相应公式进行计算;对于数字图像应该采用差分运算代替求导差分公式参考相关教材。 函数f在某点的方向导数取得最大值的方向是方向导数的最大值是称为梯度模。利用梯度模算子来 检测边缘是一种很好的方法它不仅具有位移不变性还具有各向同性。为了运算简便实际中采用梯 度模的近似形式。另外还有一些常用的算子如Roberts算子和Sobel算子。 由于Sobel算子是滤波算子的形式用于提取边缘。我们可以利用快速卷积函数简单有效因此应 用很广泛。 拉普拉斯高斯loG算法是一种二阶边缘检测方法。它通过寻找图像灰度值中二阶微分中的过零点 Zero Crossing来检测边缘点。其原理为灰度级变形成的边缘经过微风算子形成一个单峰函数峰 值位置对应边缘点对单峰函数进行微分则峰值处的微分值为0峰值两侧符号相反而原先的极值点 对英语二阶微分中的过零点通过检测过零点即可将图像的边缘提取出来。 MATLAB的图像处理工具箱中提供的edge函数可以实现检测边缘的功能其语法格式如下 BW edge(I,sobel) BW edge(I,sobel,direction) BW edge(I,roberts) BW edge(I,log) 这里BW edge(I,sobel)采用Sobel算子进行边缘检测。BW edge(I,sobel,direction)可以指定算 子方向即 direction’horizontal’为水平方向 direction’vertical’为垂直方向 direction’both’为水平和垂直两个方向。 BW edge(I,roberts)和BW edge(I,log)分别为用Roberts算子和拉普拉斯高斯算子进行边缘检测 。 例用三种算子进行边缘检测。 Iimread(eight.tif); imshow(I) BW1edge(I,roberts); figure ,imshow(BW1),title(用Roberts算子) BW2edge(I,sobel); figure,imshow(BW2),title(用Sobel算子 ) BW3edge(I,log); figure,imshow(BW3),title(用拉普拉斯高斯算子) 三、实验要求 1、 读出MATLAB图像处理工具箱中提供的rice.tif这幅图像并显示。 2、 分别用Roberts,Sobel和拉普拉斯高斯算子对图像进行边缘检测。比较三种算子处理的不同之处。 实验 七图像编码 一 实验目的 1 了解图像编码的基本方法 2 了解Matlab实现图像编码 二 实验原理 1 行程编码 行程编码又称行程长度编码RLERun Length Encoding是一种熵编码其编码原理相当简单 即将具有相同值的连续串用其串长和一个代表值来代替该连续串就称之为行程或行程串长称为行程 长度。例如有一字符串“aabbbcddddd”则经行程长度编码后可以只用“2a3b1c5d”来表示。 2 霍夫曼编码 Huffman方法根据源数据符号发生的概率进行编码。在源数据中出现概率越大的符号相应的码越短 出现概率越小的符号其码长越长从而达到用尽可能少的码符号表示源数据。它在变长编码方法中 是最佳的。 通过如下实例来说明这种编码方法。 设有编码输入 。其频率分布分别为 P(x2)0.3 。现求其最佳霍夫曼编码 。 具体编码方法是①把输入元素按其出现概率的大小顺序排列起来然后把最末两个具有最小概率的 元素之概率加起来②把该概率之和同其余概率由大到小排队然后再把两个最小概率加起来再重新 排队③重复②直到最后只剩下两个概率为止。 3.预测编码 预测编码是基于图像数据的空间或时间冗余特性用相邻的已知像素或像素块来预测当前像素 或像素块的取值然后再对预测误差进行量化和编码。 编码方法的Matlab实现参看参考书的相关章节。 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId1833768 发表于 2010年09月05日 21:29:00 | 评论( 1 ) | 编辑| 举报| 收藏 旧一篇:图像处理方向的就业前景 | 新一篇:Matlab图像处理工具箱 查看最新精华文章 请访问博客首页相关文章 pan356 发表于2010年9月24日 16:33:25 IP:58.252.103.*举报回复删除 发表评论 表 情 评论内容 用 户 名 登录 注册 匿名评论 匿名用户验 证 码 重新获得验证码 热门招聘职位【深圳好伴电子商务】高薪诚聘PHP、网络前端工程师、网页设计工程师!【Google】诚招技术精英史上人数最多职位最广!【敦煌网】诚聘研发类职位Java、PHP、网站架构师、运维工程师 等职位【柯达Kodak)】 诚聘C(视频图像处理)/C#/Java Engineer,工作地点:上海【新太科技】高薪诚聘各类软件开发人才(工作地点:广州,北京)【热聘】搜狐畅游全国热招开发工程师【网易杭州】技术类职位大招聘c、java、信息安全工程师等职位热招中【百度】诚聘 Web研发/工程师 一个舞台让你的想法去成为现实!!!【上海我友】福利购房计划高薪期权邀您共创互联网的奇迹!【NHN China】诚聘QA工程师/软件开发工程师, 急聘高薪诚聘【CSDN】诚聘 网编/网编实习生/UI设计师/广告销售【Synopsys】全球知名EDA软件设计公司诚聘 C/C/IC Engineer 【深圳好伴电子商务】高薪诚聘PHP、网络前端工程师、网页设计工程师!【Google】诚招技术精英史上人数最多职位最广!【敦煌网】诚聘研发类职位Java、PHP、网站架构师、运维工程师 等职位【柯达Kodak)】 诚聘C(视频图像处理)/C#/Java Engineer,工作地点:上海【新太科技】高薪诚聘各类软件开发人才(工作地点:广州,北京)【热聘】搜狐畅游全国热招开发工程师【网易杭州】技术类职位大招聘c、java、信息安全工程师等职位热招中【百度】诚聘 Web研发/工程师 一个舞台让你的想法去成为现实!!!【上海我友】福利购房计划高薪期权邀您共创互联网的奇迹!【NHN China】诚聘QA工程师/软件开发工程师, 急聘高薪诚聘【CSDN】诚聘 网编/网编实习生/UI设计师/广告销售【Synopsys】全球知名EDA软件设计公司诚聘 C/C/IC Engineer 公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告 北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号 世纪乐知(北京)网络技术有限公司 提供技术支持 江苏乐知网络技术有限公司 提供商务支持 Email:webmastercsdn.net Copyright © 1999-2010, CSDN.NET, All Rights Reserved 免费参加2010联想移动互联网开发者大会比Winrar技术更好的免费解压缩软件 本文来自CSDN博客转载请标明出处http://blog.csdn.net/zhywsh/archive/2010/09/05/5865086.aspx