《电子技术应用》

基于FPGA的薄膜瑕疵检测

2016年微型机与应用第16期 作者:王宏松,李杰
2016/9/18 17:56:00

  王宏松,李杰
  (上海常良智能科技有限公司,上海 201108)

       摘要:针对现今工业薄膜生产过程中薄膜幅宽更大且生产更快的问题,提出一种基于FPGA的快速薄膜瑕疵检测系统方案。系统首先采用相关系数法准确求出薄膜灰度图像的最小重复周期,根据最小重复周期确定两个比对图像块并求出差值图像,其次将差值图像二值化再进行形态学处理,最后经过面积约束条件找出薄膜瑕疵所在位置。其中充分利用FPGA并行处理的优势,提高了图像处理的速度。实践结果表明,该系统能够在300 m/min的薄膜生产线上成功检测出瑕疵面积仅10个像素的瑕疵,在满足实时薄膜瑕疵检测的需求方面具有实际应用效果。
  关键词:机器视觉;瑕疵检测;FPGA;相关系数;图像匹配  

0引言
  现代薄膜被大量地用于生产生活。在薄膜的生产过程中,由于生产工艺及现场环境等因素影响,容易造成薄膜表面出现墨点、划伤、破洞、褶皱、蚊虫等瑕疵。为了在生产过程中及时检出薄膜表面的各种瑕疵,控制和提高薄膜产品的质量,企业从传统的人工目视抽检逐渐发展为使用基于计算机软件的在线瑕疵检测系统[12]。随着薄膜表面检测质量要求的日益提高,以及幅宽更宽、生产速度更快等更为严格的工艺要求出现,单纯依靠软件来实现瑕疵检测已经不能满足实际工程的需要[3]。
  本文采用现场可编程门阵列(Field-Programmable Gate Array,FPGA)作为瑕疵检测的核心处理单元,设计并实现了一种实时的瑕疵检测系统。该系统具有检测速度快、稳定性好并容易配置新瑕疵种类等优点,可大大提高生产效率和降低制造成本。
1薄膜瑕疵检测系统
  目前薄膜瑕疵检测系统大多采用工业计算机、线扫描相机、旋转编码器和线型光源的方案。在生产时,由高亮LED组成的线型聚光冷光源采用透射或反射的方式照射在薄膜表面,通过与薄膜运行同步的旋转编码器触发,使架设在生产线上的线扫描相机同步扫描,将相机采集到的薄膜图像通过工业计算机上的采集卡实时传送给图像处理系统软件进行瑕疵识别处理。由于瑕疵图像的灰阶分布与正常图像的灰阶分布存在明显差异,从而使系统能够发现瑕疵,同时对瑕疵进行有效的判定、分类及后续处理。
  在实际生产中,对于幅面较宽的薄膜,可以采用多个线扫描相机并行采集图像,同时传送给工业计算机的方式。然而随着幅宽增宽,生产运行速度更快,单位时间内采集得到的图像数据量更大,目前常见的基于软件的图像处理方式越来越不能满足实时性的要求。本文设计了一种基于FPGA的薄膜瑕疵检测系统,将主要的图像瑕疵识别和处理交给以FPGA为核心的图像处理单元,处理结果传送给工业计算机,这样可以更好地适应高速、高质量生产的要求。图3FPGA及主要接口电路

2系统硬件设计
  系统硬件由光源单元和图像处理单元两部分组成。光源单元包括LED线型光源和光源控制器,图像处理单元则由线扫描相机、FPGA图像处理板以及旋转编码器组成。总体框图如图1所示。

图像 001.png

  2.1光源单元电路
  光源采用高亮大功率LED组成线阵分布,由光源控制器产生PWM信号,通过高速双金属氧化物场效应三极管(Metal Oxide Semiconductor Field Effect Transistor,MOSFET)驱动器芯片MC34151放大,驱动线型光源发光。LED在电路结构上采用串并式排列,每一路串联LED电路由一路PWM信号驱动,光源控制器可以输出多个独立的PWM信号,分别驱动多路LED电路。当需要调节线型光源不同位置的亮度时,只需独立调整相应位置对应的LED串联电路的PWM信号即可。PWM信号驱动电路如图2所示。
  

图像 002.png

  2.2图像处理单元电路
  图像处理单元的核心采用ALTERA公司的Cyclone III系列FPGA,该系列FPGA采用TSMC的65 nm低功耗(Low Power,LP)工艺,提供丰富的逻辑、存储器和数字信号处理器(Digital Signal Processor,DSP)功能,含有5 K~120 K逻辑单元(Logical Element,LE),288个数字信号处理(DSP)乘法器,存储器容量达到4 Mbit。Cyclone III器件针对图像处理应用进行了优化,采用专业显示I/O接口低电压差分信号[4](LowVoltage Differential Signaling,LVDS),包括低摆幅差分信号和点对点差分信号,每个锁相环(Phase Locked Loop,PLL)可动态配置,支持可变刷新率,以增强提高图像处理功能和质量。
  图像处理单元的主要电路包括FPGA集成电路、图像数据输入电路、DDR存储器控制电路、图像输出接口电路等,其中Cyclone III FPGA及主要I/O接口电路如图3所示。

图像 003.png

3瑕疵检测算法
  薄膜瑕疵检测算法流程如图4所示。首先将采集到的长L宽W的原始薄膜图像进行预处理,其中包括彩色图像灰度化处理和对比度拉伸处理;其次,通过相关系数法求出薄膜图片的最小重复周期t并获得(L-t)×W参考图像块和相同大小的待检测图像块,求出两个图像块的差值图像。之后将差值图像转为二值图像并进行形态学处理操作,获得检测结果图像。最后,在检测结果图像中,当其中有白色块的面积大于所设定的阈值w时,则该白色块为薄膜瑕疵。
 

图像 004.png

  3.1模块划分
  根据上述检测算法流程,FPGA中应主要包含图像预处理[5]、检测核心算法、存储控制器和主控制器等功能模块,如表1所示。表1模块划分模块名称功能主控制器负责器件整体功能的控制图像预处理包括图像格式转换、对比度拉伸检测核心算法对图像计算相关系数、形态学处理等存储控制器对存储器进行读写控制,以实现图像数据的暂存和更新其他模块I/O接口(数据、控制信号等)、显示输出等

图像 010.png

  根据前述瑕疵检测处理流程,整个图像处理采用并行加流水线结构,分为8个步骤,对应8个子模块,如图5所示。其中图像预处理包括灰度变换、对比度拉伸,分别采用并行处理结构,以保证实时性;瑕疵检测在图像分块的基础上采用6级流水线,包括相关系数计算、差值处理、形态学处理、面积约束、瑕疵标记和图像拼接显示,在时间上重叠复用各级流水线模块,进一步增加了处理的并行度,大大缩短了图像处理的时间。
  

图像 005.png

  3.2图像预处理
  在图像的采集和预处理过程中,需要改善图像的质量,增强有用信息。本系统中用到了彩色图像灰度化处理和对比度拉伸处理。其中,图像灰度化处理能够减少后续图像处理的运算量,减少FPGA硬件的面积,从而降低应用成本。本系统采用加权平均法对图像进行灰度化处理[6],其原理较为简单,不再赘述。典型数学表达式及实际应用公式如式(1)、(2)所示:
  QQ图片20160918180800.png 

      QQ图片20160918180807.png  

       图像对比度拉伸[8]是一种简单且非常有效的空域增强方法。通过实验发现,在原始薄膜图像的灰度图像上进行恰当的对比度拉伸是一种很好的图像增强方式,可有效地增强薄膜瑕疵图像,提高薄膜瑕疵检测的精度。该方法由两个基本步骤组成:(1)直方图统计,通过设定直方图两端的像素个数和占整个图像像素个数的百分比来确定两个端点a1和a2,灰度值小于a1的更改为0,灰度值大于a2的更改为255,本系统将这里的占比设定为0.005。(2)灰度值映射,在直方图中,两个端点之前的像素灰度值根据式(3)进行像素灰度值的映射。映射原理是将原图的灰度函数由一个变换规则映射成新的图像函数,即:
  QQ图片20160918180811.png

  其中f(x, y)为原图的灰度函数,g(x, y)为增强后的灰度函数,N为变换规则,即将a1~a2之间的像素灰度值按线性关系一一映射到0~255之间。
  3.3核心检测算法
  核心检测算法流程如图6所示。
  

图像 006.png

  待检测图片经预处理后获得算法处理图像。薄膜为固定周期的重复印刷制品。计算出薄膜的最小重复周期t。在L×W的算法处理图像中,从首行开始选取T×W(其中T<L)的感兴趣区域作为目标模版T(a, b),再从第二行开始每隔一行确定一个T×W的感兴趣区域作为候选模版G(x+a,y+b),选取若干个候选模版。
  本文采用去均值的归一化相关函数(式(4))来判断两个模版的相似程度:
  r(x,y)=
  QQ图片20160918180815.png

  当目标模版T(a,b)和候选模版G(x+a,y+b)完全一样时,相关系数r(x,y)取最大值1。使r(x,y)取最大值的候选模版所在的行数即最小重复周期t。根据(L-t)×W参考图像块和相同大小的待检测图像块,求出两个图像块的差值图像。
  将差值图像转为二值图像[9]并进行形态学开操作。为了去除生产中左右偏移和拉伸的干扰,将差值图像进行固定阈值二值化。为了有效计算单独的白色块面积,对二值图像进行形态学开操作,即腐蚀和膨胀处理[10]。处理之后得到检测结果图像。
  采用白色块中白点(灰度值为255的像素)的个数等效描述白色块的面积大小。如果白点的8邻域中有其他白点,则两白点为同一白色块。只要有白色块的面积满足瑕疵阈值,即为薄膜瑕疵。
  3.4主控制器模块
  主控制器模块负责控制图像数据的输入输出、图像在DDR中的暂存、流水线控制等过程,还包括了参数的配置控制。本模块主要由有限状态机构成。三段式的状态机由组合逻辑的状态变化、时序逻辑的状态切换及输出逻辑组成。
  为了提高瑕疵检测处理流程中各个步骤的易控制性,将每个步骤都定义成3个状态,分别是“步骤x开始”、“步骤x等待”、“步骤x结束”。因此,主状态机的状态归纳为:空闲、初始化、图像数据输入输出、图像在DDR中的暂存、图像瑕疵检测流水线、显示输出等状态,主状态图如图7所示。
  

图像 007.png

4实验结果与分析
  为了验证系统的实时性以及检测性能,采用3组不同花色的薄膜进行实验,每组2 000 m,其中分别有油污、蚊子、水印以及刀丝等瑕疵,为不合格薄膜产品。测试结果如图8和图9所示。
  

图像 008.png

图像 009.png

       在3组薄膜产品的现场检测实践中,大于检测阈值的瑕疵都能成功被检测到。在薄膜瑕疵都能够成功检测出的条件下,薄膜瑕疵检测速度达到300 m/min。因此,本文所设计的系统其检测速度和检测成功率都能够满足实际工业薄膜生产的需求。
5结论
  本文通过分析薄膜瑕疵的图像形态,利用FPGA特有的高集成度、高速实时处理的特点,设计了一种薄膜瑕疵检测系统。设计了并行的图像预处理功能以适应更大幅宽的薄膜。将瑕疵检测核心算法优化为6级流水线结构,大大提高了资源利用率和并行度,在实践中比传统基于计算机的瑕疵检测具有更低的硬件成本和更高的检测速度,为大规模推广提供了应用参考。
  参考文献
  [1] 樊向党,林波,沈文和. 塑料薄膜表面疵点检测及识别方法研究[J]. 工业控制计算机, 2011, 24(5):7475.
  [2] 钟球盛,胡广华,李静蓉. 光学薄膜表面微细缺陷在线检测方法研究[J]. 机械设计与制造, 2011(10):102104.
  [3] 胡广华,钟球盛. 一种基于多目机器视觉的光学薄膜瑕疵检测系统[J]. 机械设计与制造, 2012(4):162164
  [4] 焦文喆,翟正军,任岚昆.基于FPGA的图像数据采集卡及其驱动设计 [J]. 国外电子测量技术, 2010, 29(3):5659.
  [5] 李长莉,基于FPGA的CCD扫描缺陷检测实时数据处理技术的研究[D]. 哈尔滨:哈尔滨理工大学, 2008.
  [6] 温杰,李锦明.基于FPGA的实时图像边沿检测系统的实现[J].电子技术应用, 2015,41(10):6567.
  [7] 许蓓蕾,庄奕琪,汤华莲,等.基于对象的多级图像增强法[J].计算机应用, 2011,31(6):15561559.
  [8] 李杰,周浩,张晋,等.基于粒子群优化的模版匹配跟踪算法[J].计算机应用, 2015, 35(9):26562660.
  [9] 陈强,朱立新,夏德深.结合Canny算子的图像二值化[J].计算机辅助设计与图形学学报,2005, 17(6):13021306.
  [10] 孙继平,吴冰,刘晓阳.基于膨胀/腐蚀运算的神经网络图像预处理方法及其应用研究[J].计算机学报,2005,28(6):985990.

继续阅读>>