齐 璐,周 强,王志强
(陕西科技大学 电气与信息工程学院,陕西 西安710021)
随着现场可编程门阵列(FPGA)制造工艺和集成技术的不断发展,利用FPGA 来设计数字硬件系统越来越能体现它在图像处理中的强大优势。以往PC 作为图像处理系统,在高速实验等对速度要求较高的应用场合中无法满足实际需求;采用FPGA+数字信号处理器(DSP)相结合的系统[1],方法结构较为复杂,且成本较高,容易造成资源的浪费;若以FPGA 作为核心芯片,因FPGA 本身只适合做一些大数据量,且算法简单的运算不适合做复杂的运算,这样的局限性使得它只能实现一些简单的图像预处理算法,并没有在FPGA 中实现完整的图像算法结构;还有不少方案采用可编程片上系统(SOPC)来完成图像处理,但都仅仅是将SOPC 当作一个CPU 来使用[2],所有的运算都是在SOPC中实现,并没有体现出FPGA 的并行运算的特点,无法满足系统实时性。
针对PC,FPGA+DSP,FPGA,SOPC 等在纸病图像处理上的不足,本文提出了一种FPGA+SOPC 相结合的纸病图像处理系统,利用各自优势来达到实时的纸病图像处理。纸病图像从获取到识别过程最关键的在于速度上能否满足要求。纸病图像由CCD 相机获取,FPGA 芯片采用Altera公司的Cyclone IV 系列,用来将采集到的图片信息进行存储、处理和显示。将适合硬件模块完成的运算用Verilog HDL 编写,让硬件模块能快速实现相对应的功能,如图像滤波、图像边缘检测等;而对于较为复杂的运算,如流程判断、图像识别等运算则交给SOPC 采用C/C++语言实现。最终满足了纸病图像处理的快速性和稳定性。
系统整体结构主要由五部分构成,如图1 所示,分别为CCD 相机、FPGA 芯片、同步动态随机存取存储器(SDRAM)芯片、数/模转换器(DAC)芯片及液晶显示器(LCD)。其中,CCD 相机选用DALSA 公司的Spyder3 系列的线阵相机;DDR2 SDRAM 采用MT47H64M16 芯片,该芯片的总存储量达到1GB,SDRAM 采用IS42S16160B;FPGA 芯片采用Cyclone IV 系列芯片LCD 采用的是计算机的显示屏。
图1 系统结构整体框图Fig 1 Overall block diagram of system structure
纸病图像采集是FPGA 上的SOPC 通过系统总线控制图像采集模块,图像采集模块再控制CCD 相机来实现的,将采集到的数据存储在外部存储器DDR2 SDRAM 中,然后SOPC 对图像处理算法进行判断和分类,将适合硬件完成处理的步骤通过总线将相应的参数和命令发送给对应的硬件模块,硬件模块在完成相应的处理后再通过总线反馈结束信号给SOPC。对于不适合硬件处理的算法则交给SOPC,由SOPC 利用其内部的CPU 进行运算,这两部分运算是相互独立、互不依赖的,实现了模块间的并行加速。在整个纸病图像处理系统中,SOPC 一直按照这样的方法来处理,直到处理结束,处理完成后的图像通过LCD 显示出来,以便人工进行图像判断,对算法进行改进和优化,以满足实际的应用要求[3]。
纸病图像处理过程可以分为图像预处理、特征提取和纸病辨识三部分,本系统将FPGA 的软硬件相结合使用,图像预处理的工作仍然由FPGA 的Verilog HDL 来描述与执行,特征提取与纸病辨识则由FPGA 上的SOPC 完成,计算机只承担纸病后期处理的任务,该系统不仅节约了成本,还使得纸病图像处理得到了并行加速。具体过程见图2。
图2 基于FPGA 的纸病图像处理系统框图Fig 2 Block diagram of paper defect image processing system based on FPGA
软硬件协同就是同时设计系统的硬件和软件部分,使系统间的相互影响因素可以协调地完成需要实现的功能,提高系统的执行速度,同时还增强了系统的稳定性[4],软硬件协同的设计流程图如图3 所示。
图3 软硬件协调设计流程图Fig 3 Flow chart of hardware software coordination design
硬件模式下的纸病图像预处理是指适合用硬件描述语言(HDL)来完成编写和实现的图像处理,图像预处理一般分为滤波与边缘检测等。图像预处理是图像识别前的必要步骤,经过预处理后的图像为后续的处理打好基础。
2.1.1 纸病图像滤波
图像滤波的方式多种多样,常见的有均值滤波、高斯滤波和中值滤波。通过滤波可以减少图像的噪声,凸显有效信息。一般来说,摄像机在拍摄过程中容易产生椒盐噪声,而中值滤波可以有效地去除这种噪声[5],FPGA 并行的处理方式使处理速度加快,且该方式易于实现。
本系统中值滤波选用3×3 模板,利用改进的中值滤波算法进行处理,改进的具体过程以数字1~9 为例,任意填在3×3 模板中进行说明。具体过程如图4 所示。
在模板中先依次将每一行按照从大到小排列,然后再将每一列按照从大到小排列,最后用第一列的最小值、第二列的中间值、第三列的最大值作比较,得到的中间值即为中值,该方法可以大大缩短运算次数,且适合于在FPGA 上做并行处理。
图4 3×3 模板下的快速中值滤波Fig 4 Fast median filtering under 3×3 template
2.1.2 纸病图像边缘检测
边缘检测是为了将纸病图像中亮度有明显变化的地方识别出来,Sobel 算子有很强的边缘性[6],对水平和垂直方向都很敏感,且具有平滑作用,能够提供较为精确的边缘方向信息,本系统将Sobel 算子用硬件方式来实现。但值得注意的是,由于是用FPGA 做图像处理,在保证实时性的同时,SDRAM 只相当于图像的缓存器,没有办法去存取每一个像素的信息,所以,需要一个LineBuffer_3 模块来缓存图像数据。在本系统中利用QuartusⅡ工具所提供的参数可设置宏功能Megafunctin 中的移位寄存器宏模块altshift_taps 实现了缓冲器功能。图像数据缓存模块LineBuffer_3通过altshift_taps 配置实现。如图5 所示。
图5 LineBuffer_3 模块配置Fig 5 Module configuration of LineBuffer_3
经过预处理可以将纸病图像区域提取出来,但具体是哪一种纸病还需要进行进一步的处理。纸病辨识是纸病检测过程中最为核心的部分,辨识结果的准确性将直接影响纸张质量好坏的评定,所以,分类器的选择十分重要[7]。在本系统中选择贝叶斯分类器,贝叶斯分类器在给出某些变量的条件下,能使分类所造成的平均损失最小,或分类决策的风险最小。对于待检测纸病图像,贝叶斯公式可以计算出该纸病图像分属于各类别的概率,即后验概率。若X 属于哪个类的可能性最大,就把X 归于可能性最大的那个类。贝叶斯公式如式(1)
其中,p(wi)为先验概率,P(X|wi)为条件概率密度,P(wi|X)为在X 出现条件下,样品wi类的概率。
采用FPGA+SOPC 相结合的方法对算法进行分析与分类,其中,适合用FPGA 硬件方式实现的纸病图像预处理部分为中值滤波与边缘检测,而适合用SOPC 的软件方式实现的纸病图像处理是特征提取与纸病辨识。
将CCD 相机采集到的纸病图像进行预处理,这部分因为其逻辑性较强,可以用Verilog HDL 语言编写。将程序进行Modelsim 仿真,得到的仿真波形如图6 所示。
图6 中值滤波仿真波形Fig 6 Median filtering simulation waveforms
从图6 中可以看到:该系统采用的快速中值滤波方法可以较为准确地得到滤波结果,输出结果与预期结果相同,说明该方法可行。经滤波的图像能够将因相机拍摄而产生的椒盐噪声有效去除。
边缘检测算子采用的是Sobel 算子,将滤波后的纸病图像再进行边缘检测,得到的纸病图像如图7 所示,其中,(a1),(b1),(c1)为预处理前的纸病图像,分别为边缘裂纹、孔洞、亮斑;(a2),(b2),(c2)则为经过图像预处理后的纸病图像。
图7 经过图像预处理后的纸病图像Fig 7 Paper defect image after image preprocessing
将经过预处理的纸病图像交由软件部分进行处理,系统将纸病辨识设计成用户可自定义的IP 核,可以使用Qsys工具将这些IP 核添加到系统,具体的Qsys 纸病处理系统如图8 所示。
图8 Qsys 纸病处理系统配置Fig 8 Configuration of Qsys paper defect treatment system
将配置后的系统进行综合,再将纸病辨识的程序写入软核中,经过纸病图像辨识后上传给上位机进行显示,结果如图9 所示。
图9 纸病检测系统界面Fig 9 Interface of paper defect detection system
从图9 中可以看出:界面左侧显示分为上、下两部分,上部显示的是当前辨识出来的纸病类型,而下部显示的则是之前辨识出的纸病类型,历史纸病记录是可以翻阅查询的。界面右侧是纸张总数、不同类型纸病数量、正常纸张数量、纸病类型的显示。
将在FPGA 硬件平台上实现的纸病图像处理过程与PC上用软件实现的方式进行比较,从而得到本系统与PC 性能的对比表,见表1。
表1 FPGA 与PC 算法时间比较Tab 1 Time comparison of FPGA and PC algorithms
从表1 中可以看出:用FPGA 处理纸病图像的速度要远远小于PC方式,原因在于FPGA是并行处理,不用等到正在运行的算法结束,而PC 则是串行方式来处理。对于更加复杂的算法来说,可使用并行运算的算法越多,越可以体现出FPGA 软硬件协同处理的优势。
本文提出了一种基于FPGA 的软硬件协同实时纸病图像处理系统,从硬件到软件详细概述了该系统的组成、设计及实现。该系统结构清晰,并且可以根据需要进行定制和修改。在纸病图像处理系统中使FPGA 的利用率最大化,分担了计算机处理的数据量。通过实验分析可知:FPGA 的使用大大提高了纸病图像处理的速度,通过与PC 性能的对比,表明该系统可以满足纸病图像处理的实时性要求。
[1] 陈 伟,段发阶,董宇青,等.基于DSP+FPGA 分层图像处理技术的智能相机设计[J].传感器与微系统,2010,29(12):111-113.
[2] 王炳健,刘上乾.基于FPGA 的红外焦平面实时图像处理系统[J].红外与激光工程,2006,35(6):655-658.
[3] Zahir Larabi,Yves Mathieu.Efficient data access management for FPGA-based image processing SoCs[C]∥IEEE/IFIP International Symposium on Rapid System Prototyping,2009:159-164.
[4] 汤 惟,葛保健.基于FPGA 的SOPC 软硬件协同设计[J].江汉大学学报,2007,35(3):49-52.
[5] 刘慧中,汤 伟.基于FPGA 的纸病检测预处理算法的实现[J].中国造纸学报,2014,29(1):53-57.
[6] 杨新华,寇为刚.基于FPGA 的Sobel 算子图像边缘检测算法[J].仪表技术与传感器,2013(1):102-104.
[7] 院金彪,周 强.基于朴素贝叶斯分类器的纸病离线静态辨识方法研究[J].中国造纸学报,2014,29(1):58-62.