Matlab与FPGA图像处理系列——基于FPGA的实时边缘检测系统设计,sobel边缘检测流水线实现

注:下载链接的资源是图片存 ROM 后读取进行 Sobel 检测显示在 VGA上,可供参考。

摘要:本文设计了一种基于 FPGA 的实时边缘检测系统,使用OV5640 摄像头模块获取实时的视频图像数据,提取图像边缘信息并通过 VGA显示。FPGA 内部使用流水线设计和并行运算加速算法,利用乒乓操作和 SDRAM 缓存图像,可以实时提取视频图像的边缘特征。文中对比了 MATLAB 和 FPGA 的处理效果,由于 FPGA 对算法采取了硬件加速,所以相较于 MATLAB 等计算机软件实现方式有更快的处理速度。经验证,系统工作稳定,满足实时性要求。

关键词:现场可编程门阵列;Sobel边缘检测;乒乓缓存;VGA显示;

1 系统方案与设计
本系统基于 Altera 公司 Cyclone IV 系列的 EP4CE6F17C8 型号的 FPGA ,系统整体框图如图1所示,主要包括 FPGA 并行运算平台、摄像头采集模块、存储模块和显示模块,设计时采用自顶向下的设计模式,使用全局复位和跨时钟域处理。
系统运行时, FPGA 并行运算平台首先完成对摄像头的初始化和寄存器配置,配置完成之后读取实时的图像数据存入 SDRAM 存储器中,在 FPGA 芯片内部并行实现图像处理算法,对从 SDRAM 中读出的数据进行 Sobel 边缘检测并送入 VGA 显示,通过独立按键可以切换显示模式和设定边缘检测阈值。
在这里插入图片描述
图1 系统整体框图

在这里插入图片描述
图2 基于FPGA的Sobel边缘检测算法实现结构框图

2 图像预处理
由于 Sobel 算子是针对灰度图像的边缘检测,所以先把彩色图像转为灰度图像。将 RGB565 转化为 RGB888,再将 RGB888 转为 YCbCr 格式,最后提取其中的 Y 分量即可得到灰度图像。RGB888与 YCbCr 转换公式如下:
Y=0.299×R+0.587×G+0.114×B (1)
由于 FPGA 无法直接运算浮点数,所以先扩大系数近似为整数再运算。此处扩大256 倍后取整,将运算结果右移 8 位,提取 Y 分量即可得到灰度图像,即
Y=(77×R+150×G+29×B) ≫8 (2)
从 RGB888 图像中得到 YCbCr 图像的 Y 分量的并行运算示意图如图3所示。
在这里插入图片描述
图3 RGB888 转 YCbCr 并行运算示意图(Y分量)
3 边缘检测算法设计
如图4所示为待处理的3×3 像素点,使用 Sobel 算子处理中心像素点 P5,则使用 X、Y 方向的算子处理可得X、Y方向的梯度值 GX1、GY1 分别为:
GX1= (1×P3+2×P6+1×P9)-(1×P1+2×P4+1×P7) (3)
GY1= (1×P1+2×P2+1×P3)-(1×P7+2×P8+1×P9) (4)
整体梯度值 G 为:

由上式可知 GX11、GX12、GY11、GY12 均为正值,因此简化绝对值:

由上可计算 GX11、GX12、GY11、GY12,|GX1| 和 |GY1|,继而求 G。当 G 大于设定的阈值时判定为图像的边缘。
如图5 所示为Sobel 算子并行实现示意图,使用3个 Shift_ram 实现移位操作,使用三级流水线计算边缘检测值 G。判断 G 是否大于阈值,若大于阈值则输出0(8位数据0X00)否则输出 255(8位数据0XFF),即边缘处为黑色其余位置为白色。
在这里插入图片描述
图4 待处理的3×3像素
在这里插入图片描述
图5 Sobel算子并行实现示意图

4 边缘检测算法性能
在MATLAB使用本文所述的 Sobel 边缘检测算法,提取一张1024720分辨率的灰度图像的边缘,经过计时发现仅实现 Sobel 边缘检测需要597.451 ms(使用 MATLAB 2016a,CPU主频1.8GHz),即每秒钟仅能处理约 1.67 张图片。
使用 FPGA运行本文所述的 Sobel边缘检测算法,使用50 MHz时钟(周期20 us),在1024个时钟周期后得到 LineBuffer 缓冲出的第一行数据,4个时钟周期后开始输出边缘检测后的数据,处理完一副1024
720分辨率的图片需要的时间 T 为
T= (1024×720+1024+4)×20 us=14.76616 ms
由以上对比可知,FPGA并行运算在算法加速上面有着非常好的性能,处理速度远超 MATLAB 这种串行处理方式,使用FPGA方式每秒钟大约可以处理67张图片,满足实时性的要求。

检测效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结
本文在 FPGA 平台上中并行实现了实时图像的 Sobel 边缘检测算法,从公式上进行化简近似得到本系统所用的Sobel实现方式;通过对比MATLAB和FPGA的计算用时,可以看出FPGA的并行运算将速度提升了40倍以上,实现了算法的硬件加速,处理效果也能够满足系统的实时性要求。使用该算法处理摄像头获取的实时图像,能够达到良好的检测效果。

参考文献
[1]郝锐敏. 基于FPGA的视频采集与边缘检测系统设计与实现 [D]. 中北大学硕士论文, 2018.
[2]乔磊. 基于基于FPGA的图像边缘检测系统研究与设计 [D]. 安徽理工大学硕士论文, 2017.
[3]胡红伟. 基于FPGA的图像边缘检测系统研究 [D]. 哈尔滨工业大学硕士论文, 2014.
[4]杜建宝, 董恩增, 张祖锋. 基于形态学的边缘检测系统与FPGA实现 [J]. 天津理工大学学报, 2018(34):26-29.
[5]陈伦海, 黄君凯, 杨帆等. 基于FPGA的实时边缘检测系统 [J]. 液晶与显示, 2011(26):200-204.
[6]焦淑红, 关晨辉. 实时视频信号的Sobel边缘检测的FPGA实现 [J]. 电子科技, 2014(27):62-64.
[7]金大超. 基于FPGA的实时监测系统和边缘检测的研究与实现 [D]. 天津理工大学硕士论文, 2017.
[8]王海彦. 基于FPGA的实时彩色图像边缘检测系统设计 [D]. 哈尔滨工程大学硕士论文, 2017.
[9]石岳东. 基于SOPC的图像边缘特征检测的研究 [D]. 内蒙古大学硕士论文, 2016.
[10]谭艳, 王宇俊, 李飞龙等. 几种典型的图像边缘检测算法的分析比较 [J]. 电脑知识与技术, 2012(7):1604-1608.
[11]马俊. 基于FPGA的实时图像采集与预处理系统研究 [D]. 西南交通大学, 2015.
[12]Ming L I, Zhao X,Mao W. Implementation of Sobel Edge Detection Based on FPGA [J]. Modern Electronics Technique, 2009.
[13]Yi Zhang. Edge Detection Algorithm of Image Fusion Based on Improved Sobel Operator [A]. Proceedings of 2017 IEEE 3rd Information Technology and Mechatronics Engineering Conference (ITOEC 2017)[C]. 2017:5.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章