基于Sobel边缘检测算法的FPGA硬件实现
2022-10-10李芳沈培温娜刘慧迪辛锋
李芳,沈培,温娜,刘慧迪,辛锋
基于Sobel边缘检测算法的FPGA硬件实现
李芳,沈培,温娜,刘慧迪,辛锋
(萍乡学院 机械电子工程学院,江西 萍乡 337000)
针对MATLAB对数字图像实时处理速度慢的问题,提出采用硬件并行计算的思想,通过FPGA硬件实现Sobel边缘检测算法。首先对OV5640摄像头采集到的实时图像进行彩色图像转灰度处理,再对输入的灰度图像进行高斯滤波处理,接着对滤波后的灰度图像进行二值化,再使用Sobel算法对二值化图像实现图像边缘检测,传送至SDRAM存储器进行缓存,最后通过VGA实时显示图像。通过图像边缘检测的FPGA硬件处理和MATLAB软件处理的效果对比,结果表明FPGA硬件实现的边缘检测算法效果更佳。
边缘检测;FPGA;MATLAB;VGA显示
计算机视觉广泛应用于无人驾驶、医疗系统以及航空航天系统等场景[1],而边缘检测是计算机视觉中最基本的问题。在传统的图像边缘检测系统中,大多使用DSP与ARM处理器[2],但当前图像数据量不断增大,运用嵌入式软件处理海量信息速度却较慢,跟不上计算机视觉的发展要求。现场可编程逻辑阵列(Field Programmable Gate Array,FPGA)的高速发展,使得采用FPGA芯片搭建图像处理硬件平台成为图像处理的发展趋势。基于FPGA设计的图像边缘检测电子系统具有功耗低、抗噪能力较强、可靠性高且图像的边缘定位较为精确等优点[3]。基于此,本文在研究Sobel算法[4]的基础上,针对软件对图像处理速度慢的问题,引入了硬件并行计算的思想,设计了一种基于FPGA的实时图像边缘检测系统,该系统集图像数据采集、存储、算法处理、显示等功能于一体。该设计可以广泛应用于嵌入式设计的图像边缘检测系统,具有一定的实际应用价值。
1 Sobel边缘算法
边缘检测的实质是一种滤波器。物体的边缘通常都具有变化的像素值以反映物体与背景的差异,或者两个物体之间的差异。常用的边缘检测算法一般是以初始图像的灰度值为参考,比较图像的每个像素的某个区域内灰度值的变化,标识数字图像中灰度变化明显的点,在保留图像重要结构信息的同时,可以剔除认为不相关的信息,并利用边缘一阶或二阶导数的规律来检测边缘。
本设计主要采用Sobel算子检测图像的水平边缘与垂直边缘。Sobel算子是一组用于边缘检测的简单高效方向算子,相较于Canny算子在处理灰度渐变或噪声较多等问题上具有较好的效果。且其更注重边缘检测效率,边缘检测的效果更好[5]。Sobel卷积因子Gx和Gy如图1所示。
图1 Sobel卷积因子Gx(左)和Gy(右)
x与y分别对应待处理的目标图像在X轴和Y轴方向图像窗口的梯度,X和Y方向各用一个卷积因子,两个卷积因子组合起来构成一个梯度算子,其公式如式1所示。
上式中A是目标像素点与周围像素点构成的相应3*3的待处理像素块,假设目标像素点P0与周围像素点构成的待处理像素块,如图2所示。
设阈值为T,若>T,则将像素点置为黑色;否则,将像素点置为白色。使用Sobel算子根据像素点上下、左右邻点灰度的加权差,在边缘处达到极值这一现象来检测边缘,获得数字图像的一阶梯度。Sobel算子对噪声具有平滑抑制作用,在边缘检测中可以呈现出较好的效果,同时随着数据量的减少,呈现出来的效果将会更佳,因此,Sobel算子适用于对精度要求较低的场景中。
图2 目标像素块
2 Sobel边缘检测算法的FPGA实现方案
2.1 边缘检测硬件系统结构
系统主控FPGA芯片为Intel公司Cyclone IV E系列的EP4CE10F1708N型号,OV5640作为CMOS图像传感器采集数字图像信息,SDRAM作为存储器缓存图像数据,最后通过GM7123 VGA视频模块接FPGA开发板及VGA接口连接至显示器显示,图像边缘检测整个硬件系统连接图如图3所示。
图3 图像边缘检测系统硬件图
系统的软件设计以Altera公司的Quartues II为开发工具,以Verilog HDL硬件描述语言来进行各个模块的编程。首先通过配置接口采用SCCB协议的CMOS摄像头OV5640获取图像信息,获取的彩色图像信息将会传送至FPGA中的RGB转灰度模块进行彩色图像灰度处理。其次,灰度处理后的图像将接入高斯滤波模块,通过高斯滤波可消除数字化过程中噪声对图像的影响;消除噪声后的灰度图像将通过单bit模块转为二值图像,即像素点矩阵中的每个像素点的灰度值为0或255[6]。再次,将转换好的二值图像通过Sobel算子进行边缘检测,得出的边缘信息会被发送给图像缓存模块,其中设有两个FIFO进行乒乓操作来临时缓存读写数据,可以解决数据的跨时域问题。最后通过VGA显示驱动模块读取并实时显示FIFO B内的完整图像数据[7]。图像边缘采集系统框架结构如图4所示。
2.2 彩色图像灰度处理
在进行边缘检测算法之前,首先要将彩色图像转灰度图像[8]。OV5640摄像头采集到的实时视频图像数据是RGB565格式,因此,需要先将RGB565信号转成灰度图像,也就是3个通道(RGB)转换成1个通道,即RGB转灰度模块。彩色图像是指由多种颜色组成的图像,其中每种颜色都由红(R)、绿(G)、蓝(B)三基色按比例混合而成,要想显示一个像素的颜色需要3个BYTE数据的R、G、B,比例关系为R:G:B=5:6:5,即R、G、B分别是5、6、5来表示一个像素。
灰度图像是指只有亮度差别,没有颜色差别,是表现图像明暗的关键度量,每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗的黑色灰度(0)到最亮的白色灰度(255),共256级灰度,没有彩色信息。其表示效果如图5所示。
此外,对大部分计算机视觉应用来说,图像的精度不是一个特别敏感的问题,因此,可以通过将浮点运算转换为整数运算、位移操作和降低精度来减少计算量,从而优化转换速度,通常使用8位精度,彩色图像RGB565格式转换成灰度图像精度系数为8,如公式2所示。
根据这个公式,依次读取每个像素点的R、G、B值进行计算灰度值,将灰度值赋值给新图像相应位置,所有像素点遍历一遍后完成转换。使用16位数据作为图片数据,通过串口发送到FPGA开发板,然后通过算法转换实现数据的处理。彩色图像灰度处理模块的FPGA硬件实现的详细端口如图6所示。
2.3 高斯滤波
高斯滤波是一种线性平滑滤波,主要依据高斯函数形状选择权值,通俗来说,就是对图像进行加权平均的过程。每一个像素点的像素值都是由其本身及领域内其他像素值经过加权平均计算后得到的结果。高斯滤波模块负责图像数据的噪声滤波,消除图像数字化时所混入的噪声,提取图片对象的特征作为图像识别的特征模式,高斯滤波3*3算法的模板如下图7所示。
图7 高斯模糊3*3算法的模板
模板中间点是当前像素点,权值为4,周围8个像素点的系数为1和2。在3*3模块中,将每点的权值与其像素值相乘后可以得到9个数值,对这9个数值进行求和操作,最后除以系数和16,得到的结果则作为滤波后的像素值。高斯滤波处理模块的FPGA硬件实现的详细端口如图8所示。其中,该处理模块调用了Quartus II里面的Line Buffer和PARALLEL_ADD的IP核。
图8 高斯滤波模块接口信号
2.4 二值化处理
为了做边缘检测,需要将高斯滤波处理后的灰度图像数据转换为单bit数据,也就是进行二值化,将图像转换成二值图像(Binary image)。二值图像中的像素点只能取到0或255两种灰度值,显示出来的效果即为黑白图像。如图9所示。
图9 二值化图示例
二值图像占据存储空间小,每个像素点只需要占据1bit,即对于相同尺寸的图像,二值图像保存的信息更少。二值图像通过Sobel算子处理得到图像边缘,其清晰度则取决于调节阈值value。若像素值>value,则取为白色,否则取为黑色。从而实现图像的二值化,使整个图像呈现黑白效果。二值化处理模块的FPGA硬件实现的详细端口如图10所示。
图10 二值化模块接口信号
2.5 乒乓操作
乒乓操作是一个经常应用于数据流控制的处理技术,通过输入选择单元和输出选择单元,按照节拍、相互配合地切换,将经过缓冲的数据流没有停顿地送到数据处理单元进行运算处理。乒乓操作模块中的数据流是不间断的,即输入与输出数据流之间没有任何停顿。乒乓操作适用于对输入数据进行流水线式处理的场景,满足数据无缝缓冲与处理等功能需求。乒乓操作流程如图11所示。
图11 乒乓操作流程
由图11所示,设计使用两个FIFO(FIFO A和FIFO B)以乒乓操作的方式存储图像数据。分别用于存储Sobel算法处理模块传来的图像数据和显示屏读取数据,一帧图片传输完成后,读写区域交换,这样能保证在显示屏显示时,能够显示一张完整的图像。如果利用同一片存储区域来存储图像,当前一帧图像还没有读取显示完成,下一帧图像的数据就将该区域覆盖,那么显示屏上的画面会出现拖影现象,两帧图像会交叠在一起。
3 结果与分析
为了验证本文设计的彩色图像边缘检测系统,将FPGA硬件实现的Sobel算法的图像边缘检测效果与MATLAB对Sobel算子的软件处理效果[9–10]进行比较,如图12所示。图12(a)为萍乡学院校徽彩色原图;图12(b)是MATLAB对Sobel算子的软件边缘检测效果;图12(c)是FPGA对Sobel算子的硬件实现边缘检测效果。通过与MATLAB软件实现边缘检测效果相比,FPGA硬件实现获得了较多的边缘信息,系统比较稳定,图像更加精细清晰,视觉效果更好。
图12 彩色原图及经过MATLAB软件和FPGA硬件实现对比图
4 结论
本设计以FPGA为主控芯片实现实时彩色图像边缘检测,并用Intel公司Cyclone IV E系列开发板和显示器实现边缘检测效果。将CMOS图像传感器OV5640采集到实时视频彩色图像数据,送到FPGA中,通过SDRAM缓存Sobel算法处理的数据,再从SDRAM中读取,最后在VGA设备上实时显示。本设计通过灰度算法以及二值化算法对彩色图像进行预处理操作,在实现图像显示的基础上优化了对彩色图像的边缘检测的效果。同时通过与MATLAB处理的对比实验验证了,基于Sobel边缘检测算法的FPGA硬件实现系统的稳定性和实时性,解决了传统方法中的冗杂性问题,降低了系统开发成本。
[1] 何俊峰. 基于视觉原理的图像边缘检测算子研究[D]. 武汉: 华中科技大学, 2006.
[2] 孙晓杰, 梁义. 基于双阈值的图像边缘实时检测系统[J]. 仪表技术与传感器, 2019(8): 83–86.
[3] 李亚利. 基于FPGA的实时彩色图像边缘检测系统设计和实现分析[J]. 电子设计工程, 2019, 27(12): 168–172.
[4] 孙敬成, 王正彦, 张斌, 等. 基于FPGA的Sobel边缘检测算法实现及VGA显示[J]. 青岛大学学报: 工程技术版, 2019, 34(2): 21–26.
[5] 张棋, 贾方秀, 殷婷婷. 基于改进Sobel算法的实时图像边缘检测系统设计[J]. 仪表技术与传感器, 2018(2): 101–108.
[6] 赵尧,董恩增,于晓. 基于改进Sobel算子的实时边缘检测系统设计与FPGA实现[J].天津理工大学学报, 2017, 33(1): 1–5.
[7] 陈虎, 凌朝东, 张浩, 等. 基于FPGA的实时彩色图像边缘检测算法的实现[J]. 液晶与显示, 2015, 30(1): 143–150.
[8] 李营, 吕兆承, 陈帅, 等. 基于FPGA的VGA图像显示及控制系统的设计与实现[J].淮南师范学院学报, 2019, 21(2): 112–115.
[9] 董云峰. 基于MATLAB的图像边缘检测方法的研究[J]. 大庆师范学院学报, 2018, 38(3): 30–32.
[10] 叶惠娇, 冉全, 成果. FPGA图像边缘检测系统的设计与实现[J]. 计算机应用与软件, 2018, 35(12): 238–302.
FPGA Hardware Implementation Based on Sobel Edge Detection Algorithm
LI Fang, SHEN Pei, WEN Na, LIU Hui-di, XIN Feng
(School of Mechanical and Electronic Engineering, Pingxiang University, Pingxiang Jiangxi 337000, China)
To address the problem of slow real-time processing of digital image by MATLAB, the idea of hardware parallel computing is proposed to implement Sobel edge detection algorithm by FPGA hardware. First, the colored real-time image collected by OV5640 camera is transferred into gray, which then processed with Gaussian filter, and binarized after that. The binarized images go for image edge detection with Sobel algorithm, sent to SDRAM memory for caching. Finally, the images display in real-time through the VGA. By comparing the effect of FPGA hardware processing and MATLAB software processing, the result shows that the edge detection algorithm implemented by FPGA hardware is better.
edge detection; FPGA; MATLAB; VGA display
2021-07-02
萍乡学院青年科学基金(2019D0210);江西省高等学校大学生创新创业训练计划项目(S202010895020);江西省教育厅科学技术研究项目(GJJ191154)
李芳(1993—),女,江西萍乡人,助教,硕士,研究方向:图像处理,FPGA技术应用
TN386
A
2095-9249(2022)03-0083-04
〔责任编校:陈楠楠〕