基于数学形态学的织物缺陷检测
1.介绍
相较于现在使用的神经网络来检测织物缺陷,数学形态学方法是传统的检测方法,其检测的核心思想就是用具有一定形态学结构的元素去度量和提取图像中对应的形状,以达到对图像分析和识别的目的。所以数学形态学对于具有较强的几何形状的织物缺陷有较强的检测能力,但是现实情况是织物疵点的种类繁多,疵点的大小不一,形态各异,并且不是所有织物的缺陷都是具有几何形状的特点,所以要找到一种能检测出所有疵点的通用模式识别方法是很困难的,因此数学形态学一般用来检测破洞,断经,缺纬这三类的织物缺陷。
2.数学形态学的基本运算
形态学运算是针对二值图像来说的,是以集合论为基本理论,把图像中的所有像素点合在一起看作为一个集合,让数学上的集合运算如(交,并,补等)运用到图像中。其具体做法是:
使用nXm的结构元素(结构元素是由0和1组成的nXm二维矩阵)和图像进行集合间的运算,并且随着结构元素在图像上进行滑动时不断地进行集合运算,直到整幅图处理完毕。
而结构元素和图像之间的运算可以分为四个基本的运算:’‘膨胀’’,’‘腐蚀’’,’‘开运算’’,’‘闭运算’’。
3.算法处理步骤
在使用数学形态学处理图像之前需要先对图像进行预处理,通过预处理方式消除织物图像的其他干扰因素,突出图像的主要疵点,处理过程为:图像灰度处理 – > 图像中值滤波处理 – > 图像的直方图均衡化处理
接下来需要准备两张图像,一张为标准的无瑕疵图像,另一张为带瑕疵的图像,使用数学形态学处理织物图像的过程可分为两个阶段:训练阶段和检测阶段。
在训练阶段主要是处理标准的无瑕疵图像,主要目的是:
- 从无瑕疵图像中得到在经纬方向上的重复结构单元,根据找出的重复单元来确定检测阶段的检测窗口。
- 获取分割二值图的阈值。
在检测阶段主要是处理带瑕疵的图像,主要做法:
- 使用由训练阶段得到的分割阈值处理带疵点的图像,并获得带疵点的二值图
- 使用由训练阶段得到的检测窗口,该窗口大小可作为形态学处理图像的窗口尺寸。
训练阶段:
(1):获取分割阈值
在训练阶段的第一个任务就是得到分割图像的阈值,具体方法是先求出图像的所有像素平均值和标准偏差,然后利用下面公式计算灰度值的阈值:
其中z为系数常数,取值范围:-5.0~5.0,一般取值为1.7或1.8,具体取值需要实际根据情况而定。
(2):获取检测窗口
使用自相关函数计算标准织物二值图像的经,纬方向上重复单元的标准尺寸,在这里使用自相关函数的原因是:该函数的最大特点是能够在图像的所有像素灰度值的基础上,经过数学运算,从而给出一个重复结构的特征值。计算公式如下:
在每根纤维方向上,重复单元平均占有多少个像素,Cx和Cy就会在该值的整数倍上出现极大值。如果在该纤维方向上所有重复的单元占据的像素数目完全相同的话,这些极大值就会保持一个常量,反之,随着重复单元复制的程度低,这些极大值会急剧减小,因此,Cx和Cy的第一个极大值点处的数值就是重复单元的尺寸。
所以我们可以通过纬纱的自相关函数Cx和经纱的自相关函数Cy的极大值方法求得经纬方向上重复单元的尺寸。
如果直接计算,其计算量过大,这是不可取的,因此在这里采用的是另一种方式:将二值化的标准图像经过快速傅里叶变换(ff1 = ff2(img))得到频率函数,接着将频率函数平方得到能量普函数(gg1 = abs(ff1).^2)),将得到的结果反变换得到自相关函数(hh1 = ifft2(gg1)),最后从得到的自相关函数确定第一个极大值点即可。
检测阶段
到检测阶段为止,我们已经得到分割阈值,和检测窗口,接下来就是使用得到的阈值分割待检测的图像(该图像已经进行预处理),得到二值待检测图像,然后根据得到的检测窗口,使用开运算处理待检测图像。
算法流程图:
4.实验结果:
引用参考文献:
[1]王锋,焦国太,杜烨.基于数学形态学的织物疵点检测方法[J].测试技术学报,2007(06):515-518.
[2]王文杰,强赞霞.数学形态学在织物疵点检测中的应用[J].中原工学院学报,2010,21(02):28-30+38.