杨少东 覃琴
【摘要】给出了一种嵌入式机器视觉软硬件设计方案,该装置以FPGA为核心,使用EDA工具设计了相应电路板及其软件。硬件上重点介绍了系统硬件设计方案、布线工具及其技巧;软件上重点介绍了视频的解码处理和Sobel算法在FPGA上的实现及其显示。测试结果表明,该平台足以实现特定的机器视觉算法,具有精简、小体积、低成本、高性能和兼容性等优点。
【关键词】FPGA;布局布线;边缘检测算法;机器视觉
1.引言
随着图像处理技术的不断发展,机器通过视觉感知外界信息并进行决策、判断的机器视觉应用已经在我们的生活中越来越普遍。然而,传统PC平台的便携性以及成本的问题严重的制约了其在生活中的应用。着眼于此,探讨实现一个紧凑型嵌入式的机器视觉解决方案,设计了小型的FPGA的图像处理的硬件平台,并将机器视觉中的边缘识别算法在其中实现,通过摄像机对外界的边缘信息进行感知。
2.系统硬件设计
系统硬件结构图如图1所示,图中所示为本文所设计的嵌入式边缘检测系统的硬件结构图。FPGA芯片选用了altera 公司的EP4CE6E 22C8N,其具有6272个逻辑资源、276280Bit内置SRAM、30个9bit嵌入式乘法器,为高速并行数字信号处理打下了基础。另外,EP4CE6E22C8N芯片具有92个用户IO,可自由分配其功能及其与外部电路的连接,具有较好的I/O能力。
图1 系统硬件结构图
2.1 视频解码电路
由于PAL信号为模拟信号,FPGA无法独立完成PAL制式视频的解调,但是可以依托于专用的PAL解码芯片。本设计中选取了ADI的ADV7180,其可通过I2C借口支持NTSC/PAL/SECAM制式的视频输入,并将其解码为8-bit ITU-R BT.656 YCrCb 4:2:2 格式的输出与相应的数据同步时钟,并且有水平同步(HS)和垂直同步(VS)信号输出。
2.2 显示器控制电路
显示控制电路的VGA驱动芯片选用了ADV7123,其中包含了3个10bit 240MSPS DAC,其以高阻差分恒流源形式进行输出,能有效的抵抗传输路径中的干扰。
2.3 图形缓冲电路设计
图形缓冲电路的内存使用了Hynix的HY57V561620 其为4 Banks x 4M x 16bit的SDRAM,为图像缓冲提供了高速、大容量的空间;在其设计过程中的主要问题点在于对其布线过程中要考虑到时序问题。
该部分的PCB布局布线使用Altium Designer,该软件具有特意为FPGA Layout 设计的交互式布线工具Pin Swap,简化了FPGA硬件电路的设计。由于本设计中SDRAM运行于108MHz的时钟频率,需要在布局布线中对SDRAM的走线进行时序的优化,在布线时需根据走线的长度、过孔个数、次序需求重新分配FPGA IO口与SDRAM的IO口的连接,然后反向更新到原理图中,从而达到满足时序要求的SDRAM硬件电路的设计。同样,Pin Swap工具也可以用于其种类它内存的布线优化,比如SRAM以及DDR内存系统的布线。
在完成了電路板设计与制作之后,针对该部分,要进行一个独立的测试,测试SDRAM是否能够满足与FPGA进行通信的时序要求。该测试利用FPGA芯片内置的PLL,主要对SDRAM的工作时钟以及FPGA内部数据同步时钟的相位关系是否能保证数据的完整性进行测试及微调。本部分中的SDRAM的工作时钟超前于FPGA的工作时钟75度。
3.软件设计
本文所设计系统的软件方案如图2框图所示,系统呈流水线结构。其中,视频采集部分采集外部输入的8-bit ITU-R BT.656 YCrCb 4:2:2 格式视频数据;去隔行模块对隔行扫描的图像进行还原;色域转换模块将图像从YUV色彩空间转换到RGB色彩空间;Sobel算法选取G分量进行运算(也可选取R或者B分量)。最终的结果交于输出显示模块,由输出显示模块控制外部VGA电路对边缘检测的结果进行显示。
图2 软件结构图
3.1 PAL视频采集及其去隔行
PAL制式标准为我国的电视标准,每秒25帧,扫描线为625线,其中帧正程为575行,帧逆程为50行;扫描方式为隔行扫描,每场扫描312.5行,场正程287.5行,逆程25行。两场合成一帧,奇数场在前偶数场在后;场频为每秒50场,帧频为每秒25帧。
BT.656 YCrCb 4:2:2即为YUV 4:2:2,其中YUV 4:2:2 数据格式通过每两个像素传递一个完整的UV分量(交替省略V/U分量)的方式,从而达到减小数据传输对带宽的需求量的目标。YUV4:2:2格式与YUV4:4:4格式的对比如表1所示:
表1 YUV4:4:4格式与YUV4:2:2对比
完整YUV数据 Y0 U0 V0 Y1 U1 V1
YUV4:2:2 Y0 U0 压缩 Y1 压缩 V1
从表1中可以观察到YUV4:2:2相对于YUV4:4:4有66.7%的压缩率。
YUV向RGB转换的公式为:
RGB转YUV:
综上,在FPGA中对图像进行还原的流程如图3所示。
图3 YUV4:2:2转RGB流程图
3.2 边缘检测算法
Sobel算法是在二维平面上研究亮度信息的突变。对突变信息的筛选性获取在数学上一般分为在时域法和频域法。时域法的典型方法即为微分,微分即可求得量化的突变量的大小。而在频域上,则展现为使用傅里叶后获得各个频段的能量分布,然后使用傅里叶逆变换,对数据进行还原。在频域上的分析,其操作较时域方法具有较高的效率。频域上的操作还原到时域,则体现为时域的卷积,即两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,能使傅里叶分析中许多问题的处理得到简化,从而大大简化了计算量。
3.3 Sobel边缘识别算法在FPGA上的实现
Sobel算法需要以图像的每个数据为中心,取出3x3像素矩阵,并且横向和纵向进行卷积,仅保留结果矩阵的中心元素,然后通过均值方根进行矢量的合成。在FPGA硬件描述语言实现上,将其划分为图像缓冲部分、乘加部分、均值方根部分。其中图像缓冲部分为3行的行缓冲FIFO内存组,在其中缓冲保存图像的3行的像素点。乘加模块使用了FPGA芯片内置的9bit嵌入式乘法器。由于仅取卷积中心元素,故在每个方向上的卷积仅需进行3次乘法操作,最后使用加法器相加。由于整体设计乘法操作过多,在综合时出现FPGA内置嵌入式乘法器不足情况,通过使用逻辑资源构建乘法器并进行时序优化解决了该问题。均值方根模块使用了Quartus自带的宏模块进行生成。卷积的操作完成后,要对结果进行二值化,设定一个边缘阈值,当相应像素点的梯度高于阈值则认为改点是边缘点。
3.4 VGA驱动
VGA驱动用于驱动外部的ADV7123,并发送行、场同步信号与显示器。由于Sobel算法生成的数据需存放在SDRAM中而同时SDRAM也要作为VGA驱动器的显存,故构建了两个FIFO,分别对应于Sobel生成的图像写入和VGA控制器从SDRAM中读出图像数据。
使用Verilog语言设计符合时序要求VGA控制器,令FPGA相应IO口输出符合VGA控制时序的行、场同步信号,同时从FIFO中读出像素数据输出并输出ADV7123的工作所需的时钟,进行数模转换,最终达到显示器上能够显示输入图像的边缘信息的目的。
图4 系统运行效果图
4.结果及其分析
系统运行效果图如图4所示,将手放置于监控摄像机前对边缘识别的效果进行观测。通过观测发现该系统良好的识别了手掌的边缘信息(轮廓),并且挥动手掌对输出延时进行了初步的对比观测,输出与动作基本同步,使用人眼观测,感觉不到明显的延时。但是通过仔细测试,发现在手掌与摄像机呈现不同角度时,检测得到的轮廓部分缺失。这种现象和光线条件有关,因为Sobel算法是对亮度信息的突变进行检测,通常情况下,两种因素对其影响较大:一是Sobel算法中边缘的阈值的设定,在较低照度下边缘检测算法的结果可能较小,此时阈值过大会导致边缘信息缺失;二是光照环境复杂图像中的亮度突变来自干扰光线时便错误的识别到了不存在的边缘。图4中屏幕内显示边缘部分缺失是低照度下边缘检测的阈值设置过低导致的。
5.结束语
本文探讨了如何使用FPGA及相关外设芯片实现一个紧凑型嵌入式的机器视觉解决方案,设计了小型的FPGA的图像处理的硬件平台,并将机器視觉中的边缘识别算法在其中实现。该系统能够进行基本的机器视觉实现,具有较低软硬件成本,较小体积,较好的兼容性,符合其嵌入式视觉方案应用的定位。
参考文献
[1]陈军.基于DSP的高速公路车道偏离报警系统研究[D].天津大学,2010.
[2]余锦华,范宏波,郑智捷.红外视频图像实时二维增强算法与实现[J].红外技术,2005,27(3):227-231.
[3]陈洪.图像预处理算法研究与硬件化设计[D].国防科技大学,2003:47-48.
[4]张为公.基于视觉的车道偏离报警系统的研究[J].仪器仪表学报,2008(7):1554-1558.
注:2013年国家级创新创业项目“嵌入式图监测系统”研究成果(项目编号:201313644003)。
作者简介:杨少东(1989—),男,大学本科,现就读于桂林电子科技大学信息科技学院,研究方向:自动化。
通信作者:覃琴,女,实验师,现供职于桂林电子科技大学信息科技学院,主要从事测控技术与仪器方面的教学和科研工作。