医学图像处理实验报告(要)_第1页
医学图像处理实验报告(要)_第2页
医学图像处理实验报告(要)_第3页
医学图像处理实验报告(要)_第4页
医学图像处理实验报告(要)_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、医学图像处理实验报告医学图像处理实验报告Lab Report of Medical Image Processing系 部:学 号:姓 名:指导教师: 实验1 MATLAB基本操作及函数用法1.1 实验原理介绍1.1.1读取函数函数imread可以将图像读入MATLAB环境,语法为:imread(filename)其中filename是一个含有图像文件全名的字符串(包括任何可用的扩展名)。例如命令行f = imread ( chestxray.jpg);将JPEG图像chestxray读入图像数组f中。函数size可以给出一副图像的行数和列数:size (f)ans-1024 1024函数wh

2、os可以显示一个数组的基本附加信息。例如,语句whos fwhos行结尾处的分号对结果没有影响。1.1.2 显示图像一般使用函数imshow显示,其基本语法为:imshow (f, G)其中,f是一个图像数组,G是显示该图像的灰度级数。若G省略,默认为256。语法:imshow f, low high会将所有小于或等于low的值都显示为黑,所有大于或等于high的值都显示为白色。介于low和high之间的值将以默认的级数显示为中等亮度值。当用imshow显示另外一幅图像时,MATLAB会在屏幕上用新图像替换旧图像,为保持第一幅图像并同时显示第二副图像,可以使用如下figure函数:figure

3、, imshow(g)要了解图像文件的其他详细信息,可以使用imfinfo函数,其语法结构为:imfinfo filename其中,filename是存储在磁盘中的图像全名。1.1.3 保存图像使用函数imwrite可以将图像写在磁盘上,该函数语法为:imwrite (f, filename)下面的命令可以把图像f写为TIFF格式,在默认情况下使用语句imwrite (f,patient10_run1, tif)或imwrite (f, patient10_run1.tif)会将文件保存到当前的工作目录中。另外,如果是JPEG图像,其语法可以为:imwrite (f, filename.jpg

4、, quality, q)其中q是一个在0到100之间的整数(q越小,图像退化越严重)。函数imwrite另一种常用但只用于tif图像的语法为:imwrite (g, filename.tif, compression, parameter, resolution, colres rowres)其中,parameter有三种情况:为none表示无压缩,packbits表示比特压缩包压缩(非二值图像默认参数),ccitt表示ccitt压缩(二值图像默认参数)。colres为列分辨率。1.1.4 数据类型见下表:表格 01 数据类型。前8项数值类,第9项字符类,第10项逻辑类。名称描述double

5、双精度浮点数,范围【-10308,10308】(8比特每像素)unit8无符号8比特整数,范围【0,255】(1比特每像素)unit16无符号16比特整数,范围【0,65535】(2比特每像素)unit32无符号32比特整数,范围【0,4294967295】(4比特每像素)int8有符号8比特整数,范围【-128,127】(1比特每像素)int16有符号16比特整数,范围【-32768,32767】(2比特每像素)int32有符号32比特整数,范围【-2147483648,2147483647】(4比特每像素)single单精度浮点数,范围【-1038,1038】(4比特每像素)char字符(

6、2比特每像素)logical值为0或者1(1比特每像素)1.1.5 图像类型主要分为4种:l 亮度图像(Intensity image)l 二值图像(Binary image)l 索引图像(Indexed image)l RGB图像(RGB image)注意:一副图像的特征是由数据类和图像类这两者来表征的。例如,“unit8亮度图像”表示一副像素都是unit8数据类的亮度图像。1.1.6 数据类与图像类型之间的转换(1)数据类间的转换通用语法为:B=data_class_name(A)其中,data_class_name可以为表1第一列中的任意一项。(2)图像类和数据类型间的转换见下表:表格

7、02 IPT中用于进行图像类和数据类转换的函数名称将输入转换为有效的图像数据类im2unint8unit8logical,uint8,uint16,doubleim2uint16unit16logical,uint8,uint16,doublemat2graydouble,范围【0,1】doubleim2doubledoublelogical,uint8,uint16,doubleim2bwlogicaluint8,uint16,double要把一个double类的任意数组转换成取值范围为0,1的归一化double类数组,可以通过函数mat2gray完成,其基本语法为:g=mat2gray(A

8、, Amin, Amax)其中,图像g的取值范围在0(黑色)到1(白色)之间。转换时,小于Amin的值在g中变为0,大于Amax的值变为1。1.1.7 数组索引在MATLAB中,v=1 3 5 7 9代表一维行向量,使用转置运算符(.)可以把行向量转为列向量。要存取元素数据块,可以使用冒号(:)。例如,下列语句代表存取第三个到最后一个元素:v(3:end)ans= 5 7 9注意:符号1:2:end表示索引从1开始计数,步长为2,直到结束。步长可以为负。例如,求一个矩阵所有元素之和:s=sum(A(:)1.1.8 运算符MATLAB运算符一般分为以下三种主要类别:l 执行数值计算的算术运算符l

9、 在数量上比较操作数的关系运算符l 执行函数AND、OR和NOT的逻辑运算符常用的运算符和算术函数如下面几个表所示:表格 03 数组和矩阵运算符运算符名称MATLAB函数注释和示例+数组和矩阵加plus(A,B)a+b,A+B或a+A-数组和矩阵减minus(A,B)a-b,A-B或a-A.*数组乘times(A,B)C=A.*B,C(I,J)=A(I,J)*B(I*J)*矩阵乘mtimes(A,B)标准矩阵乘./数组右除rdivide(A,B)C=A./B.数组左除ldivide(A,B)C=A.B/矩阵右除mrdivide(A,B)矩阵左除mldivide(A,B).数组求幂power(A

10、,B)C=A.B,有C(I,J)=A(I,J)B(I,J)矩阵求幂mpower(A,B).|向量和矩阵转置transpose(A)标准的向量和矩阵转置|向量和矩阵复共轭转置ctanspose(A)标准的向量和矩阵共轭转置+一元加uplus(A)+A=0+A-一元减uminus(A)-A=0-A:冒号表格 04 IPT支持的图像算术函数函数描述imadd两幅图像相加或把常数加到图像imsubtract两幅图像相减或从图像中减去常数immultiply两幅图像相乘,在相应的像素对间进行;或图像乘以一个常数imdivide两幅图像相除,在相应的像素对间进行;或图像除以一个常数imadsdiff计算两

11、幅图像间的绝对差imcomplement对图像求补imlicomb计算两幅或多幅的线性组合表格 05 关系运算符运算符名称小于大于=大于等于=等于=不等于表格 06 逻辑运算符运算符名称&AND(与)|OR(或)NOT(非)表格 07 逻辑函数函数注释xor若两个操作数逻辑上不同,则函数xor返回1;否则,返回0all若一个向量中的所有元素都非零,返回1;否则,返回0any若一个向量中的任何元素都非零,返回1;否则,返回0。该函数在矩阵中按列操作1.2 实验内容1.2.1 在“素材”文件夹下,读入“Fig2.19(a).jpg”并且提取该图像的基本信息,写出实验步骤和实验结果。图 1 图像的读

12、取与显示 f=imshow(Fig2.19(a).jpg); whos f Name Size Bytes Class Attributes f 1x1 8 double 1.2.2 读取图像“Fig1.14(d).jpg”,使用函数imwrite和subplot函数分别显示质量参数q=50,25,5,0的结果如图所示。写出实验步骤。 f=imread(Fig1.14(d).jpg); subplot(3,2,1),imshow(f); subplot(3,2,2),imshow(bubbles50.jpg); imwrite(f,bubbles25.jpg,quality,25) subpl

13、ot(3,2,3),imshow(bubbles25.jpg); imwrite(f,bubbles15.jpg,quality,15) subplot(3,2,4),imshow(bubbles15.jpg); imwrite(f,bubbles5.jpg,quality,5) subplot(3,2,5),imshow(bubbles5.jpg); imwrite(f,bubbles0.jpg,quality,0) subplot(3,2,6),imshow(bubbles0.jpg);观察哪副图像压缩最大后没有“伪轮廓”。此时键入命令: imfinfo bubbles25.jpg会得到如

14、下信息:ans = Filename: bubbles25.jpg FileModDate: 15-十月-2012 15:49:44 FileSize: 13875 Format: jpg FormatVersion: Width: 714 Height: 682 BitDepth: 8 ColorType: grayscale FormatSignature: NumberOfSamples: 1 CodingMethod: Huffman CodingProcess: Sequential Comment: 其中,使用width乘以height乘以BitDepth再除以8,得到:714*6

15、82*8/8=486948字节。把这个结果除以FileSize就可以的得到压缩比:486948/13875=35.10。此时压缩比是在保持图像质量与应用要求一致的前提下得到的,它可以使得单位时间内传输的数据量大约是压缩前的35倍。利用上述原理,请写出在MATLAB中如何计算得到压缩比。 k=imfinfo(bubbles25.jpg); image_bytes=k.Width*k.Height*k.BitDepth/8; compressed_bytes=k.FileSize; compression_ratio=image_bytes/compressed_bytescompression_

16、ratio = 35.09541.2.3 如图(Fig5.07(a).jpg)所示,把原始图像以tiff格式存储为无压缩的名为“sf.tif”的图像,且像素不变,但尺寸减小为1.5*1.5英寸。写出实验步骤。1.2.4 将double类图像“ f=1 2;3 4”转换为二值图像,其中1、2变为0,3、4变为1。请写出实验步骤。1.2.5 利用数组索引的概念,写出实现下列图像的实验步骤。1.2.5 设A=1 2 3;4 5 6; 7 8 9和B=0 2 4; 3 5 6; 3 4 9计算A=B,A=B的结果。1.2.6 设A=1 2 0; 0 4 5,B=1 -2 3; 0 1 1,计算A&B,

17、 xor(A,B), all(A), any(A), all(B), any(B)的结果。实验2 亮度变换与空间滤波2.1 实验原理2.1.1 亮度变换函数函数imadjust是对灰度图像进行亮度变换的基本IPT工具。语法为:g = imadjust (f, low_in high_in, low_out high_out, gamma)次函数将图像f中的亮度值映射到g中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。参数gamma指定了曲线的形状,该曲线用来映射f的亮度值,以便生成图像g。2.1.2 直方图处理与函数绘图(1)函数imhist是

18、处理图像直方图的核心函数,其语法为:h = imhist (f, b)其中,f为输入图像,h为其直方图h(rk),b是用于形成直方图的“收集箱“的个数(即灰度级的个数)。b默认为256。(2)绘制直方图还有另外三个函数bar、stem和plot分别以条形图、杆状图和线图的形式体现直方图,其语法为:bar (horz, v, width)stem (horz, v, color_linestyle_marker, fill)plot (horz, v, color_linestyle_marker)其中,horz是一个与v有着相同维数的向量,它包含水平标度值的增量;width是一个在0和1之间的

19、数,为0则竖条是简单垂直线,为1则竖条明显;color_linestyle_marker来自表格 01的三个值,默认颜色为black,默认线条为solid(实线),默认标记点形状为circle。表格 01 函数stem和函数polt属性。none属性只适用于函数plot,且必须单独指定。符号颜色符号线型符号标记k黑-实线+加号w白-虚线圆形r红:点线*星号g绿-.点划线.点b蓝none无线x叉形c青s方形y黄d菱形m品红none无标记(3)直方图均衡化由工具箱中的函数histeq实现,该函数语法为:g = histeq (f, nlev)其中,f为输入图像;nlev是为输出图像指定的灰度级数,

20、其默认值为64,但一般设定为256。(4)直方图匹配(也称直方图规定化)使用histeq实现,语法为:g = histeq (f, hspec)其中,f为输入图像,hspec为指定的直方图(一个由指定值构成的行向量),g为输出图像,其直方图类似指定的直方图hspec。(5)线性空间滤波是利用工具箱中的函数imfilter来实现,通用语法为:g = imfilter (f, w, filtering_mode, boundary_options, size_options)其中,f是输入图像,w为滤波掩模,g为掩模结果,其他参数参见下表。表格 02 函数imfilter的选项选项描述滤波类型co

21、rr滤波通过使用相关来完成。该值默认。conv边界类型P输入图像的边界通过用值P(无引号)来填充扩展。默认为0。replicate图像大小通过复制外边界的值来扩展。symmetric图像大小通过镜像反射外边界来扩展。circular图像大小通过将图像看成一个二维周期函数的一个周期来扩展。大小选项full输出图像大小与被扩展图像大小相同。same输出图像大小与输入图像大小相同。这可将通过滤波掩模的中心点的偏移限制到原始图像中包含的点来实现。该值默认。(6)线性空间滤波器可通过函数fspecial来实现,语法为:w = fspecial (type, parameters)其中,type表示滤波器

22、类型,parameters进一步定义了指定的滤波器,详见下表。表格 03 函数fspecial支持的空间滤波器类型函数和参数averagefspecial(average,r c)即大小为r*c的一个矩阵平均滤波器。默认为3*3。若由一个数来代替r c,则表示方形滤波器。diskfspecial(disk,r)一个圆形平均滤波器(包含在2r+1大小的正方形内),半径为r。默认半径为5。gaussianfspecial(laplacian,r c,sig)一个大小为r*c的高斯低通滤波器,标准偏差为sig(正)。默认值为3*3和0.5。若由一个数来代替r c,则表示方形滤波器。laplacian

23、fspecial(laplacian,alpha) 一个大小为3*3的拉普拉斯滤波器,其形状由alpha决定,alpha是范围内0,1的一个数.alpha默认为0.5。logfspecial(log,r c,sig) 一个大小为r*c的高斯-拉普拉斯(LoG)滤波器,标准偏差为sig(正)。默认值为5*5和0.5。若用一个数代替r c,则表示一个方形滤波器。motionfspecial(motion,len,theta)围绕一副有着len像素的图像线性运动时(类似照相机与景物的关系),输出一个滤波器。运动方向为theta,单位为度,即从水平方向逆时针转动的角度,默认值为9和0,表示沿水平方向9

24、个像素的运动。prewittfspecial(prewitt)输出一个大小为3*3的prewitt掩模wv,它近似于垂直梯度。水平梯度掩模可以通过置换结果wh=wv获得。sobelfspecial(sobel)输出一个大小为3*3的掩模wv,它近似于垂直梯度。水平梯度掩模可以通过置换结果sh=sv获得。unsharpfspecial(unsharp,alpha)输出一个大小为3*3的非锐化滤波器。参数alpha控制形状;它必须是一个大于等于1.0的数,默认值为0.2。(6)非线性空间滤波,主要介绍二维中值滤波函数:g = medfilt2 (f, m n, padopt)其中,数组m n定义了

25、一个大小为m*n的邻域,中值就在该邻域上计算,而padopt指定了三个可能的边界填充选项之一:zero(默认值);symmetric,此地f按照镜像反射方式对称地沿着边界扩展;indexed,若f是double类图像,则以1来填充图像,否则以0来填充图像,该函数默认形式为:g = medfilt2 (f)它使用一个大小为3*3的邻域来计算中值,并用0来填充图像的边界。2.2 实验内容2.2.1 如图是数字乳房X射线原始图像、负片图像、亮度范围为0.5 0.75的图像和令gamma=2的图像。写出实验步骤来显示这4副图像。(提示:使用imadjust函数) f= imread(Fig3.04(a

26、).jpg); subplot(2,2,1),imshow(f) g1=imadjust(f, 0 1,1 0); subplot(2,2,2),imshow(g1) g2=imadjust(f,0.5 0.75, 0 1); subplot(2,2,3),imshow(g2) g3=imadjust(f, , , 2); subplot(2,2,4),imshow(g3)2.2.2 读取图像Fig1.06(b).jpg,并绘制4种类型直方图。效果如下图所示。 f=imread(Fig1.06(b).jpg); imhist(f); h1=h(1:10:256); horze=1:10:256

27、; bar(horze,h1) axis(0 255 0 15000) set(gca, xtick, 0:50:255) set(gca, ytick, 0:2000:15000) stem(horze, h1, fill) axis(0 255 0 15000) set(gca, xtick,0:50:255) set(gca, ytick,0:2000:15000) plot(h) axis(0 255 0 15000) set(gca, xtick,0:50:255) set(gca, ytick,0:2000:15000)2.2.3 如图(Fig3.15(a)1top.jpg)是电子

28、显微镜下放大700倍的花粉图像,为得到如图所示结果,请写出实验步骤。 f=imread(Fig3.15(a)1top.jpg); imshow(f) figure,imhist(f) ylim(auto) g=histeq(f,256); figure,imshow(g) figure,imhist(g) ylim(auto) hnorm=imhist(f)./numel(f); cdf=cumsum(hnorm); plot(x,cdf) axis(0 1 0 1) set(gca,xtick,0:.2:1) set(gca,ytick,0:.2:1) xlabel(input intens

29、ity values,fontsize,9) ylabel(输出亮度值,fontsize,9) text(0.2,0.5,变换函数,fontsize,9)实验3 图像复原复原的目的是在预定义的意义上改善给定的图像。图像增强主要是主观的处理,图像复原主要是客观的处理,趋向于将退化模型化,并用相反的处理来恢复原图像。3.1 实验原理3.1.1 噪声模型(1)工具箱使用imnoise函数来污染一副图像,基本语法为;g = imnoise (f, type, parameters)其中,f是输入图像,该函数常见语法形式如下:l g = imnoise (f, gaussian, m, var)将均值为

30、m,方差为var的高斯噪声加到图像f上。默认值为0,、方差为0.01的噪声。l g = imnoise (f, localvar, V)将均值为0、局部方差为V的高斯噪声添加到图像f上,其中V是与f大小相同的一个数组,它包含每个点的理想方差值。l g = imnoise (f, locatlvar, image_intensity, var)将均值为0的高斯噪声添加到图像f上,其中噪声的局部方差var是图像f的亮度值的函数。参量image_intensity必须包含在范围0,1内的归一化亮度值,它与var是大小相同的向量。本函数绘制出噪声方差和图像亮度的函数关系。l g = imnoise (

31、f, salt & pepper, d)用椒盐噪声污染图像f,其中d是噪声密度(即包含噪声值的图像区域的百分比)。因此,大约有d*numel(f)个像素受到影响,默认噪声密度为0.05。l g = imnoise (f, speckle, var)用方程g=f+n*f将乘法性质噪声添加到图像f上,其中n是均值为0、方差为var的均匀分布的随机噪声。var默认为0.04。l g = imnoise (f, poission)从数据中生成泊松噪声,而不是将人工的噪声添加到数据中。为了遵守泊松统计,unit8类和uint16类图像的亮度必须和光子(或其他任何的量子信息)的数量相符合。当每个像素的光子

32、数量大于65535(但必须小于1012)时,就要使用双精度图像。亮度值在0和1之间变化,并且对应于光子的数量除以1012。(2)使用指定的分布产生空间随机噪声。空间噪声值是随机数,以概率密度函数(PDF)或相应的累积分布函数(CDF)表征。利用已有M文件“imnoise2.m”。(3)周期噪声,一般产生于图像采集过程中的电气和/或电机干扰。利用已有M文件“imnoise3.m”完成实验。(4)估计噪声参数。函数statmoments计算均值和n阶中心矩,并返回向量v。由于0阶矩阵总为1,1阶矩总为0,所以statmoments忽略这两个矩,语法形式如下:v, unv = statmoments

33、 (p, n)其中,p为直方图向量,n是计算的矩的数量。噪声参数通常直接由带噪声的图像或一组带噪声的图像来估计。在MATLAB中,使用函数roipoly来选择一个感兴趣区域(ROI),语法为:B = roipoly (f, c, r)其中,f是我们感兴趣的图像,c和r是多边形顶点的相应列坐标和行坐标,输出的B是一个二值图像,它是一个与f大小相同且在感兴趣区域外为0、在感兴趣去野外为1的二值图像,它是一个用来限制在感兴趣区域内的掩模。交互式指定一个多边形的ROI,可以使用下面的语法:B = roipoly(f)该函数功能是把图像f显示到屏幕上,让用户使用鼠标来指定多边形。参见“histroi.m

34、“文件。3.1.2 噪声的复原:空间滤波(1)空间噪声滤波器。使用“spfilt.m“文件。函数imlincomb的用途是计算输入的线性组合,语法为:B = imlincomb (c1, A1, c2, A2, ck, Ak)它实现等式:B = c1* A1 + c2* A2, + ck* Ak其中,c是double类实标量,A是有着相同类和大小的数组。(2)自适应空间滤波器。可以利用adpmedian的M函数来实现,语法为:f = adpmedian (g, Smax)其中,g是将被滤波的图像,Smax是允许的最大自适应滤波器窗口的大小。3.1.3 退化函数建模(1)退化函数建模。图像模糊是

35、导致图像退化的重要原因,可以在图像获取时传感器和场景之间的均匀线性运动而产生的图像模糊。可以利用fspecial对图像模糊建模:PSF = fspecial (motion, len, theta)调用fspecial 将返回PSF,它近似于有着len个像素的摄像机的线性移动效果,参数theta以度为单位,以顺时针方向正对水平轴度量。len默认值是9,theta默认值是0。函数checkerboard用于产生测试图像,语法为:C = checkerboard (NP, M, N)其中,NP是每个正方形一边的像素数,M是行数,N是列数,若M和N都省略,将产生一个一面为8个正方形的正方形测试板。M

36、函数piexldup 通过像素来放大图像,语法为:B = piexldup (A, m, n)该函数将A上的每个像素在垂直方向上总共复制n次。3.1.4 维纳滤波(1)维纳滤波使用deconvwnr函数来实现,有三种语法形式:fr = deconvwnr (g, PSF)fr = deconvwnr (g, PSF, NSPR)fr = deconvwnr (g, PSF,NACORR, FACORR)其中,g代表退化图像,fr是复原图像,PSF是噪信比(或是个常量或是个数组),NSPR可以是一个交互的标量输入,NACORR和FACORR是噪声和未退化图像的自相关函数。3.1.5 约束最小乘方

37、(正则)滤波(1)约束最小乘方(正则)滤波使用函数deconverg来实现,语法为:fr = deconverg (g, PSF, NOISEPOWER, RANGE)其中,g是被污染的图像,fr是复原图像,NOISEPOWER与 成比例,RANGE为值的范围。3.1.5 使用Lucy-Richardson复原的迭代非线性复原(1)Lucy-Richardson复原的迭代非线性复原利用deconvlucy函数来实现,语法为:fr = deconvlucy (g, PSF, NUMIT, DAMPAR, WEIGHT)其中,g是退化的图像,fr是复原图像,,PSF是点扩散函数,NUMIT为迭代的

38、次数(默认10次)。DAMPAR是一个标量,它指定了结果图像与原图像g之间的偏离阈值,当像素值偏离原值的范围并在DAMPAR之内时,就不用迭代。这样可以抑制这些像素的噪声,有保存了必要的图像细节,默认值为0(无衰减)。WEIGHT是一个与g相同大小的数组,它为每一个像素分配一个权重来反映其重量。例如从某个有缺陷的成像数组 得出一个不良像素,最终会被赋以权重值零,从而排除该像素去求解。3.1.5 盲去卷积(1)盲去卷积通过函数deconvblind来实现,其语法为:f, PSFe = deconvblind (g, INITPSF)其中,g是退化的图像,INITPSF是点扩散函数的初步估计,PS

39、Fe是这个函数最终计算得到的估计值,fr是用估计的PSF复原的图像。迭代默认10次。3.1.6 几何变换与图像配准(1)空间几何变换。IPT利用一个所谓的tform结构来表示空间变换,通过函数maketform来实现,语法为:tform = maketform (transform_type, transform_parameters)transform_type是下列字符串之一:affine, projective, box, composite或custom。函数imtransform使用反向映射,即按照顺序扫描每个输出像素,用 计算出输入图像上的对应位置,并将其插值到最近的输入像素之中,

40、以决定输出像素的值。其语法为:g = imtransform (f, tform, interp)其中,interp是一个字符串,用来指明像素怎样获得输出像素,可以是:nearest, billnear, bicublc 或 bicubic。(2)图像配准。工具箱支持以控制点为基础的图像配准,控制点也称为联接点,即在两幅图像中的位置已知或可以交互地选择的像素的一个子集。函数cp2tform支持的空间变换类型已列在下表中。表格 01 函数cp2tform和maketform支持的变换类型变换类型描述函数Affine(仿射)缩放、旋转、剪切和平移的组合。直线仍然保持直线,平行线保持平移。maket

41、formBox(盒)沿着每个方向独立地缩放和平移;仿射变换的子集。cp2tformComposite(合成)顺序应用的空间变换集合。maketformCustom(自定义)用户自定义的空间变换;用户提供 和 函数。maketformLinear conformal(线性等角)缩放(在各个方向上都相同)、旋转、和平移;仿射变换的子集。maketformLWM局部加权平均;局部变化的空间变换。cp2tformPiecewise linear(分段线性)局部变化的空间变换。cp2tformPolynomial(多项式)输入空间坐标是输出空间的多项式。maketformProject(投影)如仿射变换

42、那样,直线保持为直线,但平行线收敛于消失点。cp2tform3.2 实验内容3.2.1 使用函数imnoise2(在M函数文件夹下)产生数据的六种直方图:高斯、均匀、对数正态、瑞利、指数、厄兰(从左至右),如图所示。请写出实验代码。 r=imnoise2(gaussian,100000,1,0,1); p=hist(r,50); bar(p); r2=imnoise2(uniform,100000,1); p=hist(r2,50); bar(p) r2=imnoise2(lognormal,100000,1); p=hist(r2,50); bar(p) r2=imnoise2(raylei

43、gh,100000,1); p=hist(r2,50); bar(p) r2=imnoise2(exponential,100000,1); p=hist(r2,50); bar(p) r2=imnoise2(erlang,100000,1); p=hist(r2,50); bar(p) 3.2.2 使用函数imnoise3,产生频谱和空间正弦噪声模式,如图所示。 c=0 64;0 128;32 32;64 0;128 0;-32 32; r,R,s = imnoise3 (512,512,c); imshow(s, ) figure,imshow(r, ) c2=0 32;0 64;16 1

44、6;32 0;64 0;-16 16; r2,R2,s2 = imnoise3 (512,512,c2); figure,imshow(s2, ) figure,imshow(r2, ) c3=6 32;-2 2; r3,R3,s3 = imnoise3 (512,512,c3); figure,imshow(r3,); a=1 5; r4,R4,s4=imnoise3(512,512,c3,a); figure,imshow(r4,); 3.2.3 估计噪声参数。如图所示,是一副带有噪声的图像(Fig5.07(b).jpg),利用已学的技术来估计噪声类型及其参数。写出实验步骤。 f=imre

45、ad(Fig5.07(b).jpg); B,c,r=roipoly(f); 此时利用鼠标在图像上选取多边形 figure,imshow(B); p, npix=histroi(f, c, r); figure,bar(p,1) v, unv=statmoments(p, 2); vv = 0.5454 0.0027 unvunv = 139.0833 176.1200 X=imnoise2(gaussian, npix,1,147,20); figure,hist(X, 130) axis(0 300 0 140) 3.2.4 使用函数spilt。如图所示的8幅图像分别是:(a)一幅被概率只有

46、0.1的胡椒噪声污染的unit8类图像、(b)被概率为0.1的盐粒噪声污染的图像、(c)用阶为Q=1.5的3*3反调和滤波器对图a滤波的结果、(d)用Q=-1.5对b的滤波的结果、(e)用3*3最大滤波器对a滤波的结果、(f)用3*3最小滤波器对图b滤波的结果。请写出实验步骤。 f=imread(Fig5.08(a).jpg); m,n=size (f); r = imnoise2(salt & pepper,m ,n, 0.1, 0); c = find(r = 0); gp = f; gp (c) = 0; r=imnoise2(salt & pepper,m,n,0,0.1); c=fi

47、nd(r =1); gs=f; gs(c)=255; figure, imshow(gs) fp = spfilt(gp, chmean, 3, 3, 1.5); figure,imshow(fp) fs= spfilt(gs, chmean, 3, 3, -1.5); figure,imshow(fs) fmax = spfilt(gp, max, 3, 3); figure,imshow(fmax) fmin = spfilt(gs, min, 3, 3); figure,imshow(fmin) 3.2.5 自适应中值滤波。如图所示,3副图像分别为:被密度为0.25的椒盐噪声污染的图像,

48、使用大小为7*7的中值滤波器得到的结果、使用Smax=7的自适应中值滤波得到的结果。请写出实验步骤。 f=imread(Fig5.07(a).jpg); g=imnoise(f,salt & pepper, .25); imshow(g) f1=medfilt2(g, 7 7, symmetric); figure,imshow(f1); f2=adpmedian (g, 7); figure,imshow(f2); 3.2.6 模糊噪声图像的建模。如图所示,(a)原图像;(b)使用参数len=7和theta=-45的函数fspecial模糊的图像;(c)噪声图像;(d)图(b)和图(c)之和

49、。请写出实验步骤。 ff=checkerboard(8); figure,imshow(ff); psf= fspecial(motion, 7,45); gb=imfilter(ff, psf, circular); figure,imshow(gb); psfpsf = 0 0 0 0 0 0.0145 0 0 0 0 0 0.0376 0.1283 0.0145 0 0 0 0.0376 0.1283 0.0376 0 0 0 0.0376 0.1283 0.0376 0 0 0 0.0376 0.1283 0.0376 0 0 0 0.0145 0.1283 0.0376 0 0 0

50、0 0 0.0145 0 0 0 0 0 noise=imnoise(zeros(size(ff), gaussian, 0, 0.001); figure,imshow(noise); g= gb+ noise; figure,imshow(g) figure,imshow(pixeldup(ff, 8), ) 3.2.7 使用函数deconvwnr复原模糊噪声图像。如图所示,(a)模糊的噪声图像;(b)逆滤波的结果;(c)使用常数比率的维纳滤波结果;(d)使用自相关函数的维纳滤波的结果。请写出实验步骤。 ff=checkerboard(8); psf= fspecial(motion, 7,45); gb=imfilter(ff, psf, circular); figure,imshow(gb); noise=imnoi

温馨提示

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

评论

0/150

提交评论