您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数字图像处理 (基于Matlab) 滤波
南京大学电子科学与工程学院第1页共22页《数字图像处理》实验报告撰写新的报告输入个人信息输入个人信息姓名董辰辰学号111180031专业电子信息科学类电子信息科学类实验33报告正文一、实验目的(不少于200字)撰写/修改实验目的一、第一个实验用的是各种空间域的方式来滤波,也就是直接把图像和空间滤波器的模板做卷积,当然图像处理很重要的一个部分还有频域的处理。这就涉及到图像的傅里叶变换,通过将空域内的图像傅里叶变换转化到频域中,然后直接对频域中的图像进行处理,直接和模板做点乘就可以,然后通过傅里叶逆变换将图像转换回去,并不会损失信息。而且大大加强了对图像处理的可操作性。频域中滤波可以实现的效果和空域中是相同的,可以进行平滑滤波,也可以进行各种低通和高通的滤波。一般情况下,低频部分代表着图像缓慢变化的部分,高频部分对应着图像的细节和噪声等。另外需要注意的是虽然频域滤波器可以通过傅里叶逆变换转换为空间域滤波器了,但是这样的转化意义并不是太大,实际演示的效果来看,如果两个滤波器的尺寸相同,那么通常在频域中进行滤波计算更为有效。在空域中使用较小的模板效果更佳好,可以使用频域滤波器放反变换回去的空域滤波器模板作为构造空间滤波器的一个重要参考。一般频域中滤波的步骤如下:1、用(-1)^(x+y)点乘输入图像来进行中心变换,2、计算图像的DFT(u,v)3、用滤波器函数H(u,v)乘以F(u,v)4、将3中的结果进行反DFT变换5、计算4中结果的实部6、用(-1)^(x+y)乘以5中的结果二、在图像处理中很重要的一个算法就是霍夫曼变换,将参数空间分割成为累加器单元。通过统计超过阈值的点来确定相应的直线等各种图形,本次实验中分为检测圆和检测直线。对于检测直线来讲,每一条直线都有标准式,通过标准式将图像变换到霍夫曼空间中,通过统计超过阈值的点,可以确定出这条直线,然后画出这条直线,至于这条直线的起止点只要沿着这条直线一直到没有目标点为止。对于圆来讲稍微复杂一些,因为圆有三个未知量,在本实验中构造了一个三维的霍夫曼空间来存储变换后的数据。本次实验总共就是以上两部分,一部分是空域和频域的滤波,通过对比不同的结果,了解频域空域滤波各自的特点和优缺点。通过霍夫曼变换检测直线和圆,了解霍夫曼变换的特点和在实际中的应用。以及尝试自己改进其算法。二、核心代码及运行后截图(截图方法:先按下Alt再按下PrtScr,然后粘贴进文档)原图:南京大学电子科学与工程学院第2页共22页原图的频谱:各种空域滤波器使用的代码:南京大学电子科学与工程学院第3页共22页各种空域滤波器滤波后的图像显示:巴特沃斯低通滤波器代码:南京大学电子科学与工程学院第4页共22页巴特沃斯低通滤波器滤波后的效果:理想低通滤波器代码:南京大学电子科学与工程学院第5页共22页理想低通滤波器处理后图像:高斯低通滤波器代码:南京大学电子科学与工程学院第6页共22页高斯低通滤波器显示效果:南京大学电子科学与工程学院第7页共22页巴特高通滤波器代码:南京大学电子科学与工程学院第8页共22页巴特高通滤波器效果图:高斯高通滤波器代码图:南京大学电子科学与工程学院第9页共22页高斯高通滤波器处理后效果图理想高通滤波器代码:南京大学电子科学与工程学院第10页共22页理想高通滤波器处理后效果巴特沃斯带阻滤波器消除纹波代码:南京大学电子科学与工程学院第11页共22页巴特沃斯带阻滤波器消除纹波处理后图像:理想带阻滤波器消除纹波代码:南京大学电子科学与工程学院第12页共22页理想带阻滤波器消除纹波处理后效果:南京大学电子科学与工程学院第13页共22页巴特沃斯滤波器特定频域消除纹波代码:巴特沃斯滤波器特定频域消除纹波处理后效果图:南京大学电子科学与工程学院第14页共22页理想滤波器特定频率消除纹波代码:理想滤波器特定频率消除纹波处理后效果图:南京大学电子科学与工程学院第15页共22页特定频域高斯滤波器消除纹波代码:特定频域高斯滤波器消除纹波处理后效果图:南京大学电子科学与工程学院第16页共22页检测直线和圆原始图像:南京大学电子科学与工程学院第17页共22页检测直线的代码:南京大学电子科学与工程学院第18页共22页霍夫曼变换后图像并标出大于阈值的点:南京大学电子科学与工程学院第19页共22页霍夫曼变换检测直线的结果,所有直线用红色粗线标出:南京大学电子科学与工程学院第20页共22页霍夫曼变换检测圆的代码:南京大学电子科学与工程学院第21页共22页霍夫曼变换检测圆的效果图:三、实验分析(不少于500字)撰写/修改实验小结南京大学电子科学与工程学院第22页共22页 本次实验分为两个部分,第一部分是空间域和频域的滤波,第二部分是霍夫曼变换检测圆和直线。 对于第一部分,刚开始的时候并没有想到如何将图像中的纹波滤除,所以就从最传统的空间滤波器和频域滤波器对图像进行处理,因为在空域很难想到用什么滤波器可以滤除纹波,所以在空域处理图像的时候完全是采用了matlab中提供的几个典型的滤波函数进行图像处理的,低通滤波器分为平滑滤波器、中值滤波器,高斯滤波器等,高通滤波器对应的算子有sobel算子,prewitt算子,roberts算子,高斯拉普拉斯算子等,因为matlab中有现成的函数,所以执行起来很简单。因为锐化的空间滤波器之前在计算梯度的时候都使用过,原理之类的在这里就不在赘述了,但是根据处理的结果,很明显的看出,这几种空域滤波器根本不能消除纹波,而且甚至不知道为什么不能消除纹波,这一点让我觉得很苦恼,网上查了一下在空域似乎没有很好的解决这种问题的方法。于是想到在频域中处理也许可以找到好的解决办法。 首先求出图像的频谱图,为了更好的显示,所以在傅里叶变换之后取绝对值的对数进行显示,并将低频部分移到图像的中心,对于频谱图像来讲,只有1/4的图像具有有效信息,其他的部分平移翻转即可得到,转化到频谱之后一开始也并没有看出问题在哪里,但是认识到纹波应该是对应一个特定的频率,而且作为噪声一类的东西,应该是在频域中峰值较高的值,应该是一个亮点,首先还是采用传统的滤波器进行处理,在频域中采用了传统的理想低通,理想巴特沃斯低通,理想高斯低通,理想高通,理想巴特沃斯高通,理想高斯高通滤波器分别对图像进行处理,通过不断的改变滤波器的半径来观察滤波器的效果,在上面的代码图中明显的可以看出这些传统的滤波器处理的效果是很差的,不仅没有滤除纹波而且还降低了图像的品质。但是我做这些也并不是完全没有意义的。通过观察处理后的结果,我发现只要是滤除了图像中除了原点外那两个亮点就可以消除消除纹波,虽然这时候的滤波半径比较大,图像损失的信息比较多,品质并不好,但是纹波确实被滤除了,这就为我后来处理掉纹波提供了很好的思路。 根据上面分析得到的方法,我觉得只要滤除掉图像的除原点外那两个亮点(以后称为奇点)就可以滤除纹波。顺着这个思路我就在频域中设计自己的滤波器了,为了保留除奇点以外的其他信息,我一开始想到的是频域中的环形滤波器,因为理想滤波器的设计更为简单,所以一开始我设计的便是环形理想滤波器,把包含亮点那一圈滤除掉。结果就跟上面的显示结果一样,因为理想滤波器会产生非常严重的振铃现象,所以虽然消除了纹波,但是图像的效果变得很差了,为了降低纹波,我采用二阶巴特沃斯滤波器设计了环形滤波器,但是消除纹波和振铃现象并没有得到改善。所以我决定放弃环形滤波器,直接在奇点那里建立高通滤波器。这样可以最大限度的保留图像的信息。所以便设计了两个理想的高通滤波器放在了亮点那里,图像处理的结果得到了很好的改善。但是图像的边缘效果并不是特别的好,所以又重新设计了高斯高通滤波器和二阶巴特沃斯高通滤波器采用类似的方法进行滤波,得到的很好的效果。图像的结果请查看上面的图像。 通过上面这部分的实验,可以看出在处理具体问题的图像时,比如说滤除特定的噪声,消除纹波等等,这些问题在空域解决起来是比较困难的,但是当转化到频域来看的话可以很明显的看出图像的问题,也可以根据这些问题进行滤波等图像的处理,通常可以很好地解决问题,但是频域相对来说的计算量更大一些,可能没有空域处理那样方便。总之频域处理相对于空域处理来说优势还是很明显的。 实验的第二部分是霍夫曼检测直线和圆,这部分实验的原理是很清晰的,变换的思路也并不是特别的复杂,可是代码编写起来还是比较困难。对于检测直线来说,只要是把直线上的待检测的点映射到霍夫曼空间然后检测出超过阈值的点就可以了,这部分在matlab中有具体的代码,涉及到四个函数,一个是hough函数,用来进行霍夫曼变换,另一个是houghpeaks用于检测hough变换中超过阈值的点,然后采用houghpixels找到影响峰值的每一个非零点的位置。最后采用houghlines来将检测到的点连接成直线,这样就完成了hough检测直线的全过程。 关于检测圆就比检测直线稍微复杂一些,因为对于一个圆来讲是由圆心和半径三个未知数确定的,而一条直线只需要两个未知数就可以确定,所以在进行圆的霍夫曼变换时构建的是由圆心坐标和半径构成三维的霍夫曼空间,对于每一个圆心和半径进行遍历检测目标点是否在这个圆上,如果在这个圆山那么相对应的霍夫曼空间的位置加1,最后通过检测霍夫曼空间中超过阈值的点,然后将其画出,即完成了霍夫曼变换检测圆的过程。 上面这一部分实验是比较复杂的,当然图像二值化的过程就不在这里叙述了,另外代码参考了matlab和网上的,但是思路都是自己的。hough检测圆和直线的效率感觉还是比较低的,因为处理了太多没有用的信息,还是需要进行改进的。
本文标题:数字图像处理 (基于Matlab) 滤波
链接地址:https://www.777doc.com/doc-3184599 .html