复杂背景下的纤维识别研究
2014-03-20汪依帆汪存燕
汪依帆,汪存燕
(1.上海市学生事务中心 信息技术部,上海 200235; 2.上海应用技术学院 计算机学院,上海 201418)
0 引 言
对于很多纺织品来说,常需要检测其中纤维的长度、纹理、截面面积、卷曲程度等信息来判断纺织品的质量.长期以来,对于纤维的识别主要采用手感目测法、燃烧法、显微镜观察法、化学溶解法、药品着色法等.此类方法都是人工参与的,所以人为因素较大,准确率不高.传统的方法已不能满足现代纤维检测和识别的要求.随着计算机图像学理论和技术的不断发展,数字图像分析系统已逐渐渗透入纺织行业,用计算机代替传统的手工劳动是必然趋势.本文作者提出了一种在复杂背景下的纤维提取、识别、匹配的方法.
1 样本图像的采集
本实验的样本图片为在显微镜下拍摄的纤维图片,纤维线条错综复杂,粗细不一.在图像采集过程中,由于多种因素的影响使得图像与原始场景之间产生某些差异,如光照不一,拍摄时的抖动等都会造成图像模糊,细节部分不明显,并引入较多的噪声.在进行识别前,先进行图像的归一化,并使用中通滤波法进行了图像平滑.
2 常用的纤维识别的方法
2.1 基于阈值的二值化算法
图像二值化处理就是将灰度图像或彩色图像转化为二值图像(黑、白)的过程.对于纤维图像进行二值化就是将图像分为前景和背景,此方法多利用图像的直方图进行二值化.可以利用双峰法、最大熵阈值分割法、最大类间方差法(OTSU算法)[1].此类方法的最大缺点就是很难找出一个最佳的阈值点,对于多张照片采用同一种方法,效果好坏不一,同时计算量也比较大.
2.2 基于灰度形态学的方法
数字形态学是一种非线性滤波方法,采用形态和差运算,即膨胀和腐蚀.灰度图像的腐蚀和膨胀过程可直接从图像和结构元素的灰度级函数计算而得.与二值形态学相同,灰值形态学也由腐蚀和膨胀得到灰值形态学的二级运行——开闭运算.利用TOP-HAT变换,图像的灰度级较低,图像较暗,通过加大图像的亮度,再采用阈值变换,将纤维的图像提取出后,细化后最终得到识别图像[2].
2.3 基于方向链码的算法
链码是二值图像常用的表示方法.用整数描述边缘相邻像素间的转动角度得到物体边界的方向链码.根据链码值和像素间距离进行序列点插值、平滑、拟合后得到链码的曲线描述.该算法对像素间的位置关系用确定的码值来表示,避免了通常的二维矩阵结构,以较少的数据量存储图形中的位置以及形状信息.从而减少了计算量、降低了信息冗余、节约了存储空间.
3 作者采用的纤维识别方法
3.1 纤维图像的边缘检测
边缘检测是标示出数字图像中亮度等属性变化明显的点,以勾勒出图像的边缘.采用求方差的方法进行边缘检测[3].具体方法是:
(1) 利用一个3×3的滑动窗口在图像上滑动,求出中心点和周围8个点的方差,作为矩阵中对应位置的值,构造一个新的矩阵.
(2) 首先从左到右横向扫描,找出扫描过程中的相对峰值点(即大于它左右两个点的方差值),如果此点与它左边的谷值点的距离大于设定的阈值,则将此点置为边界点,置为1(白色),如果小于阈值,记录下对应位置的与左边谷值点的距离,放入backup矩阵中,以备以后第二次扫描.用同样的方法进行纵向扫描.
(3) 用相同的方法在斜线方向进行扫描,如果某点与它斜线方向的谷值点的距离大于第二步记录下的backup值,则修改此点的backup值.
(4) 对backup矩阵进行扫描,如果它周围的8个点中有白点的话,将此点置为白色,同时修改其backup值为0.
(5) 去除孤立的黑点.
3.2 边缘曲线的细化
细化是纤维图像预处理中的重要环节,主要是去除不必要的边缘信息,便于提取细节特征,提高纤维图像的处理速度.一种好的细化算法应该满足下列条件:收敛性、连通性、拓扑性、保持性、细化性、中轴性和快速性.利用8邻域的查表细化算法对图像进行细化.
在细化前图像已经进行了二值化,即将纤维边界与图像中的其他部分分离,白色代表纤维边缘,黑色代表其余部分,将纤维图像从灰度图像转换为二值图像(0代表黑色,1代表白色)根据以下规则细化:内部点不能删除,即如果一个白点的上、下、左、右都是白点的话,此点不能删.孤立点不能删除.直线断点不能删除.如果一个点是边界点,去掉此点后,如果连通分量不增加,则此点可以删除.
根据上述判据,事先做出一张表,从0到255共有256个元素,每个元素要么是0,要么是1.根据某点(要处理的是白色点)的8个邻域点计算出的索引值查表,若查得表中的元素是1,则表示该点可删,否则保留.
(1) 按顺序计算用于查表的索引值:S=P1×20+P2×21+P3×22+P4×23+P6×25+P7×26+P8×27+P9×28.
其中P1~P8分别取值为0或1,则有256种索引与数值0到255一一对应.
(2) 根据上述判据制作一张查找表,实际上是一个1×256的一维矩阵[4],元素值为0表示该组合的中心点应该保留,1表示应该删除,数组定义如下:
looktable[256]=(0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1).
(3) 从上到下,从左到右,对二值图像进行扫描,对每一个白点做如下处理:先判断该白点的上下邻居,如果都是白点,则该点不做处理,另外,如果某个白点被删除了,那么跳过它的下邻居,处理下一个点,否则根据8邻域编码计算索引值,此索引值就是数组元素的下标,找到对应下标所对应的元素,查看是否删除,如果该白点被删除了,那么跳过它的右邻域,处理下一个点.
(4) 从左到右,从上到下,对二值图像进行第二次扫描,对每一个白点做类似处理:先判断该白点的左右邻居,如果都是白点,则该点不做处理,另外,如果某个白点被删除了,那么跳过它的右邻居,处理下一个点;否则计算8邻域编码索引值,看是否删除,如果该白点被删除了,那么跳过它的下邻居,处理下一个点.
(5) 如果本次循环有白点被删除,则跳到(3),否则终止循环,细化结束.
纤维原图,二值化并进行边缘检测的纤维图,和细化后的图像如图1所示.
图1 原图、二值化并进行边缘检测的图和细化后图的对比
3.3 边缘曲线的修复
3.3.1 去毛刺,删除交叉点
在处理之前,先要删除孤立的白点.首先寻找出一条纤维的端点,判断的条件是在一个3×3的小矩阵中,如果有且只有2个点是白点,且其中有一个白点是在矩阵的中心位置,则这个中心位置的白点就是一条纤维的起点.从纤维的起点出发,依次搜索纤维的每一个点所在的位置,计算出纤维的长度,如果小于某一阈值(作者提出的阈值是25),则判定此条纤维是毛刺,删除这条纤维[5].
删除交叉点的方法是:依次扫描图像的每个像素,如果是白点,检测它周围8个点,如果大于等于3个白点,则将此点的上、下、左、右4个点全部置为黑色.部分细节的效果如图2所示.
图2 纤维图像删除交叉点
3.3.2 删除拐点
删除拐点是为以后的纤维识别做准备的.由于先前细化后,不会在一个3×3的矩阵出现4个白点的情况.所以在查找一条连通纤维的过程中,可以先找到纤维的一个端点,记录下该点的位置,并将其置为黑色;找出与其连通的点,作为纤维的新端点,记录下位置,置为黑色,依次类推,直到纤维的另外一个端点.通过余弦定律来计算曲率.具体的做法是在纤维上选择4点,其中2点是两个端点,设为A和B,由于先前的去毛刺已经去掉了一些很短的纤维,所以另外两点取的是从端点出发的第8个点,设为C和D,计算直线AC和直线BD的角度,如果小于某个阈值(设为150°),则将C、D两点置为黑色,C、D再各向中间移动一个点,继续计算角度.部分细节的效果如图3所示.
图3 纤维图像删除拐点
3.3.3 补断并标记纤维
先前的删除交叉点和删除拐点都是为后面纤维识别做准备的,原先连接起来的纤维已经不再连通了.补断就是要把属于同一条纤维边缘的线段连起来.综合考虑了各线段之间的距离和角度,选择可能性最大的线段进行配对,并用线性插值的方法进行补点[6].补断后需重新整理纤维条数,并用不同的颜色标记不同的纤维,效果见图4.
图4 纤维识别的结果
4 总结与展望
本文作者提出了一种在复杂背景下的纤维识别的方法,其考虑了多种因素的影响,力争把不利因素通过各种方法加以解决.下一步的工作是要提高纤维识别的正确性,并按课题的要求计算出每条纤维的平均宽度.同时,对于拍摄效果不佳的图像,如何加以预处理,使得图像更容易被处理,也是接下去需要研究的方向.
参考文献:
[1] 陈滨,田启川.改进的快速Otsu自适应分割算法及其应用[J].计算机应用研究,2012,29(4):1572-1574.
[2] 马健,曾文华,陈维国.灰值形态学在动物纤维图像处理中的应用[J].纺织学报,2004,25(5):42-45.
[3] 周德龙,潘泉,张洪才.图像模糊边缘检测的改进算法[J].中国图像图形学报,2001,6(4):353-358.
[4] 王荣武.基于图像处理技术的苎麻和棉纤维纵向全自动识别系统[D].上海:东华大学,2007.
[5] 王崇文,王伟,王廷才等.指纹图像后处理[J].计算机工程与设计,2002,23(9):35-38.
[6] 朱长武,戴上平.基于指纹图像断裂纹线的修复方法[J].电子测量技术,2007,30(4):97-99.