基于FPGA和CCD相机的纸病检测系统的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA和CCD相机的纸病检测系统的设计与实现
汤伟;王先通;王锋;王孟效;邱锦强
【摘要】针对高速纸机纸病检测时,图像数据处理量大和实时性的要求,文中采用FPGA (Field Programmable Gate Array)和线阵CCD(Charge-coupled Device)相机技术,介绍了一种高速纸病检测系统的设计.利用FPGA并行性和高速运算能力的特点,控制线阵CCD实现高速下图像采集和进行纸病图像预处理,抓取出纸病图像并上传到上位机,然后利用灰度阈值分割和二值图像分型盒维数的方法确定纸病类型.结果表明,该设计有效提高了纸病检测速度,降低了成本.
【期刊名称】《中国造纸学报》
【年(卷),期】2016(000)001
【总页数】6页(P57-62)
【关键词】FPGA;纸病检测;Sobel边缘检测;Open CV;分型盒维数
【作者】汤伟;王先通;王锋;王孟效;邱锦强
【作者单位】陕西科技大学电气与信息工程学院,陕西西安,710021;陕西科技大学电气与信息工程学院,陕西西安,710021;浙江力诺流体控制科技股份有限公司,浙江瑞安,325200;陕西西微测控工程有限公司,陕西咸阳,712081;陕西科技大学电气与信息工程学院,陕西西安,710021
【正文语种】中文
【中图分类】TS736+.2
随着科学技术的进步,造纸工业正向高速度、高精度和自动化方向发展,纸幅幅宽可达15 m,纸机速度可达1800 m/min[1]。

但是,纸机高速运行也加大了出现纸幅缺陷的风险,进而影响产品质量,所以,纸幅表面缺陷检测越来越受到造纸企业的关注。

线阵CCD(Charge-coupled Device)相机的光电信号转换和自扫描速度非常快,具有很好的动态采集效果,可以解决高速运行纸幅的图像采集问题。

高速、高分辨率的CCD相机在进行图像采集时,必然会产生大量的图像数据,对图像处理系统的数据处理能力和实时性提出了非常高的要求。

传统的基于机器视觉的计算机纸病检测系统,检测速度慢、成本高,难以满足高速纸幅缺陷检测的实时性,而基于
FPGA(Field Programmable Gate Array)和DSP(Digital Signal Processor)的纸病检测系统又具有结构复杂、开发周期长、通用性较差的缺点[2]。

为了解决这些问题,在研究纸病检测系统原理的基础上,本文设计了一种基于FPGA和计算机的高速纸病检测系统。

如图1所示,系统开机后,由Avalon总线实现对CCD相机的初始化配置,由
NIOS Ⅱ软核处理器控制图像采集模块[3]。

在图像采集模块的控制作用下,线阵CCD相机采集LED光源照射下的高速运行的纸幅信息,将光学信号转换成电信号。

电信号经过A/D转换之后,为防止数据丢失先缓存到FIFO(先入先出)缓存中,然后传输到SDRAM1。

在SDRAM控制器的作用下,再从存储器中提取图像数据,并传输到图像预处理模块。

如果经过边缘检测确定有纸病,则抓取出纸病图像存入到SDRAM2中,同时提取纸病信息,包括所在帧的行、场位置信息,再经过封装之后和SDRAM2中原图像数据传输到上位机,根据上传的纸病图像数据由上位机判别出纸病类型。

如果经过处理之后没有发现纸病,则不上传图像数据,将FIFO缓存清除。

基于FPGA和CCD相机的纸病检测系统由硬件部分和软件部分组成,该系统的结构框图如图1所示。

图像传感器是纸病检测系统中的一个关键环节,线阵CCD相机将采集到的模拟信号
传送给视频处理电路,以去除复位脉冲干扰和噪声信号,并进行A/D转化,将模拟信
号转换成数字信号并传输给FPGA外部SDRAM进行数据缓存。

在表面检测过程中,可
采用面阵CCD和线阵CCD;对于高速运行的纸幅来说,更适合采用线阵CCD。

本系统中图像采集设备为DALSA公司的Spyder3 Color系列双线CCD线阵工业数字摄像机。

该系列使用DALSA独有的双线扫描传感器(Dual-line Sensor),通过双线彩色(Biliner Color)技术将线阵传感器上的一条线交替感应R、B分量信息,另一条线感应G分量信息,然后以插值的方法得到每个像素的RGB分量信息。

该系列
相机采用Camera Link串行接口,传输距离可达100 m。

为了去除复位脉冲干扰和噪声信号,图像信息经过CCD相机采集之后需进入视频处理电路,其组成单元主要包括:前置放大、相关双采样、箝位、滤波输出、行缓冲、输出接口电路等。

从CCD器件接受的信号经过前置放大后成为差分信号输出,然后进入CDS进行相关双采样处理,得到初步去噪后的信号;再经过低通滤波器滤除CCD驱动脉冲的脉冲干扰,由增益放大电路放大到A/D转换器需要的电压,进行
A/D变换得到数字信号,并由缓存器缓存,由LVDS接口芯片驱动后输出。

Camera Link接口是一种数字通信接口,由National Semiconductor公司的Channel Link技术发展而来,具有数据传输速率高、数据接口输出采用线数少、连接电缆容易制造、通用性好的优点。

标准的Camera Link接口提供3类信号,分别是高速相机控制信号、低速串行命令通信信号和高速视频信号。

高速相机控制信号是4对LVDS差分信号,即相机控制信号1(CC1)、相机控制信号2(CC2)、相机控
制信号3(CC3)及相机控制信号4(CC4),分别是外同步信号、重置信号、向前信号
及保留信号。

低速串行命令通信信号是2对LVDS信号SerTFG和SerTC,进行相
机与板卡之间异步通信信号,实现对相机的配置和对相机寄存器的查询[4]。

FPGA作为软件部分的载体,是整个系统的控制核心。

在时序驱动模块,FPGA生成
时序脉冲控制线阵CCD器件进行自扫描,采集图像数据,实现光信号到电信号的转变[5]。

FPGA采用Altera公司Cyclone Ⅳ系列中的EP4CE10资源,它具有10320个逻辑单元(LEs)、46个M9K存储器模块,每个模块都具有9 kb的嵌入式SDRAM存储器,并且可以根据需要配置成单端口、双端口RAM以及嵌入式FIFO
存储器或者ROM;还具有8个PLL、10个全局时钟网络,可以满足不同模块的时
钟频率。

有23个嵌入式18×18乘法器,可以实现DSP处理密集型应用。

其最大用户接口179个,具有高达840 Mb/s发送器(Tx)、875 Mb/s接收器(Rx)的LVDS接口,能支持高达200 MHz的DDR2 SDRAM和167 MHz的DDR SDRAM,可以充分满足高速视频缓存。

上位机软件采用基于VC 2010和Open CV的开发平台。

Open CV是由Intel公
司资助的开源计算机视觉库,由一系列C函数和C++类构成,能够实现图像处理和
计算机视觉方面的很多通用算法。

Open CV的功能非常强大,能够实现对图像数据的操作、对图像和视频的输入输出、对矩阵和向量的操作以及线性代数的算法程序和对各种结构进行分析等。

利用以上平台开发出相应程序,对上传到上位机的纸病
图像数据实现双阈值化,计算二维盒维数,根据纸病图像的灰度特征和二维盒维数特
征识别纸病类型。

在系统设计中,如果把所有的图像信息全部上传到上位机,用PC判断有无纸病和纸
病类型,会占用大量的CPU内存,不但功耗大,而且,计算速度慢、效率低,达不到实
时性的功效。

所以,在系统设计中采用的方案是,FPGA接收从CCD相机传送的图像数据,并缓存到外部SDRAM中,然后图像处理模块从SDRAM中读取图像数据。

如果FPGA判断出图像数据出现纸病,则提取出帧地址信息、相应像素点的位置信息等,封装后经以太网传送到上位机,进行进一步的纸病识别并显示。

在软件实现时,可以通过调用宏功能模块、编写Verilog HDL代码,构建相应功能模块,以实现整个系统逻辑。

软件部分包括CCD相机配置模块、图像采集模块、SDRAM控制器模块、
图像预处理模块和PC上位机模块。

图像数据传输与行、场有效信号的时序关系如图2和图3所示。

在行有效信号为
高电平时,在每个PCLK时钟周期,传感器送出一个10位的像素数据,本设计中图像
为1280×1024分辨率,因此,在一个行有效的时间段内,图像捕捉模块共接受1280
个像素。

在帧有效信号为高电平时,共接受1024行数据。

在SDRAM控制器模块的控制下,信号从外部SDRAM进入图像预处理模块,进行图像边缘检测,提取纸病信息。

本设计所选用的FPGA具有46个9k RAM块,考虑到
图像的容量和动态图形处理功能的扩展,选用存储容量为32 MB的外部SDRAM,将其在存储空间上划分成SDRAM1和SDRAM2,各占2个BANK块,有16 MB存储空间。

由于采集到的每个像素RGB分量各为10位,则每个图像数据为30位,而每
个BANK有16 bit数据宽,显然用1个16位宽度的BANK不能存储1个像素,需
采用2个BANK合并存储像素,即将R[9∶0]和G[9∶5]存入到第1个BANK中,将
G[4∶0]和B[9∶0]存入到第2个BANK中。

SDRAM控制器至少需要完成激活、读写操作、预充电、刷新和空操作等5个主
要功能。

激活:SDRAM在进行读写操作前,必须先将位于相应BANK中的行地址
进行激活,然后才能对相应区域进行读写。

此时,地址线上的地址是由行地址和BANK选择地址组成。

读写操作:将图像数据读出或写入SDRAM中。

由于采用
2个BANK合并存储像素,所以SDRAM控制器中需要仿真成4个数据端口(2个写端口和2个读端口),在同一时刻将1个像素RGB从2个BANK中同时写入或读出。

预充电:对工作行中的所有存储体进行数据重写,并复位其行地址。

刷新操作需要
满足一定的时间要求,必须在一定的时间段内完成1次刷新操作,否则会出现数据丢失或者不稳定的情况。

将从相机采集的图像数据经FIFO缓存后传输到SDRAM1中,直到写满之后,传输到图像预处理模块进行边缘检测和纸病区域的提取。

由于CCD相机输出的图像数据
是RGB格式,而边缘检测算法是基于图像的灰度,所以在处理之前要先进行图像数
据的格式转换,可以通过转化公式(1)来实现。

但是,由于FPGA不便于进行浮点数运算,所以要将式(1)等号右边各项乘以128后相加所得值,再右移7位来等效代换,
得到式(2),进而避免浮点数运算。

Gray=R×0.299+G×0.587+B×0.114
Gray=(R×38+G×75+B×15)≫7
边缘检测算法通过梯度算法来实现,经典的边缘算法有:Sobel模板、Prewitt模板、Roberts模板、Laplace模板等。

其中,Sobel算法具有计算简便、检测效果好等优点,应用较为广泛[6]。

本设计采用3×3的模板卷积计算边缘检测值,其中,图4是
3×3像
式(3)中,X、Y是2组3×3的Sobel矩阵算子,分别为横向和纵向的权值。

式(4)中,P为像素窗中9个相邻像素的矩阵,Gx和Gy分别代表经横向和纵向的边缘检测的亮度差分值;G为边缘检测值,若此幅值大于局部阈值D,则可判断像素点p5为
边缘像素;其中,局部阈值D可由其3×3邻域内所有边缘检测值的平均值确定。

根据Sobel算法,对于像素p5点的边缘检测,利用式(3)和式(4)计算完成。

用FPGA 实现图像边缘检测算法步骤。

步骤Ⅰ:通过调用移位寄存器Line Buffer获取3×3的窗口数据,其原理如图(5)所示。

其中,Altera提供了基于RAM的移位寄存器Line Buffer,即FIFO(先入先出)模块。

该宏功能模块共设置了3个tap。

每个tap存储1024个像素,3个tap将像素分成3行成为一个像素处理窗;随着时钟周期,每个数据向下一列传递,刷新像素数据窗
数据。

该模块主要的输入/输出信号描述见表1。

用Verilog HDL语言描述调用Line Buffer实现3×3的窗口数据。

在获得3×3窗口所需的像素后,调用宏功能模块设计运算电路,实现Sobel算法中
的乘加及开方运算。

步骤Ⅱ:计算G(G为和之和的算术平方根),并传输到SDRAM2中,然后通过与阈值D比较来决定此像素是否为边缘像素。

步骤Ⅲ:若oDATA为0,则p5为边缘像素点,计数器Counter加1;下一个时钟
周期到来时刷新数据窗口,重复步骤Ⅰ,直到读取出一帧数据。

若Counter大于给定阈值,则认为图像中存在纸病,则把SDRAM2中的图像数据上传到上位机;如果Counter小于给定阈值,则可以认为图像中不存在纸病,则把SDRAM2中数据清零。

4种常见纸病图像的Sobel边缘检测图像如图6所示。

上位机模块读取存储在硬盘中的图像数据,提取出包含纸病区域的最小矩形,根据缺
陷区域轮廓的面积、盒维数等信息,识别出纸病类型,并在人机界面中显示出来。


7显示了常见纸病,如黑斑、孔洞、褶皱和裂痕等;分析它们的特点,不难发现孔洞和黑
斑的形状特征比较接近,褶皱和裂痕的形态特征十分相似;仅从纸病的灰度、形状、面积很难将它们区分开来。

根据纸病图像的形态特征、灰度特征和分形特征,采用
基于图像形态和盒维数的纸病识别方案[7]。

首先采用双阈值法从背景中分割出纸
病区域,然后计算反映纸病形状类型的盒维数,最后结合图像灰度阈值和盒维数计算
结果,确定纸病的具体类型。

为了确定不同类型纸病的盒维数分布特征,取包含黑斑、裂痕、孔洞和褶皱的各25个纸病样本,编程计算不同纸病图像的盒维数,分析所得
结果,求出盒维数分布范围和均值(见表2)。

由表2可以看出,黑斑和孔洞的几何形态倾向于圆形分布,盒维数比较接近;裂痕和褶皱的几何形态倾向于线性分布,盒维
数比较接近,但是几何形态不同的纸病类型盒维数差别较大。

从图7可以看出,孔洞和黑斑的二值化图像差别很大,裂痕和褶皱的灰度均值差别也很大。

所以,结合纸病
图像的盒维数和灰度均值很容易识别出纸病的类型。

在VC++和Open CV平台中编程实现双阈值分割算法,二值化纸病图像,再在二值
化图像中提取出纸病区域所在最小矩形,然后传输到盒维数计算程序,计算出图像的盒维数。

最后,结合表2和纸病图像灰度,判别及输出纸病。

4 结束语
基于FPGA(Field Programmable Gate Array)的硬件数字电路,处理数据时具有并行性、计算速度快的优点,对于算法简单、步骤单一的低级图像处理算法如图像滤波、边缘检测等具有非常好的适应性。

与传统的基于机器视觉相比,该系统能够快速判断出是否有纸病产生,同时,仅将纸病图像数据传输到上位机,大大减少了计算机的工作量,缩短了纸病检测的时间,提高了整个系统的实时性。

与基于
DSP(Digital Signal Processor)嵌入式系统的纸病检测系统相比,该系统具有并行处理程度高、集成度高、可移植性好和硬件电路结构简单等优点。

Open CV作为一个开源的计算机视觉库,采用优化的C代码编写,能够充分利用多核处理器的优势,而且,简单易用,可以很方便开发出计算几何、阈值化等相关应用程序。

本设计能够在满足实时性的基础上,识别出常见纸病,基本上达到了设计目的,但对于不常见纸病的识别能力有限,有待进一步研究。

相关文档
最新文档