欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    基于CORDIC的高速Sobel算法实现.doc

    • 资源ID:3409687       资源大小:22KB        全文页数:5页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于CORDIC的高速Sobel算法实现.doc

    基于CORDIC的高速Sobel算法实现图像边缘检测是数字图像处理领域中的一项关键技术1-3,广泛运用在军事、农业、工业、医学、航天等领域4-6。随着电子信息技术的快速发展,各大相关领域对图像边缘检测技术提出更高的要求,即:在保证精度的前提下,即时处理大规模数据。文献6、7使用硬件并行技术和流水线技术,大幅增加了数据的吞吐量,但在计算Sobel的梯度值时速度较慢,限制了系统的整体处理速度6-7。文献8在文献6、7的基础上,解决了Sobel梯度值计算速度较慢的问题,使系统的整体处理速度提升6-8,但该方法牺牲了精度,导致边缘检测的效果较差。针对上述问题,本文采用优化的CORDIC算法,将Sobel梯度计算公式转换成数据的移位和相加的流水线操作,在保证运算精确度的前提下,大幅提高整体运算速度。1 Sobel边缘检测算法Sobel算子是一阶导数的边缘检测算子,具有2组3×3的矩阵。图像中的像素点分别和这两个矩阵做卷积后,即可得到图像的水平、垂直梯度。根据式(1)和式(2)得到图像梯度值后,将该值和预设的阈值进行比较,即可判断该点是不是图像的边缘部分。图1(a)为待处理的图像数据,图1(b)、图1(c)为用于计算x和y方向梯度值的卷积表。水平梯度Px、垂直梯度Py的计算公式如式(1)所示:式(1)可以利用两个行缓冲器(Line_buffer)和流水线型的乘加器完成。如图2所示,当预存满两个行缓冲器后,再等2个时钟,系统即可实时地得到待处理的图像数据。如图3所示,得到待处理的图像数据后,P02和P22直接进行加法运算,P12通过移位操作实现乘2效果。为降低D触发器(Reg)之间的逻辑时延,增加系统的工作频率,本文将P02和P22相加的结果、P12移位的结果寄存了一拍后,再进行加法运算。依据上述原理,对P02、P20和P10进行了类似操作。最后将两组数据做减法,再取一个绝对值即可得到x方向的Sobel计算结果。y方向的Sobel计算方法如图4所示,与图3的原理类似。最终梯度值可以根据梯度计算公式算出:依据式(2),即可得到最终梯度的模值|G|,将梯度的模值和阈值进行比较,就可以判断出该点是否为边缘点。关于梯度模值计算公式,文献6和文献7选择调用IP核实现平方根运算,该方法在一定程度上保证了计算精度,但是运算速度受限。文献8为解决这个问题,选择将式(2)等效为|G|=|Px|+|Py|,较好地提高了运算速度,但是运算精度大幅度降低。为解决上述问题,本文选择用优化的流水线型的CORDIC算法,实现式(2)的运算。该方法既保证了精度,又提高了运算速度。2 CORDIC算法原理2.1 圆周系统下的CORDIC算法为在保证运算精度的前提下,提高Sobel 算法的即时处理速度和数据吞吐量,本文选择使用CORDIC算法对其进行优化。CORDIC是将复杂的计算转换成移位和加法的迭代操作。CORDIC算法有旋转模式和向量模式。在不同的坐标系下使用,可以实现不同的功能。因需要实现式(2),本文选用圆周坐标系下的向量模式。2.2 向量模式向量模式下通过一系列的角度逼近,可以进行反正切和平方根的计算。旋转模式的完整迭代公式如式(3)所示。其中xi为当前的横坐标值,yi为当前的纵坐标值,zi为当前的角度累加值。其中yi控制着判决算子i的值,yi的值为正时,i为负;yi的值为负时,i为正。3 向量模式下CORDIC算法的优化为提高系统的总体性能,本文对CORDIC算法进行了一定优化,最终提高了CORDIC算法的精度和速度。3.1 覆盖角度的扩展如式(6)所示,CORDIC算法的旋转角度有固定的规律,角度为2-i的反正切。当迭代次数趋于无穷时,所有角度值之和约等于99.827°。由此可知,覆盖角的度数为-99.827°,99.827°,不能覆盖圆周上的所有角度。考虑到只需求解式(2),输入数据的符号变化不影响最终计算结果。因此在式(1)处,直接求取了|Px|、|Py|,通过该操作将所有数据计算限制在了第一象限。为减少迭代次数,还可将输入数据进行进一步的处理。将|Px|和|Py|进行比较,如果|Py|大于|Px|,则将|Py|和|Px|的值互换;如果|Px|的值大于|Py|,则|Py|和|Px|的值保持不变。预处理后,数据的象限限制在0°,45°。因此可以减少一级迭代,收敛域也因此变为-57.827°,54.827°。经过上述处理后,式(5)变化成式(7)。3.2 数据位扩展CORDIC算法的迭代次数和运算数据的位宽对运算结果的精度有很大的影响。YU Y H在文献9中提出了解决量化误差(OQE)的方法。YU Y H指出OQE由近似误差和舍入误差组成。近似误差是由有限个确定旋转角度量化CORDIC旋转角度带来的量化误差,由最大向量模值和迭代次数决定。舍入误差是因为计算时数据位不够带来的误差,由数据的位宽决定。增加数据位宽和迭代的次数都可以提高运算结果的精度。但是,当迭代次数达到一定值后,迭代次数的增加对运算精度的影响变得很小。而增加运算数据的位宽将带来较好的效果,大幅度降低舍入误差。每增加一位数据位宽,舍入误差将变小1/29。本文在用CORDIC算法实现式(2)时,在保证较大的迭代次数的前提下,将运算数据位扩展3位,大幅度降低了舍入误差。在进行数据迭代运算时,考虑到采用浮点数可以降低工作频率,因此采用了定点数。如图5所示,定点数由符号位(S)、整数位(I)、小数位(D)构成。3.3 优化后CORDIC算法的实现圆周模式下的向量模式可以根据输入的|Px|和|Py|,直接求解出最终梯度的模值。梯度模值运算模块的硬件结构图如图6所示,由预处理、CORDIC迭代流水线、后级处理3部分组成。预处理部分中,将判断|Px|和|Py|的值是否需要互换。因为迭代次数已经提前确定,缩放因子已知,在预处理阶段的数值修正部分可以提前对最终结果进行补偿。补偿后,将数据位数从24位扩展成27位。扩展后,舍入误差将降低为之前的1/8,提高了运算的精确度。预处理后进入CORDIC迭代部分,迭代部分采用15级的流水线模式。根据式(3)可知,在求解式(2)时只需要知道|Px|和|Py|的值,因此可舍弃zi的计算,以此节约一些资源。如图7所示,迭代部分的每行存在两个移位寄存器和两个加/减法器。符号控制信号为Sign,由yi决定。通过式(3)可知,当yi为正时,xi处选用加法器,yi处选用减法器;当yi为负时,xi处选用减法器,yi处选用加法器。数据通过迭代部分后,进入后级处理部分。后级处理部分将信号缓存一拍后,进行截位处理,然后就可得到x1526:3的值,即最终梯度的模值。此外,该设计采用了流水线结构,提高了吞吐量和最大工作频率。4 系统仿真及性能分析本设计在ISE14.7软件下,用Verilog HDL语言进行了实现。此外,使用MATLAB、Modelsim SE 10.1c进行了本设计的测试。本文在Xilinx ISE编译器中编译好代码后,通过Modelsim进行了软件仿真。图8为本设计关键路径的仿真:CORDIC迭代运算的仿真。修正后的|Px|和|Py|采用定点数的方法进行表示,总计24位,012位为小数位,1322位为整数位,23位为符号位。|Px26:0|和|Py26:0|为|Px|、|Py|扩展3位后的值,分别用x、y进行表示。Kn为最终梯度模值的计算结果。为了更直观地表示,输入值、中间值和输出结果均用有符号十进制数进行表示。根据仿真结果可知,采用优化后的CORDIC进行式(2)的运算,精确度约为10-4,远大于文献8的精确度。仿真后,将文献8的算法和本文的算法进行了对比测试,结果如图9所示。通过图9(b)可以观察到,使用文献8的加速算法后,因为精确度较低的缘故,不能较好地检测到边缘,人像左下方、右上方处的头发边缘和背景混杂在了一起,人像面部左下方、右上方的边缘检测效果较差。使用本文的改进算法后,如图9(c)所示,在保证运算速度的前提下,较好地识别出了图像的边缘,较好地检测出了头发和面部的边缘,与图9(d)使用MATLAB实现Sobel算法的效果近似。本文也尝试使用Xilinx ISE自带的平方根IP核实现关键路径的计算。选用Spartan6 XC6SLX16 2CSG324C芯片在Xilinx ISE14.7软件平台下,对平方根IP核进行编译综合。编译综合后,得到ISE计算出的最高工作频率信息。为测试本文使用算法的性能,在同样的条件下,对本文的算法也进行了编译,得到了最高工作频率信息。最终结果如表1所示。采用IP核进行关键路径的计算,最高工作频率为114.745 MHz。采用优化后的CORDIC算法进行关键路径的计算,最高频率为187.652 MHz。相比使用IP核的方法,采用优化后的CORDIC算法实现关键路径的计算可以提速63.53。5 结论本文在传统Sobel加速算法的基础上,在FPGA平台上使用优化的CORDIC算法实现了Sobel算法加速。通过图9可知,该方法的边缘检测效果良好,较好地检测出了图像的边缘。通过表1可知,该方法与调用IP核相比提高了百分之63.53的工作频率。实验结果表明,本设计进一步提高了系统的运算速度,适合在对速度有较高要求的系统中使用。

    注意事项

    本文(基于CORDIC的高速Sobel算法实现.doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开