APP下载

一种改进ViBe的网状织物缺陷检测方法

2019-10-29刘秀平杜勇辰闫焕营陈小改郑冬冬

西安工程大学学报 2019年5期
关键词:网状阴影织物

刘秀平,冯 奇,杜勇辰,徐 健,闫焕营,童 里,陈小改,郑冬冬

(1.西安工程大学 电子信息学院,陕西 西安 710048;2.深圳罗博泰尔机器人有限公司,广东 深圳 518109)

0 引 言

纺织产业在改革开放40年来一直保持稳步发展的态势。 纺织品制造过程中,网状织物缺陷检测是决定产品质量优劣的重要环节,对产品外观及等级划分有较大影响,如防虫网的破损会影响农作物防虫效果,防雹网的断纱会影响农作物防御等。

随着机器视觉技术的发展,利用机器视觉技术替代人工缺陷检测越来越成为趋势。 大多数纺织品生产企业依旧采用的是人工检测织物缺陷的方法,效率低,成本高,而且微小的缺陷极易造成漏检或错检[1-2]。与人工检测方法相比,机器视觉技术具有时间快、精度高、易于信息化等特点[3]。 常用的运动前景检测算法包括背景差法[4]、光流法[5]、帧间差分法[6]、混合高斯模型(GMM,Gaussian mixture model)[7]和视频背景提取算法(ViBe,visual background extraction)[8-9]。 背景差法能适应多背景变化的情况,可以很快消除噪声,但其背景建模速度慢,程序结构复杂,各种参数调节比较困难;光流法的检测精度较高,但是算法复杂,往往难以实现;帧间差分法对环境适应性强,而且易于实现,但只能提取目标的边界,不能完整显示前景区域。GMM自学习能力强,鲁棒性很高,但是算法复杂,并且对每个像素都必须建立多个模型[10];ViBe算法是目前学者比较热衷的算法,这是由于ViBe算法对环境扰动,缓慢光照等有较强的自适应能力[11],并且算法简单,运算效率高。然而,该算法也存在一些问题,如鬼影、静态目标以及光照引起的阴影问题。

很多研究者对ViBe算法进行了改进,以此解决以往传统ViBe算法存在的不足。 利用相邻帧图像像素差值替代传统ViBe算法单帧的像素值建立背景模型,再根据不同运动背景自适应地更新阈值提取前景,其优势是抗噪鲁棒性强,提高了前景分割的准确性,但是不足之处在于当运动目标数量较多时,阴影难以消除,影响提取分割效果[12]。 在此基础上,通过将多帧图像替代传统ViBe中第1帧图像对背景建模而消除 “鬼影”,并利用Canny算子和形态学方法相结合使得提取的目标更完整,时间更快[13-14]。 然而,该算法并没有考虑光照所引起的阴影问题。利用前5帧中每一个像素点的邻居位置随机选取4个像素点初始化背景模型,并通过三帧差法提高了前景像素的漏检率,能有效去除噪声和抑制“鬼影”,但在复杂场景检测时效果欠佳[15]。因此,本文提出了一种基于改进ViBe算法的运动网状织物缺陷检测方法,利用基于颜色信息及背景差分进行背景建模,通过HSV颜色空间转换模型消除阴影问题,且采用OSTU算法计算最佳分割阈值。结果表明,改进的ViBe算法可以较好地消除阴影,目标检测效果较好,实现了织物缺陷检测的动态性。

1 网状织物缺陷检测

ViBe算法是一种像素级的运动目标检测算法,本质是将图像的像素分割为前景像素和背景像素。ViBe算法实时性和鲁棒性都比较高。 主要步骤包括背景模型的建立,前景检测以及模型的更新[16]。

基于ViBe算法的运动网状织物缺陷检测方法,首先是通过视频第1帧进行背景建模,建立一个背景样本集,然后对下一帧图像的像素值逐个与样本集中的像素值对照判定是背景像素点还是前景像素点,最后对样本集中不属于背景像素点的位置进行更新。

1.1 背景模型建立

ViBe算法初始化的实质为背景模型的建立。 ViBe算法的实现首先是通过视频序列的第1帧获取背景,为每一个像素建立样本集合。 然后将后续各帧中的像素值按照对应位置逐一与背景样本集中的像素值比较。 若当前帧某个位置的像素值与样本集中的某些相近,可判断此像素为背景像素。定义v(x)为RGB颜色空间中x处的像素值,vi为样本集中每个像素的像素值,则由此建立的背景像素模型记为

M(x)={v1,v2,…,vN}

(1)

1.2 前景检测

背景模型建立完成后,ViBe算法从第2帧开始进行前景检测,即运动网状织物缺陷检测。 所谓前景检测,即就是对当前帧的像素与背景样本集中的像素进行比较,判断当前像素是否属于背景像素。 欧式空间像素分类如图1所示, 其中C1,C2为二维颜色空间的像素分量,范围为[0,255]。 设x处的像素值为v(x),并且以v(x)为中心,R为半径,这样可以得到一个区域SR(v(x)),此区域包含像素的背景样本个数为区域SR(v(x))与背景模型M(x)的交集,记为

m={SR(v(x))∧(v1,v2,…,vN)}

(2)

通过m的大小可以判断x处的像素是前景像素还是背景像素。 当m小于最少数目匹配阈值#min时,此时x处的像素是前景像素;当m值大于或等于#min阈值时,为背景像素。通常实验参数背景样本集数目N=20,阈值#min=2,R=20。

图1 欧式空间像素分类Fig.1 Euclidean space pixel classificationprocess

1.3 更新策略

ViBe算法的更新策略主要包含了3个方面:随机选取样本更新;随机决定是否更新背景模型;随机决定是否更新邻域像素[17]。 若当获取的视频当前帧的像素点被判断为背景像素点,此前建立的背景模型的像素点就有可能被替换。 随机选择一个背景模型像素样本点,用当前帧的该像素点替换上一帧此位置处的像素点,更新的概率为1/λ,λ为更新因子。在运动网状织物缺陷检测时,由于传送带的运动速度比较快,这样会导致缺陷检测时出现许多误检点。因此,在运动网状织物缺陷检测时需要根据传送带运动的快慢程度,调整λ的大小。在N帧背景模型中随机抽取一帧图像PG,如图2所示。图2(a)表示N帧背景模型任意一帧的x位置及其八邻域的像素,如果新的一帧图像图2(b)中PG(x)像素被判断为背景像素,则PG(x)及其邻域的像素值就需要被替换。

(a) 背景模型 (b) 新一帧背景模型图2 背景模型更新Fig.2 Background model update

2 改进的网状织物缺陷检测

ViBe算法在运动网状织物缺陷检测时,只适用于第1帧图像不存在缺陷的检测,对于光照产生的阴影没有得到很好的消除, 而且缺陷的形状与实际形状有一定差别。 为此,本文针对这些问题从以下几点做了改进,使得传统ViBe的缺陷检测效果得以提高。

2.1 模型建立

传统的ViBe算法在背景模型建立时,视频序列的第1帧没有目标,所以用第1帧图像作为背景进行建模。 但是,多数运动目标检测时,初始状态已经存在目标,所以使用ViBe算法前需要对第1帧图像进行分割。如图3所示,首先将带有缺陷的第1帧RGB图像转换到Ycbcr空间,然后将得到的Ycbcr空间的图像进行二值化处理,接着通过背景差分法得到网状织物并将其作为背景,最后对得到的背景图像采用ViBe算法进行背景建模。

图3 第1帧图像背景提取Fig.3 Background extraction of the first frame image

2.2 HSV阴影滤除

ViBe算法在网状织物缺陷检测时,在目标与非目标区域存在许多阴影,运动目标检测时所出现的阴影是由于光线被运动目标遮挡[18]。 阴影区域通常看做是一个半透明的区域,具有2个特点:与原背景相比较,阴影遮挡的背景像素的颜色有所改变;像素点的饱和度与亮度比原来小。HSV检测阴影的主要思想是:对于视频序列的某一帧含有运动目标图像像素进行H(色度)、S(饱和度)、V(亮度)比较,在HSV颜色空间中阴影的H和它的S与其他区域存在明显差别[19]。

HSV颜色空间模型滤除阴影主要包括3个步骤:

(1) 颜色空间转换 将RGB颜色空间图像转换到HSV颜色空间,再经过各自通道分离,获得H、S、V三通道的图像。

(2) 阴影检测 将每一帧图像得到的H,S,V分量带入(4)~(6)式,如果S(x,y)为0,即检测到的为非阴影点,反之检测到的为阴影点。

(3)

SA(x,y)=|SC(x,y)-SB(x,y)|

(4)

HA(x,y)=HC(x,y)-HB(x,y)|

(5)

式中:S(x,y)为点(x,y)处像素的亮度值;HC(x,y),SC(x,y),VC(x,y)分别表示当前帧阴影前景像素的H,S,V分量值;HB(x,y),SB(x,y),VB(x,y)分别表示背景图像像素的H,S,V分量值;TH,TS分别表示当前帧与背景帧在HSV彩色模型中的色调以及饱和度的范围;α为光照影响因子,β为噪声抑制因子,参数取值范围为0≤α≤β≤1。

(3) 阴影滤除 阴影检测出来之后,对检测到的阴影区域的像素值全部置为0,从而消除阴影。

如图4所示,检测视频第239帧中较好地消除了目标区域周围的阴影。

(a) 改进前 (b)改进后图4 第239帧阴影消除效果Fig.4 The effect of 239th frame shadow elimination

2.3 OSTU阈值分割

σ2(t)=ω0(μ0-μ1)2+ω1(μ0-μ2)2

(6)

式中:μ0为图像的灰度均值;μ1为前景均值;μ2为背景均值。当σ2(t)为全局最大值时此时的t称作图像分割的最佳阈值。

本文采用OSTU确定运动网状织物与缺陷分割的最佳阈值,图5是检测视频第94帧分割后改进ViBe算法的检测效果。

(a) 改进前 (b)改进后图5 第94帧改进ViBe算法检测效果Fig.5 The detection effect of the improved ViBealgorithm of 94th frame

从图5可以看出,改进前夹杂大量的伪目标点,采用OSTU分割后这些目标点基本消除。

3 结果与分析

本文算法实现环境为Windows7操作系统,Intel Core i7 处理器,CPU频率3.60 GHz,结合Matlab 2016b,高清彩色工业相机JHSM300f(帧率12 fps,分辨率2 048×1 536), 镜头(型号M1614-MP2,焦距16 mm),白色可调光源(型号JHZM-A40-W,照度40 000 lx),传送装置(传送速度:15 m/min),防虫网等进行运动网状织物缺陷检测系统的搭建。 首先通过工业相机采集一段网状织物在传送带运动的视频序列,然后再将视频序列在Matlab软件上借助检测算法对织物缺陷进行检测。

为了验证本文改进的ViBe算法对运动网状织物缺陷的有效性,实验采用GMM、ViBe算法及改进ViBe算法进行对比实验。本文选取参数N=10,R=30,#min=2,λ=5,选取视频第128帧,161,237帧。图6(a)为原视频帧,图6(b)为混合高斯模型算法处理的效果,可以看出,混合高斯模型在处理时容易出现“鬼影”问题(绿色框所示)。图6(c)为传统ViBe算法处理的结果,由于传送带的运动,导致大量的运动网状织物的许多非缺陷被误检为缺陷(橙色框所示),也存在“鬼影”问题。图6(d)为改进ViBe算法处理的效果。从这几种算法处理的效果可以直观看出,改进的ViBe算法较好地抑制了非缺陷对检测带来的影响,同时也消除了由于光照带来的阴影问题,检测结果更加接近运动网状织物缺陷的形状。

(a) 原图 (b) 混合高斯模型 (c) 传统ViBe (d) 改进ViBe图6 网状织物缺陷检测结果Fig.6 The defect detection result of mesh fabric texture

改进的ViBe处理视频的时间为15.71 s, 混合高斯模型和ViBe处理视频的时间分别为19.29 s,16.48 s。为了更好比较改进算法与其他算法,采用精确率(SPR)与召回率(SRE)2种评价指标来衡量改进算法。 精确度表示正确检测出的前景点占检测出的所有前景点的比例。 召回率表示正确检测出的前景点占所有前景点比例。 精确度与召回率越高,运动网状织物缺陷检测效果越好。 具体评价指标定义如式(7)所示。

(7)

式中:TP为正确检测前景像素的数目;TN为正确检测背景像素的数目;FP为非正确检测前景像素的数目;FN为非正确检测背景像素的数目。

表2列出了GMM、ViBe以及改进ViBe算法对运动网状织物缺陷检测样本的精确率,召回率进行计算。

表2 本文算法与其他算法的评价指标比较Table 2 Comparison of the evaluation indexes of this algorithm and other algorithms %

4 结 语

本文采用改进的ViBe算法实现运动网状织物缺陷检测,同时将其与ViBe算法和GMM进行对比实验。 实验结果表明,改进ViBe算法在处理运动网状织物缺陷检测问题时与ViBe、GMM相比,时间复杂度分别提高2.81 s和3.58 s,精确率分别提高3.4%和9.6%,召回率分别提高1.2%,4.5%,运动织物检测的准确性得到了提高。 但是,在网状织物纹理不规则、背景复杂等方面还存在检测效果欠佳、漏检等问题,这些问题将是今后的研究重点。

猜你喜欢

网状阴影织物
无Sn-Pd活化法制备PANI/Cu导电织物
不同针灸疗法治疗寻常痤疮的网状Meta分析
SWRH82B热轧盘条心部异常网状渗碳体组织分析及改善措施
《纺织品织物折痕回复角的测定》正式发布
竹纤维织物抗菌研究进展
8种针灸疗法治疗原发性痛经的网状Meta分析
你来了,草就没有了阴影
让光“驱走”阴影
阴影魔怪