FPGA图像处理在水果品级筛选技术中的应用
摘 要: 基于图像处理的水果品级的筛选技术研究,前端利用光学传感器采集水果信息,利用数字图像处理技术对采集的信息进行处理,从而对水果进行大小和颜色的判别,驱动电机对被测物体进行筛选。图像处理算法主要包括图像的滤波、二值化和边缘检测,分析了几种滤波算法的优缺点,用FPGA实现算法的处理,最终采用中值滤波和Sobel边缘检测算法,并用Verilog语言编写程序实现相关算法的仿真验证。为了测试程序的正确与否,对一幅480×640分辨率的8 b的灰度图像进行了中值滤波算法和Sobel算法的仿真测试,测试结果满足系统要求。
关键词: FPGA技术; 水果筛选; Verilog语言; 中值滤波; Sobel边缘检测算法; 图像处理
中图分类号: TN911.73?34; TP391 文献标识码: A 文章编号: 1004?373X(2016)02?0089?03
Application of FPGA image processing in fruit grade screening technique
CHENG Guangwei, LIU Dongming
(Xi’an Technological University, Xi’an 710032, China)
Abstract: In the research of screening technology of fruit grade based on image processing, the optical sensor is adopted to collect the fruit information, and the digital image processing technology is used to process the captured information, so as to discriminate the size and color of the fruit and drive the motor to screen the fruits. The image processing algorithms includs image filtering, binarization and edge detection. The advantages and disadvantages of several filtering algorithms are analyzed. FPGA is used to implement image processing. The median filtering, Sobel edge detection algorithm and Verilog language program are taken to implement simulation verification of the related algorithm. In order to test the correctness of the testing program, the simulation testing of median filtering algorithm and Sobel algorithm for a 8bit grayscale image with the resolution of 480×640 was performed. The testing results met the system requirements.
Keywords: FPGA technology; fruit screening; Verilog; median filter; Sobel edge detection algorithm; image processing
0 引 言
随着农业技术的不断发展和人民生活水平质量的提高,人们越来越讲究生活品质,对水果的质量要求也不断提高。大多数企业依靠人工感官进行识别判断,劳动量大、成本高、生产效率低,而且分选的精度不高,本文提出了一种水果品级自动筛选技术,利用数字图像处理技术对采集的图像进行处理[1]。FPGA已经应用在图像处理算法中,在提高图像处理速度和效率等方面具有广泛的应用,怎样把FPGA更好地应用在图像处理方面,成为业内重点研究的方向。FPGA还可以根据客户要求,通过设计完成各种用途的电路,在开发中可利用流水线作业和并行处理的技术,使其在处理算法上具有高效性,并且其开发周期相对于ASIC短、易于维护和拓展,在实时数据处理方面具有突出的优点。目前多种图像处理算法如图像缩放、图像旋转、图像压缩、边缘检测、直方图均衡化、中值滤波等,都适合用FPGA处理,并且相关算法也在不断完善。在此研究采用FPGA开发图像处理系统,并提出快速中值滤波和边缘检测算法的实现。
1 FPGA概念
FPGA具有运行速度快、可重复编程、集成度高等优点,是进行原始设计最理想的载体。FPGA研发周期短,成本少,规模不断扩大,且不容易泄密,不仅能够有效消除设计电路的不足之处,而且打破了原有的设计器件的限制,市场的需求好。此外,FPGA在图像算法当中的应用,能够快速提高算法的处理速度,在开发实时图像处理方面具有重要的作用[2]。
2 系统总体设计方案
采用FPGA进行图像处理,主要是通过光学传感器、A/D芯片等部分一起发挥作用,信息存储、处理及控制设计应该在系统中完成。系统实现整体框图如图1所示。
图1 系统总体框图
本文主要研究整个系统的图像处理模块,方案是把FPGA作为图像算法模块的重要部分,利用该模块实现图像算法处理。中值滤波和边缘检测都是基于方形窗口操作的,因此主要由边缘检测功能模块、中值滤波功能模块2个模块组成。
3 图像滤波处理的基本算法
3.1 均值滤波
当前,图像处理滤波的方法主要有均值滤波、中值滤波等方式。均值滤波称线性滤波,它主要采用邻域平均法。均值滤波通常设置一个固定形状数字模板,对于源图像中的每一个像素点(x,y),取其周围邻域中与模板对应的像素点的灰度值,将所有点的灰度值或加权值求和取平均值,并将该值作为处理后图像中像素点(x, y)的灰度值。这种方法主要是针对一般噪声点的灰度值与其周围像素点的灰度值差异较大的特点来消除噪声。
3.2 中值滤波
中值滤波是一种非线性的信号处理方法,该算法在一定的条件下可以消除线性滤波器如均方滤波、均值滤波等带来的图像不清晰,而且对消除椒盐噪声最为有效。但对于细节多的,尤其点、线、尖顶细节多的图像不适合用中值滤波。设计一个含有奇数个点的滑动窗口,一般以窗口的几何中心的像素为当前活动点,在图像上依某种方式移动该窗口,将窗口对应下的像素点按其数据的大小进行排序,取其中间值作为当前活动点在处理后图像中的有效信息。本系统采用中值滤波作为图像滤波处理的算法。
3.3 边缘检测算法
图像边缘检测大量地减少了信息量,而且去除了可以认为不相关的数据,保留了图像有效的数据。采用Sobel边缘检测的算法进行边缘检测,获得目标图像与背景的交界线和目标图像的边界。由于Sobel算法是滤波算子的形式,作用是获得边缘信息,可以采用快速卷积方法,简洁高效,所以大量应用。本系统采用Sobel算法作为边缘检测算法。表1和表2为Sobel算法的卷积因子。
表1 Sobel算法的卷积因子(一)
表2 Sobel算法的卷积因子(二)
该算子拥有2组3[×]3的矩阵,分别为水平和垂直,把它和图像信息做卷积运算,即可分别得出水平和垂直的亮度差分近似值。图像的每一个像素的水平和垂直数值采用以下公式,计算该点有效数值的大小:G=[Gx2+Gy2]。
4 中值滤波算法的FPGA实现
通过对中值滤波和均值滤波的算法的分析,中值滤波更加适合应用于实践中。考虑中值滤波在实践中的优势,本文将用FPGA实现中值滤波的算法。中值滤波在实践应用中,通过设置一个3×3的窗口对窗口内的9个像素点进行大小值的计算,最后获得中间值,作为最后9个像素点的有效值。在串行语言中,将9个像素逐个进行比较,要经过30次比较,耗费时间,浪费大量的资源,减低了算法的效率。因此,提高处理速度是本文要研究的[3]。
由于FPGA是并行处理的方式,可以提高整体算法的处理效率。如图2所示,首先,对窗口中的每行数据,分别计算最大值、中间值、最小值。然后,把3行中最大数据进行大小排序:取3个最大值中的最小值;把3行中中间值进行大小比对:取3个中间数据的中间值;把3行中最小值进行大小比对:取3个最小值中最大的值。最后,把Min、Med、Max中的值进行比较,获得中间值。图2为中值滤波算法流程图[4]。
在Alter公司的Quartusrua软件下进行程序编写,并且采用Modelsim工具进行仿真验证。图3是对中值滤波算法的仿真结果,通过图3中的数据的比较,可以看出最后的有效数据在tartger_data上输出结果。通过仿真图,可以得出结论[5],采用FPGA实现中值滤波算法,只要4个时钟就可以获得。Modelsim仿真图如图3所示。
图2 中值滤波算法流程图
图3 基于FPGA的中值滤波算法的仿真图
5 Sobel算法的FPGA实现
Sobel采用并行流水线的模式,这样可以加快算法的效率[6]。主要分为4个部分:
(1) 计算 [Gx]与[Gy]与模板每行的乘积;
(2) 求得 3×3 模板运算后的[Gx,Gy;]
(3) 计算[G2x]和[G2y]以及它们的平方和;
(4) 计算G=[Gx2+Gy2]。
采用并行的处理方式,每次从3×3窗口中每行取一个数据送入算法模块,只要3个时钟就能将数据送入算法模块开始计算出有效结果[7]。采用流水线的工作方式,加快处理速度,发挥了FPGA并行处理的优势。然后,采用Modelsim工具对Sobel算法进行仿真验证,如图4所示就是仿真的结果。从图4中可以看出,都是一个时钟,则会进入3个数据进行计算,提高了运算效率。
为了测试程序的正确与否,对一幅480×640分辨率的8 b的灰度图像进行中值滤波算法和Sobel算法的仿真测试。仿真效果图如图5所示。
图4 基于FPGA的Sobel仿真结果
图5 仿真前后对比
6 结 语
在基于图像处理的水果品级的筛选技术研究中,利用数字图像处理技术对采集的图像进行处理,从而对水果进行大小和颜色的判别,驱动电机对水果进行筛选[8]。用FPGA实现对图像数据的处理,最终实现中值滤波和Sobel边缘检测算法,采用Modelsim工具对程序进行了仿真测试。
参考文献
[1] 杨帆,张皓,马新文,等.基于FPGA的图像处理系统[J].华中科技大学学报(自然科学版),2015,42(2):119?123.
[2] 夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2008.
[3] 吴厚航.深入浅出玩转FPGA[M].北京:北京航空航天大学出版社,2010.
[4] 游福成.数字图像处理[M].北京:电子工业出版社,2011.
[5] 陈天华.数字图像处理[M].北京:清华大学出版社,2007.
[6] 潘磊.FPGA在数字图像处理中的应用与研究[M].南京:南京邮电大学出版社,2012.
[7] 吴振华.基于模糊数学理论的数字图像处理[D].长沙:长沙理工大学,2010.
[8] 龚声蓉,刘纯平,王强.数字图像处理与分析[M].北京:清华大学出版社,2007.