您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于Sobel算子的数字图像边缘检测
信号处理综合设计报告综合设计名称:基于Sobel算子的数字图像边缘检测学员:学号:培养类型:技术类年级:2013级专业:电子工程所属学院:指导教员:职称:教授实验室:305-507实验日期:2016.8.23-2016.9.2一、综合设计目的(1)掌握数字信号处理的基本概念、基本理论和基本方法;(2)了解边缘检测的算法和用途,学习利用Sobel算子进行边缘检测的程序设计方法;(3)完成图像边缘处理系统的设计和实现,分析处理性能;(4)学会TMS320VC5509ADSP的程序设计方法。二、综合设计要求(1)在Matlab上独立编程实现通过Sobel算子的边缘检测;(2)读懂DSP-CCS平台例程,自选图像修改例程实现边缘检测,对比Matlab仿真和DSP-CCS平台处理的结果。(3)完成实验思考题三、详细设计过程1.设计原理分析;Sobel边缘检测算子:121000121101202101图像中的每个点都用这连个核做卷积,一个核对通常的垂直边缘相应最大,另一个对水平边缘相应最大。两个卷积的最大值作为该点的输出位(下文我们统称为梯度)。Prewitt边缘检测算子:111000111101101101以上两个卷积核形成了Prewitt算子。使用方法和Sobel算子一致,区别是系数不同。2.设计方案和过程。总体方案:读取图像建立模板卷积计算得出梯度根据阈值画出边缘二值处理得出阈值(1)选择图像灰度处理这是程序运行的预处理,需要注意的Matlab仿真时,图像选取限制较小,在DSP-CCS平台处理时,注意图像选择要满足例程的空间要求,一般选择80*80尺寸图像。(2)卷积计算得出梯度把图像与Sobel算子的两个模板分别进行卷积,取卷积后较大值为该点的梯度。上图显示了在只考虑水平边缘或垂直边缘的情况下的检测效果与实际效果的对比。(3)二值处理计算阈值把计算出的梯度归一化,然后带入Matlab中的graythresh函数,采用最大类间方差法获得阈值。(4)高于阈值设为1,低于阈值设为0。把二值图像显示出来即为边缘检测的最终结果。3.改进与创新(1)八方向Sobel算子在原有中两个模板的基础上,又增加六个方向的模板,即45°,135°,180°,225°,270°,315°。这样可以更加有效地检测图像多个方向边缘,使边缘信息更加完整。(2)抗噪性能分析通过在原图像中加入不同信噪比的高斯白噪声,观察边缘检测图像的变化,分析差别。四、调试过程与结果分析1.传统Sobel算子边缘检测效果展示注:上图中graythresh算子得出的阈值为0.27842.阈值不同时的结果对比。通过手动调整阈值,我们可以发现,减小阈值,图像中线条增多,增大阈值,线条减少,实际情况中,课根据需要选择合适阈值。3.Sobel算子与Prewitt算子对比对于大部分图像,Sobel算子与Prewitt算子得出的结果差别不大。4.八方向Sobel算子性能分析实际效果,八方向Sobel算子边缘检测效果提升不明显,但是带来了巨大的内存和空间消耗。此图显示了八方向Sobel算子的空间占用,实际计算时,需要的时间也比传统Sobel算子要长,考虑到其边缘检测效果提升不明显,后续我们没有采用这种方法。5.抗噪性能分析通过给图像加高斯白噪声来测试程序的抗躁性能。加入信噪比为0.05的高斯白噪声:几乎不受影响,但是也出现了一些杂点。加入信噪比为0.5的高斯白噪声:已经损失了一些信息,左侧后视镜已经看不见了。加入信噪比为0.9的高斯白噪声:可以发现右图已经基本上没有信息了,手动调整阈值:将阈值调整为0.01后,原本的车在地面的阴影,后座都被误判为边界,但是车牌等重要信息被检测出来。6.DSP-CCS平台实现仿真时使用的奥迪车图片尺寸较大,无法移植,在CCS平台上,我们使用北大校徽和力帆车标做测试。北大校徽仿真结果:CCS平台处理结果:力帆车标仿真结果:CCS平台处理结果:通过两个例子,可以发现CCS平台处理的图像在转弯处,容易出现边缘缺失,可能是由于图片像素太低,精度不足造成的。五、设计总结和体会(1)本次实验,以Sobel算子为基础,对数字图像的边缘检测问题进行了一番探究。实验表明,Sobel算子产生的边缘效果较好,在实际处理中,可根据具体情况采用不同的阈值。改进的八方向Sobel算子边缘信息更全,但是产生了大量空间和时间消耗,一般不采用。另外,Sobel算子对噪声具有一定的平滑作用。(2)选题,分析,仿真,实现,是一般项目进行的主要步骤,好的仿真可以大大缩短实际操作所需要的时间,但是仿真过程中要考虑实际平台的计算能力和存储空间。(3)本次实验,本组进度进行较快,但是后来看了其他同学的情况后,发现对方做的效果比我们好很多,才激励我们继续研究,找出抗噪性能的分析这一创新点。启示我们,做研究过程中不要实现一点成绩就沾沾自喜,要保持谦虚,脚踏实地。六、思考题解答在CCS平台上,将Sobel算子改为Prewitt算子。答:Sobel算子核心代码如下:其中m_nWork1=x7+x8+x8-x2-x2-x3;m_nWork2=x3+x6+x6-x4-x4-x7;if(m_nWork1m_nWork2)m_nWork1=m_nWork2;m_nWork2=m_nWork1+x9-x1;是卷积求梯度的核心代码,根据Prewitt的卷积阵,将此处改为以下代码即可。m_nWork1=x7+x8-x2-x3;m_nWork2=x3+x6-x4-x7;if(m_nWork1m_nWork2)m_nWork1=m_nWork2;m_nWork2=m_nWork1+x9-x1;全部代码见附程序Sobel.c和Prewitt.c七、参考资料[1]陈宇云.灰度图像的边缘检测研究[D].电子科技大学硕士学位论文.2009[2]卢洋,张旭秀.图像边缘检测算法的对比分析与研究[J].太原科技.2009,(3):17-18[3]韩磊.MATLAB在数字图象处理中的应用[J].电脑知识与技术.2008,1(1):29-31附录1.transfer_1.m将彩色图转化为灰度图的小程序,在迁移到CCS平台处理时用到,Matlab平台仿真的程序中内嵌了这几行代码。2.Sobel_1.m传统Sobel算子代码+手动阈值调整功能3.Sobel_2.m八方向Sobel4.Sobel_3.m将水平和垂直算子单独考虑与都考虑时的对比5.Prewitt_1.m传统Prewitt6.Sobel_prewitt.mSobel和Prewitt的对比+考虑高斯白噪声后的情况
本文标题:基于Sobel算子的数字图像边缘检测
链接地址:https://www.777doc.com/doc-5620147 .html