牛晗伍希志任桂芹李贤军
(1.中南林业科技大学 材料科技与工程学院,长沙 410082;2.广达意隆包装机械股份有限公司,广州510530;3.青岛市即墨区综合检验检测中心,山东 青岛266200)
我国是世界竹林资源最丰富的国家,全国竹林面积为641.16万hm2,2020年竹产业产值已经达到3 000亿元,竹产品包括竹板、竹家具等。竹产品天然的纹理和色彩给人舒适自然的感觉,且竹产品天然无污染,资源可再生,非常适合室内装饰。竹片是制成竹产品的原材料,由竹片拼接成各式各样的竹产品。随着人们对竹产品接受程度日益提升,提高竹产品的生产效率已成为企业的要求。生产竹产品的许多工序逐渐实现自动化生产,效率很高,如剖竹、修剪和打磨等,但最关键的缺陷检测仍由人工完成,生产效率低,人工成本高。人工进行竹片缺陷检测如图1所示。由图1可以看出,竹片缺陷检测完全由工人手工完成。检测环境包括灯光与太阳光,检测人员在不同的地方光照条件会存在差异,会影响工人对缺陷的判断。因此研究竹片自动化缺陷检测很有必要。
图1 人工竹片缺陷检测Fig.1 Manual detection of bamboo chip defects
近年来,为了实现自动化缺陷检测,学者们在木材缺陷图像检测方面进行了大量研究,提出了许多木材缺陷识别方法,如区域生长法[1]、超声波频谱分析法[2]、改进分水岭算法[3]、水平共生矩阵[4]和深度学习[5-8]等。朴顺姬等[9]采用多尺度分形特征值区分木材缺陷边缘与背景,进行了节子与裂纹2种木材缺陷的识别。李漫丽等[10]采用Laplacian金字塔变换对红外图像和可见光图像进行融合检测木板节子缺陷。张斌洪等[11]采用相对全变分算法对可疑木板缺陷面积阈值区域进行检测,成功检测油墨、掉皮、木结和裂痕等4类缺陷。Cavalin等[12]采用图像灰度化的方法识别木材缺陷。廖春晖等[13]采用应力波测试技术对木材缺陷进行检测。解朦等[14]采用改进形态学方法进行彩色图像的单板缺陷检测。赵鹏等[15]采用3D激光扫描技术检测了木材孔洞等凹陷类缺陷。罗微等[16]结合梯度直方图特征与局部二值2种方法,融合缺陷特征,准确识别了木材缺陷。针对竹材缺陷检测,陈张言[17]采用BP神经网络对竹片外形缺陷与竹节纹理2种缺陷进行识别。黄炳强[18]采用形态学法、CANNY算法、垂直投影水和区域生长算法分别对蛀孔、裂缝、竹青与竹黄4种缺陷进行了检测。
综合上述研究工作可以发现,国内外学者对木板缺陷检测研究较多,对竹材缺陷研究不够。与木板缺陷检测相比,竹片缺陷检测具有缺陷种类多(主要有拉丝片、破裂片、蛀孔片、霉片、竹青片、黑节片、三角条7种缺陷)、缺陷难区分、竹材自然纹理干扰、尺寸又细又长等难点,需要对竹片缺陷图像检测进行深入研究。本文提出一种基于OTSU与CANNY算法的竹片缺陷图像检测方法,首先进行竹片区域提取和倾斜校正,然后对竹片区域进行拉丝片、破裂片、蛀孔片、霉片、竹青片、黑节片和三角条7种缺陷的检测,实现了准确自动识别竹片缺陷的目的,为后续竹片的自动化检测奠定了基础。
竹片缺陷检测实验平台如图2所示,整体实验设备包括图像采集模块、光源系统模块和暗箱。图像采集装置采用海康威视500万像素CMOS 面阵工业相机采集图像,工业相机镜头距竹片220 mm,光源系统采用对射式条形光源,在线性上保证均匀的光照,暗箱保证图像采集的光照条件一致,不受外界环境干扰。
竹片图像是在2021年6月中旬于湖南省益阳市湖南桃花江竹材科技有限公司拍摄,该公司生产所用竹片长度为200~220 mm,宽度为20~25 mm。采集竹片的正面图像,用以检测竹片正面缺陷。每张图像采集竹片长度为60 mm,在公司实地采集各类竹片缺陷图像共350幅,所采集的图像为BMP格式,图像大小为2 448×2 048像素。
图2 竹片缺陷检测实验平台及采集现场Fig.2 Bamboo chip defect detection experimental platform and collection site
采集的竹片缺陷图像如图3所示,由于竹片为长条形且由于应力作用会存在一定自然挠度,因此竹片通道设置宽度会留有一定余量,导致竹片不是垂直于图像。为了保证一定的竹片拍摄长度,竹片区域在图中占比就较低,约为四分之一,背景等无效信息占据四分之三。
竹片缺陷检测总体流程如图4所示。首先对竹片图像进行预处理,即将图像灰度化与降噪;然后采用OTSU算法进行二值化处理,使竹片与背景分离,突出竹片边缘;再利用CANNY算法进行边缘检测,利用Hough 变换拟合竹片边缘并计算出竹片倾斜角度,根据倾斜角进行旋转处理,校正竹片倾斜位置;对竹片区域进行剪切,提取竹片区域;结合OTSU算法与CANNY算法检测竹片缺陷。
图3 竹片缺陷图像Fig.3 Bamboo chip defect image
图4 竹片缺陷检测总体流程图Fig.4 Overall flow chart of defect detection of bamboo chips
竹片缺陷包括7类,分别是拉丝片、破裂片、蛀孔片、霉片、竹青片、黑节片和三角条。经过对各类竹片缺陷仔细研究发现,蛀孔片、霉片、竹青片和黑节片4类缺陷的颜色与合格竹片颜色存在差异,而拉丝片、破裂片和三角条3类缺陷的形状与合格片不同,属于形状差异。本文将灰度法与边缘法结合,能检测全部7种竹片缺陷。经过对比各类灰度算法与边缘检测算法,最后确定OTSU算法与CANNY算法,将2种算法结合,即可检测7类竹片缺陷。缺陷检测算法流程如图5所示。在检测出缺陷后采用最小外接矩形法将缺陷框出。
图5 缺陷检测算法流程图Fig.5 Flowchart of defect detection algorithm
OTSU算法的基本思想是计算图像的灰度平均值M,希望得到一个阈值T,可以把图像分割成背景A和竹片B。记图像中背景A的灰度平均值是MA,图像中竹片B的灰度平均值是MB。像素点出现在背景A的概率为PA,出现在竹片B的概率为PB。阈值T计算公式如下:
CANNY算法的基本思想是先对图像进行高斯滤波,再计算图像中的梯度幅值和方向, 再对像素点梯度值做非极大值抑制,最后利用双阈值连接检测边缘。CANNY算法表达式如公式(2)所示,式中,f(x,y)为输入图像;φ和θ分别为图像梯度方向和梯度幅值。
BMP格式图像为三通道彩色图像,信息过多且包含噪声,因此需要将其转化为灰度图像并且进行降噪处理。灰度图像为单通道,对应的灰度值也是0~255,大大减少了信息量,能有效提高运算速度。通过对各类灰度化算法与滤波算法进行实验分析,加权平均值法进行灰度化效果较好,中值滤波算法降噪效果较好。预处理结果如图6所示。
图6 竹片图像预处理结果Fig.6 Bamboo slice image preprocessing results
预处理后的竹片图像中具有256个灰度级,仍保留较多信息,其中竹片的纤维清晰可见,这时对其进行边缘检测会存在较多无用信息,结果如图7所示。不仅竹片区域内存在较多边缘,甚至背景区域内也存在边缘,这时分辨竹片边缘较为困难。
图7 边缘检测结果Fig.7 Edge detection results
因此需要对灰度图像进行二值化处理,二值化后图像就分为黑白两部分,可以清晰地分辨出竹片和背景区域。二值化后图像灰度值为0与1,极大地压缩图像数据,进一步加快运算速度。下面采用OTUS算法对竹片灰度图像进行阈值分割。OTUS算法会针对每张竹片图像计算出合适的阈值,比固定阈值算法更具有实用性。OTSU二值化分割结果如图8所示,图像中竹片与背景很好地区分出来了。
图8 OTSU算法处理结果Fig.8 OTSU algorithm processing results
二值化处理后不存在其他灰度级,灰度值0为黑色,灰度值1为白色。因此这时对图像进行边缘检测就不存在无效信息。通过对各类边缘检测算法进行实验分析,基于CANNY算子的边缘检测算法效果较好,结果如图9所示。
基于CANNY算子的边缘检测算法检测出的竹片边缘较为连续,且边缘较为明显,仅存在部分不连续边缘,同时存在部分由于二值处理造成的伪边缘,因此需对竹片边缘进行拟合。下面采用Hough变换拟合竹片边缘。
图9 边缘检测算法处理结果Fig.9 Edge detection algorithm processing results
Hough变换的基本思想是将直角坐标系中的一条直线对应极坐标系中的一点。直线的数学方程如公式(3)所示,这条直线用极坐标表示为点(ρ,θ),直线方程在极坐标系中表达式如公式(4)所示。x、y参数空间中的各个点组成一条直线,而x、y参数空间(将x、y空间修改为数空间)中这条直线上的无数个点在ρ、θ参数空间中表现为无数条曲线,这些曲线都将经过点(ρ,θ)。边缘检测算法检测出的很多像素点必然在拟合出的边缘上,以这些像素点为圆心建立的直线方程中存在一条直线为同一直线,即拟合出的边缘。这些直线方程的ρ和θ都为同一值,因此在参数空间中离散化的该(ρ,θ)点必将出现很多次,出现次数最多即最亮的2点即为竹片的两条边界,将拟合出的直线用红色高亮显示。经过Hough变换后拟合的竹片边界如图10所示。大部分边缘检测出的边缘点在拟合出的边缘上,少部分伪边缘都被排除在外。
图10 Hough变换拟合的竹片边缘Fig.10 Bamboo slice edge fitted by Hough transform
Hough变换拟合出的点(ρ,θ)代表竹片边缘,同时也得到了竹片的倾斜角θ。这时需要对图像进行倾斜校正,使竹片垂直于图像中,也方便后续剪裁出完整的竹片区域。图像的倾斜校正属于图像的位置变换,一般以图像中心为原点,将图像上所有像素旋转一个相同角度,得到一个新的图像。倾斜校正公式如公式(5)所示。但竹片倾斜方向分为左倾斜与右倾斜,当倾斜角度θ小于90°,则将图像顺时针方向旋转θ。当倾斜角度θ大于90°,则将图像顺时针方向旋转450°减θ。经过倾斜校正所得图像如图11所示。
图11 倾斜校正后竹片图像Fig.11 Bamboo slice image after tilt correction
倾斜校正后对图像进行剪切即可得到完整竹片图像,裁剪结果如图12所示。具体裁剪算法如下。
(1)从图像左上角开始,遍历竹片图像上的像素点,到图像右下角结束。把灰度值不为255且灰度值不为0的像素点保存在矩阵中。
(2)找到所保存矩阵中4个顶点。分别对上、下2个顶点进行比较。以图像上面2个顶点高度较大的为基准,去掉矩阵中高度比其小的像素点。以图像下面2个顶点高度较小的为基准点,去掉矩阵中高度比其大的像素点。
图12 裁剪所得竹片区域Fig.12 Bamboo slice area obtained by cutting
(3)矩阵中没有像素点的地方填充像素点,灰度值为255,保存图像。
由图12可知,竹片区域完整地提取出来,去除了背景等无效信息,运算速度大大增加。且图像垂直,便于统一图像标准进行保存。
为验证本文竹片缺陷检测算法的准确性,从采集的竹片样本中任意选取7类竹片缺陷图像各50幅,用本文算法进行检测,各类竹片缺陷检测识别率见表1。
表1 竹片缺陷检测识别率统计分析Tab.1 Statistical analysis of the recognition rate of bamboo chip defect detection
从表1可以看出,采用本文方法检测竹片缺陷的平均准确率为95.14%,其中5种缺陷检测的准确率大于95%,只有拉丝片和破裂片缺陷检测的准确率小于90%,总体的缺陷检测准确率比较高。
图13为部分检测结果,每类缺陷图像均有一幅。拉丝片是竹片加工过程中造成的竹片边缘竹纤维脱离,如图13(g)中拉丝片片右上角。破裂片中裂缝一般会贯穿整张图像,图13(a)中破裂片的位置为整条竹片裂缝前中段,裂缝两边竹片紧密接触在一起,裂缝后段裂缝两边竹片开口较大。蛀孔片中蛀孔一般较小,边缘较为清晰,少部分蛀孔周围存在腐烂模糊的情况。霉片一般是保存不当造成竹片发霉,面积大小不一,颜色也不一致,有颜色较深的接近黑色也有较浅的接近绿色。竹青片是竹片厚度不够,切削深度达到仍然不能去除掉所有竹青,继续加工将导致竹片较薄,图13(d)中竹青片还存在裂缝。黑节片的主要特征是竹节部分颜色比竹片其他位置更深,接近黑色,故称黑节。三角条是由于加工原因造成竹片边缘部分缺失,横截面为不规则矩形,故称三角条。
图13 7类竹片缺陷检测结果Fig.13 Seven types of bamboo chip defect detection results
从图13和表1可以看出,颜色类缺陷与形状类缺陷均能检测,但各类缺陷检测准确率并不一样。在蛀孔片、霉片、竹青片和黑节片4类颜色缺陷中,蛀孔片、霉片、竹青片的检测准确率非常高,均为100%,而黑节片的检测准确率略低,为98%。因为前3类缺陷的颜色与正常竹片颜色相差较大,且都是连在一起形成连通域,容易检测出来。黑节片检测失败案例如图14(a)所示,黑节为点状缺陷,且黑节较少,竹片颜色较黑,因此难以与正常竹片进行分辨。在拉丝片、破裂片和三角条3类形状缺陷中,三角条检测准确率最高,为100%,拉丝片和破裂片的检测准确率较低,分别为82%和86%。这是因为三角条的缺陷面积一般较大,容易检测出来。拉丝片和破裂片检测失败案例如图14(b)和图14(c)所示,这2类竹片缺陷面积较小,有的仅有2~3个像素,因此检测难度较大。图14(b)中拉丝片拉丝位于竹片右下角,且颜色较浅,难以分辨。图14(c)中破裂片裂缝切口是倾斜状态,裂缝颜色接近黄色,颜色较浅与竹片颜色较为接近,因此未能检测。
图14 竹片缺陷识别失败案例Fig.14 Cases of failure identification of bamboo chips
本文针对竹片缺陷自动检测难题,提出一种基于OTSU与CANNY算法的竹片缺陷图像检测方法。研究结果表明,采用OTSU算法进行二值化处理,可以有效去除图像纹理、突出竹片边缘;采用CANNY算法检测出的竹片边缘较为连续,再采用Hough变换可以拟合竹片边缘并进行竹片倾斜校正;采用OTSU算法与CANNY算法分别检测颜色类缺陷和形状类缺陷,总体缺陷检测的平均准确率为95.14%,能有效识别出竹片缺陷,为后续竹片缺陷自动化检测提供了良好基础。