微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于FPGA的Canny算法的硬件加速设计

基于FPGA的Canny算法的硬件加速设计

时间:06-05 来源:互联网 点击:

3 Canny算法加速设计

为了使得整个算法的计算速度得到提高,使算法既满足高速要求也不会耗费大量的硬件资源,本文对高斯滤波和梯度强度计算两个任务模块做了加速设计组合,流程图如图3所示。

高斯滤波器采用与Sobel加速器相似的设计原理,具有流水线的加速功能。图中RAM是FPGA中自带的Block RAM块,其大小配置为仅存储当前被处理图像的三行像素值,对于512×512的8位图像来说RAM应配置为512×3×8 b。因为高斯滤波的存储和Sobel加速器在读取的时候都是每4个像素点即32 b数据来进行,所以配置为32位宽的同时读写操作的双口RAM。

梯度运算之后,进行非极大值的抑制,在非极大值抑制之前需要计算梯度的方向。梯度方向的计算分为四个方向:水平、垂直、45°方向及135°方向,且每个方向上都包含两个45°的范围。通过Ex和Ey的比值及正负可以确定梯度方向落在上面规定的四个方向之一。判断四个方向的具体如下:

在FPGA中,直接做除法运算是很复杂的过程;为了减少资源的开销,把式(5)~式(8)中的除法变换成乘法,再做比较来判断梯度的方向。对于tan 22.5°和tan 67.5°做如下处理:

非极大值的抑制在系统中通过选择器和比较器来实现。根据输入的梯度值和梯度方向,用非极大值抑制条件(式(5)~(8))和高低阈值条件对输出的数据进行比较选择,强边缘点输出为255,弱边缘点输出为0。由于硬件流水线的特点,边界像素的计算结果是无效的,所以将边界上的行列都置为0。重复以上步骤,直到整幅图像扫描完成,最终得出边缘图像。

4 系统验证和结果分析

为了能清楚直观地验证加速的加速效果,本文在系统平台上对相同的图像分别用加速/未加速的系统做处理,记录相应时间并比较。

本文采用的验证系统平台以Altera公司CycloneⅡ系列中的EP2C20F484C8芯片为核心搭建而成,如图4所示。在验证系统设计中实现一个串口用来和PC机中的上位机通信,把处理完后的数据经过串口传输给上位机。数据在串口的传输过程中的延迟时间是固定的,故从上位机接收到第一个数据到最后一个数据的时间差即为一帧图像处理所花费的时间。

本文选取了不同大小的3幅图片做实验验证,系统时钟频率为100 MHz。其处理时间结果如表1所示,系统1为有加速功能的系统,系统2为未经加速的系统。

由表1可见,经过加速改进后的系统在处理时间上得到了很大的节约,随图像尺寸变大,总的节约时间显然是增加的;且经计算知:当尺寸变4倍(表1第2列256图与第3列512图),节约时间大约增加3.9倍;640×480图比512×512图尺寸大1.17倍,节约时间是1.23倍,实际结果与理论计算相吻合。随着图像尺寸的增加,节约时间亦按比例增加,因此该加速功能在处理大容量高速的图像时具有更大的优势和广阔的应用前景。

图5为一幅在FPGA中经过加速器系统处理后使用Matlab呈现的边缘图像。该算法处理的图像结果基本得到所有的边缘信息,完全能满足应用需求。

5 结论

本文提出并实现了一种基于FPGA的加速Canny算法边缘检测系统。该系统充分发挥和利用FPGA的优良并行处理能力及流水线技术,从而实现功能加速。

在加速过程中通过状态机的控制作用能使模板的运算处理和数据的读/写操作得以同时进行,一定程度上节约了因大量的读/写数据操作而占用的时间。此系统充分利用了FPGA中的硬件资源,大大提高了系统算法的运算效率,且设计结构较为灵活。最终通过边缘检测实验,验证了设计的正确性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top