基于机器视觉的摄像整纬纬斜检测研究
2023-04-03史先传许议元
史先传,许议元,殷 帅
(常州大学 机械与轨道交通学院,江苏 常州 213164)
0 引言
织物在染色、漂洗等工艺流程中,均会产生不同程度的纬斜量,需要经过整纬机矫正、定型机热定型后,才能达到成品布料的质量标准[1-3]。纬斜检测的准确性直接关系到整纬机的矫正效果。目前,国内纬斜检测的主流技术依然是光电检测技术,虽然在检测实时性上占有一定优势,但所能检测的织物种类存在局限性,例如对于透光性较差的厚重布料,光电检测信号较弱[4-6]。而机器视觉作为一种高效、无接触的检测技术,已经开始应用于织物纬斜的检测中[7-8]。
国外的Leimer公司在基于机器视觉的整纬机开发上处于业内领先水平。其研发的整纬系统自动化水平高,对图像数据处理速度快,在织物行进速度高达150 m/min时仍能稳定工作,整纬率可达100%,且对于不同种类的织物均能保证检测质量,适应性较广。其额外添加的监控系统通过自检便能实现故障排查。Mahlo公司的宽幅图像整纬机适用于纬斜角度在30°范围内的绝大多数织物,允许的织物幅面长度最高可达4 000 mm,视觉检测系统在检测纬斜的同时还能检测出纬纱的密度。其自身的恒张力控制机构,可以防止宽幅织物在行进过程中出现褶皱影响整纬效果。此外,整纬机还配有触摸屏外设,使人机交互更为便捷。
近年来,国内多家企业在机器视觉整纬机的开发上也取得了一定的成效,如常州宏大公司生产的智能图像整纬机,利用多部面阵相机结合透射与反射两种红外光源,对织物实行全幅采集检测实现整纬矫正。但国内的摄像整纬技术还不够成熟,在实际生产运行的复杂工况下仍不够稳定,无法完全取代光电整纬机,与国外先进技术水平存在一定的差距[9]。织物种类繁杂多样,国内学者都在试着寻求一种适应性较广的纬斜检测算法。对此,董燕等提出了离散傅里叶变换结合多步投影分析的纬斜检测算法,通过对频谱图像的投影映射统计,计算得到纬斜角度[10]。王蕾等分析织物二值化后的频谱图像,计算功率谱后利用霍夫变换确定纬斜方向[11]。刘建宝等在传统最大类间方差法的基础上进一步优化,分步分割出纬纱纹理后进行窗口像素统计,统计结果中的最大值所对应的窗口角度即为纬纱倾斜的方向[12]。但上述文献多局限于对于织物图像的离线检测,在少有的针对实时动态摄像检测的设计中,楼跃升等指出投影法会统计到干扰信息,从而弱化了主要的纹理信息,不可避免地降低检测结果的准确性,并提出了频域次亮点检测法。但该方法存在一定的局限性,实验表明该方法的检测精度受织物纹理数目的影响,对于纹理数目较少的织物检测误差会偏大[13]。这些理论基础与实践探究都为摄像整纬技术的不断改进提供了很好的借鉴。
在动态采集的过程中实时检测纬斜,必须要兼顾检测精度以及检测耗时这两个关键因素。为解决这一问题,针对性地研究了基于机器视觉的纬斜检测算法。在频域内采用改进后的巴特沃斯陷波滤波器滤除干扰像素,得到纬纱纹理较为凸显的织物图像。分析纬纱纹理特征后计算其自相关图像,结合边缘检测与Blob分析,将纹理区域提取出来,再对纹理区域进行霍夫变换,阈值自适应后检测出纬斜角度,实现准确高效的纬斜检测。最后搭建了由六台CMOS工业相机构成的采集系统,模拟摄像整纬机的工作过程,动态抓拍织物图像,并在上位机控制系统中检测纬斜,观察纬纱变化趋势,综合结果误差与检测耗时验正所提出方法的合理性。
1 织物图像的频域预处理
由相机采集到的原始织物图像需进行预处理。预处理的主要目的在于滤除噪声、经纱纹理等干扰像素,尤其是对于经纱密度大于纬纱密度的织物,其经纱纹理相较于纬纱纹理更加明显,会对纬纱的检测造成较大的干扰。而织物图像上的干扰像素分布各不相同,在空间域中很难系统地分析,因此选择利用傅里叶变换,将图像转变到频域中处理。
图1是同一织物处于不同纬斜角度时的频谱图像。当织物纬纱倾角发生θ0的变化时,由于傅里叶变换的旋转性质f(r,θ+θ0)⟺F(ω,φ+θ0),其频谱图像也会发生相应角度θ0的变化。而当织物纬斜角度为0°时,纬纱纹理信息在频域中则被集中反映在竖直方向的频段上,频域次亮点检测法也由此衍生而出。鉴于该方法存在的缺陷,在频域中只对织物图像作预处理,将包含纬纱信息的频段作保留处理,屏蔽包含经纱和其他干扰信息的频段,便能达到频域滤波的目的。
图1 同一织物不同纬斜角的频谱图像
在M×N尺寸的织物图像上,点(x,y)处的灰度值可以用实函数f(x,y)表示,其快速傅里叶变换得到的频谱图像具有共轭对称性,即:
F*(u,v)=F(-u,-v)
(1)
式中,F(u,v)表示f(x,y)的傅里叶变换,F*(u,v)表示F(u,v)的共轭,u,v为频域变量。
根据这一性质可知,这些频段不可能独立出现。对于这种对称存在且较为分散的频段,可以用巴特沃斯陷波滤波器来屏蔽[14],其产生公式为:
(2)
式中,D0表示滤波半径。D1,D2分别表示点(u,v)到(uk,vk)和(-uk,-vk)的距离。n表示巴特沃斯陷波滤波器的阶数,用于调整滤波器的陡峭程度,避免图像产生振铃现象。
滤波器使以(uk,vk)和(-uk,-vk)为滤波中心的圆形范围频段的响应值为0,欧式距离Di(i=1,2)表达式如下:
(3)
由于待滤除的经纱频段多呈高亮条带状,因此在滤除经纱频段的同时,要保留邻域频谱能量,以保证滤波后的图像细节能被还原。故在选择阻带时,要求阻带的形态较窄,然而传统的巴特沃斯陷波滤波器是基于圆形区域的阻带,会削弱非目标区域的频谱能量,导致滤波后的纬纱边缘发生一定程度的模糊和振铃。针对传统巴特沃斯陷波滤波器在此应用背景下的缺陷,本文将邻域阻带近似地设计成椭圆形,从而精准滤除目标频段[15]。
若椭圆邻域阻带的长轴为a,短轴为b,倾斜角度为θ,则椭圆邻域阻带内的点D(x,y)可表示为:
(4)
图2 织物预处理前后对比
2 纬纱纹理提取
2.1 频域自相关
纹理是描述织物结构的基本属性,从图像处理的角度出发,可以由灰度值、形状特征、空间位置关系等多个角度定量分析。经预处理后的织物图像中,经纱纹理像素已被弱化,纬纱纹理按照特定规律紧密排列在一起,与纬纱间的间隙呈现出明显的高低灰度交替变化,即纬纱的纹理特征[16]。若将纬纱纹理视为由若干相互关联的像素点构成的基元,则可通过构建灰度共生矩阵计算其相关性[17]。
设织物图像为I(M,N),图像上存在任意一点A(x,y),以及不与其重合的一点B(x+dx,y+dy)。若此时A点处的灰度值为li(x,y),B点处的灰度值为lj(x,y),则在点A移动的过程中,会产生不同的(li,lj),倘若图像中共存在256个灰度等级,则会产生256×256个(li,lj)的组合。对于整幅织物图像,统计出每种组合出现的次数,并计算其频率,将结果排列构成矩阵,即为灰度共生矩阵P256×256。灰度共生矩阵的相关性可以间接反映出原织物灰度图像中行列像素点间灰度值的相似程度,其计算表达式为:
(5)
式中,P(i,j)代表灰度共生矩阵中第i行j列的元素。
(6)
(7)
(8)
(9)
灰度共生矩阵及相关性计算结果如图3所示。计算结果表明,纹理彼此间存在较大的相关性,可以将图像与自身作自相关计算,得到其自相关图像,获取纬纱纹理像素点在图像空间中的位置分布,达到间接提取纬纱纹理的目的,其计算表达式为:
(10)
式中,f(x,y)∘f(x,y)表示空域自相关,f*(m,n)表示f(m,n)的共轭,M与N分别代表图像的宽度与高度尺寸。
由于直接在空间域计算织物图像的自相关图像计算量较大、耗费时间长,为了减小计算量,考虑在频域中进行自相关计算。空域自相关在频域中可等价为:
f(x,y)∘f(x,y)⟺F*(u,v)F(u,v)
(11)
由此,可在预处理的频域滤波结束后,对频谱图像作自相关计算,计算结果如图4(a)所示。再由频域返回到空间域,获得图4(b)所示的空域自相关图像,从微观角度,原本的纬纱纹理被细化成分布规律的局部灰度峰值像素点;而从宏观角度,纬纱纹理已表现为一条条等距分布的平行线。在此基础上执行边缘检测和Blob分析,便能提取出清晰的纬纱纹理区域。
图3 灰度共生矩阵相关性计算结果
图4 自相关图像
2.2 边缘检测
纬纱边缘是由纬纱间灰度发生快速变化的邻域产生的,其变化剧烈程度可以用梯度来度量,从而判断纬纱的纹路走势[18]。织物图像作为离散数字图像,其梯度是由图像分别在x、y方向上的偏导数计算得到的,若图像中某一像素点(x,y)的像素值为f(x,y),则其在(x,y)处的梯度f(x,y)可用式(12)表示,并可根据梯度分量计算该点处的幅值大小。
(12)
(13)
CMOS 相机实况采集得到的织物图像易参杂噪声,而边缘检测的Sobel算子是由Gaussian平滑和微分结合而成的离散型差分算子,对噪声有抑制作用[19]。Sobel算子采用水平和竖直的离散近似模板求取两个方向的梯度分量,一般来说掩码模板的大小为3×3,但实际情况下小模版对织物纹理边缘的检测结果较为模糊,为了得到轮廓更加清晰的边缘图像,采用7×7的大模板掩码。由帕斯卡三角形分别确定平滑系数和差分系数的向量,得到水平方向的掩码Sobel1,将其转置即为竖直方向的掩码Sobel2。
对于层级为i位置为j的帕斯卡系数,可由来P(i,j)表示:
(14)
而模板大小为n的各个平滑系数S(k)和差分系数D(k)可分别记为:
S(k)=P(n-1,k)
(15)
D(k)=P(n-2,k)-P(n-2,k-1)
(16)
式中,k(0≤k≤n-1)表示系数所在位置。
则水平方向的掩码模板Sobel1可表示为:
(17)
于是可计算得到7×7大小模板的x方向掩码Sobel1为:
其中,中心系数权重较大是为了起到平滑边缘的作用,而总和为0是为了使灰度一致的区域不产生梯度。
利用7×7模板Sobelk(k=1,2)分别与以(x,y)为中心的7×7窗口w[f(x,y)]做卷积运算,得到水平与竖直方向上的梯度分量fx(x,y),fy(x,y),根据式(18)计算得到(x,y)处的输出值,图5为最终输出的边缘方向图,边缘方向与纬纱倾斜方向一致。
(18)
式中,α表示衰减因子,用于防止计算结果溢出最大值255,取α=2。
图5 织物边缘方向图
2.3 纬纱纹理分割
在经过频域滤波、自相关计算和边缘检测后,织物的边缘方向图主要由纬纱和背景两部分的像素点构成,统计[0,255]区间上各个灰度级的像素点个数,绘制灰度直方图,如图6所示。通常情况下,经过平滑后的灰度直方图整体呈现出3个波峰和两个波谷,而常用的最大类间方差法难以处理存在多个灰度直方图波峰的图像。
图6 边缘图像灰度分布统计
经过试验分析发现,第一个波峰灰度值较低,主要是较暗的背景像素点;第三个波峰灰度值较高,主要是残存的经纱像素点;而两个波谷间的过渡部分就是构成纬纱纹理的像素点。基于对灰度直方图的分析,只需求取两个波谷灰度值分别作为低阈值T1与高阈值T2,就能实现对边缘方向图的二值化处理,分割出纬纱纹理部分。其中,T1作为弱边界,主要用于过滤背景像素的同时平滑纬纱边缘轮廓,使原本强边界T2分割出的断断续续的纬纱边缘连接起来。
经平滑后的边缘方向图的灰度分布,可以近似看作由离散点拟合而成的曲线f(x),其一阶导数f′(x)=0处的灰度x即为波峰或是波谷。这里用差分代替微分,对于f(x)有各个等距节点xk=x0+k,k=(1,2,…,255),则f(x)上相邻灰度级上的一阶差分可以表示为:
Δf(xk)=f(xk+1)-f(xk)
(19)
当Δf(xk)>0且Δf(xk-1)<0时,则认为此时的xk为波谷阈值。依据此法遍历直方图寻找T1与T2,从而分割出二值化纹理区域。在后续实时检测中,由于光照不匀等外界因素的影响,得到的直方图的灰度分布有时会出现多个局部的峰值,给处理造成一定程度的干扰。但通过此方法对不同织物图像的多次试验分析,得到的纬纱像素点灰度范围均集中在[50,140]区间内,动态检测中可以此经验二值化范围直接进行阈值分割,完成纬纱纹理区域的提取。
3 霍夫变换检测纬斜
霍夫变换将待检测区域转换到参数空间,利用图像空间与参数空间两者间由点到线的映射关系,实现对于直线区域的角度检测[20]。因其较好的鲁棒性且不易受噪声影响,在区域特征检测中被普遍采用。霍夫变换的原理是创建并初始化一个二维数组累加器L(ρ,θ),遍历图像区域上的像素点(x,y),根据θ的取值范围(θmin,θmax)转化到参数空间,其转化关系式为:
ρ=xcosθ+ysinθ
(20)
式中,ρ表示极径,θ表示极角。
将得到的ρ在对应的位置累加,当遍历结束后,若累加器中的最大值大于事先设定的直线检测阈值,则判定该点为参数空间中多数曲线的交点,而这些曲线在图像空间中恰恰是构成所求直线的像素点,参数空间中交点对应的坐标(ρ,θ)即为所求直线方程的参数[21]。
图7(a)为原纬纱区域经霍夫变换得到的参数空间图像。参数空间图像中一系列的高亮点,其实质是变换前特定像素较为集中的纬纱区域,纬纱越长越近似直线,参数空间图像上对应点的灰度值就越高[22]。
基于上述参数空间图像的特性,采用了如下的阈值适应方法检测直线。参数空间中各个像素点(x,y)处的灰度值可以用二次多项式G(x,y)近似表示:
G(x,y)=α1x2+α2y2+α3xy+α4x+α5y+α6
(21)
建立式(22)所示的黑塞矩阵H[G(x,y)],并按照式(23)计算其行列式值det(H),可判断出图像中的灰度极值点。
(22)
(23)
图7 霍夫变换直线检测
图8 阈值逼近流程图
由霍夫变换检测得到的角度为垂直于纬纱的法线与水平轴的夹角,记为α,即可由此计算出实际纬纱倾斜角度θ=90-α。当θ大于0,即为右上倾斜;当θ小于0,即为右下倾斜。
4 检测系统组成
图9为织物纬斜检测系统的原理图,主要由硬件采集系统与软件检测系统组成。考虑到单目相机视场尺寸有限,无法兼顾到整幅织物,故采用六路相机联合工作,红外透射光源为其补光,由各路相机采集到的局部织物图像拟合而成织物整体变化趋势。为模拟整纬机实际工作中的纬斜检测过程,将变频器接至PLC控制器,交流电机则通过皮带直接与导布辊相连,由变频器驱动电机将动力经过皮带轮传递给导布辊,带动织物行进,上位机则与PLC控制器通过RS232串口实时通讯。
图9 纬斜检测系统原理图
4.1 硬件系统搭建
搭建了如图10所示的硬件系统结构。其中,上位机端因需要控制多路相机同步采集,短时间内处理多组图像数据,对配置要求较高,故选用Windows10 64位系统,Intel®CoreTMi9-10900 处理器CPU,DDR4 16 GB内存,Intel®UHD Graphics 630显示适配器,1 000 Mbps千兆网卡。
图10 纬斜检测系统结构示意图
采集设备选用海康威视MV-CA003-20 GM GigE工业相机,Computar M2528相机适配镜头。该工业相机采用CMOS感光芯片,相比于CCD芯片更适用于高速采集的场合。为其选配的镜头能够防止图像发生畸变,成像清晰度高。GigE工业相机通过海康威视MV-ACC-01-1101网线接至上位机的千兆网卡实现与上位机的通讯,可以快速将分辨率为672 512的实时图像帧数据传输到上位机用户端[23]。测试现场如图11所示。
图11 测试现场
4.2 软件系统搭建
软件平台基于.NET Framework开发环境,为降低开发难度,调用MvCamCtrl.NET与HalconDotNet类库函数。MvCamCtrl.NET源于海康威视GigE相机的SDK软件开发包,可用于对相机功能的二次开发。而HalconDotNet源于视觉处理软件Halcon 17.12,包含了上千种封装好的图像处理函数,可用于实现所提出的纬斜检测算法。
在采集检测任务开始前,上位机软件平台枚举以太网内满足GigE Vision传输协议的相机设备,为其注册采集图像的回调函数,创建句柄,配置曝光、帧率、增益等参数。利用多线程和委托为各个相机对象创建独立的线程并行工作,提高CPU的利用率从而优化了系统的性能,使用户可根据在线相机数目以及使用需求自由选择1至8路相机同时工作,不会出现线程阻塞的现象。相机有连续采集与单帧采集两种采集模式可供用户选择,其中单帧采集为硬触发采集,由外部设备给相机发送触发信号来实现。当任务启动时,将各路相机采集到的图像信息存放到各自独立的缓存地址,交由纬斜检测算法执行一系列的检测处理。在窗口控件中实时显示检测结果,用箭头标出纬斜方向,便于用户观察,下方文本框内则显示具体纬斜角度。对多路相机的检测结果进行融合运算,得到整幅织物的纬斜量和纬弯量,结合DevExpress.XtraCharts.Control控件与定时器动态绘制成曲线图,实时有效地图表化显示织物的整体变化趋势。上位机端将检测数据发送给PLC控制器,PLC控制器便能控制斜辊和弯辊执行后续的纬纱矫正。系统运行效果如图12所示。
图12 系统运行效果
4.3 相机参数配置
相机作为整个系统中最为重要的一环,其参数的配置直接决定了图像质量,进而影响到后续检测结果的准确性。相机需要配置的参数分别为曝光、帧率以及增益。
在动态采集时,得到的图像会沿运动方向产生拖影,如图13所示。拖影的产生会模糊纬纱纹理,干扰纬纱的检测。为减小负面影响,提出精度要求,竖直方向拖影长度不得超过5 piexl。若竖直方向实际视场尺寸为20 mm,则可计算得到竖直方向上的精度要求为20/512×5≈0.195 mm。当织物行进速度为1333 mm/s(约80 m/min)时,可推出曝光时间必须要小于0.195×106/1 333≈146 μs。通常情况下,曝光时间越短,帧率越高,取帧率为最大值337。增益一般用于强化较弱的信号,同时也会增加图像中的噪声信号,故将其值设为0。
图13 拖影现象
5 实验与结果分析
选取现有的多种低密、高密织物作为实验对象。一般情况下,织物的纬纱倾斜角在-30°~30°范围内。在实验过程中,导布辊带动织物以50 m/min的速度行进,GigE相机采用硬触发的采集方式,配合透射光源每间隔500 ms进行一次采集,由上位机根据算法自动检测。为各个相机创建对应的文件夹,将采集到的图像自动保存到文件夹中,SQL Server数据库中则按相机编号分类,记录每一帧织物图像的纬斜角度θi和耗时ti,以便后续的人工测量纬斜分析误差。
表1汇总了六类织物纬斜的算法检测结果与人工检测结果的平均绝对误差,以及平均检测耗时。在织物快速行进的过程中,整幅织物两端受力不均出现褶皱,光源亮度不匀造成织物表面局部较暗,以及织物受导布辊牵引发生形变都会给检测造成不同程度的影响。除以上客观因素外,人工检测精确度较低,也会产生一定程度的误差。相比之下,人工检测耗时费力,所耗时间远远超过了算法检测。
表2汇总了根据参考文献[13]提出的频域次亮点分析法检测得出的数据,正如文献[13]中所述,织物纹理数目会对检测结果造成一定程度的影响,纹理数目越多,检测结果的准确性越高。
表1 本文方法六类织物的检测结果
表2 频域次亮点分析法六类织物的检测结果
而从六种织物的总体情况可以看出,本文算法对高、低密度的织物适应性较好。至于两种方法的检测时间,考虑到纬纱整体变化趋势较为连续,不会发生突变,相机每500 ms硬触发执行一次采集,300 ms内完成检测处理已经能够满足实际的工作需求。
同时,为测试所提出的纬斜检测算法在真实工况下的抗干扰能力,待测织物局部存在污渍、破损等缺陷,如图14所示。图14(a)由算法检测出的纬斜量为-5.25°,人工测量结果为-5.08°,绝对误差为0.17°;图14(b)由算法检测出的纬斜量为-3.13°,人工测量结果为-2.87°,绝对误差为0.26°。该结果表明所提出的纬斜检测算法不易受织物自身缺陷的影响,鲁棒性较好。
图14 存在缺陷的织物
6 结束语
针对实时动态检测纬斜这一问题,提出了基于机器视觉的纬斜检测算法,并搭建硬件、软件平台展开测试,模拟摄像整纬中的检测过程,测试结果表明,纬斜检测系统适用于多种高密、低密织物,平均绝对误差在0.35°以内,平均耗时不超过225.5 ms,在实际工作中较为稳定。研究有如下创新点:
1)对初始图像采用改进后的巴特沃斯陷波滤波器进行预处理,综合了对织物图像空间域与频域两个不同角度的分析,清晰地提取出纬纱纹理区域,避免了霍夫变换因区域干扰信息较多而造成较大的检测误差。
2)设计了独立的摄像整纬系统上位机控制界面,控制六路GigE工业相机实现稳定高效的采集检测,界面设计便于观察织物整体变化趋势,并可根据整纬机的门幅宽度拓展至八路相机。
但本文研究的算法主要针对带有明显纹理方向的织物,而对于少部分编织工艺复杂,不具备纬纱纹理走向的织物检测存在一定困难,这也是摄像整纬技术下一阶段研究的主要方向。