基于计算机视觉的原木材积检测方法研究

2022-04-06 12:03华蓓曹圃黄汝维
关键词:端面原木孔洞

华蓓,曹圃,黄汝维

(广西大学计算机与电子信息学院,广西 南宁 530004)

我国是世界上最大的木材贸易国,年商品木材贸易量达到1.6亿m3.原木交易中一项重要的操作是对原木材积的检量.但是传统的人工检量方法,效率低下且带来不必要的人工成本.将计算机视觉技术运用于原木材积检测当中,对提高原木材积检测效率、降低检测成本以及推动传统行业向现代化转型具有重要意义.

基于计算机视觉的材积检测技术通过计算机对原木端面图像进行处理、分析、识别与计算,获取所需要的原木检尺径或材积数据.文献[1]提出采用聚类分析和模糊识别的方法,将原木端面图像的边缘信息以及灰度特征逐层分类,对端面类圆形进行模式匹配;文献[2]提出了最小二乘法椭圆拟合的方案,解决了原木端面的处理及径级的识别问题;文献[3]运用分水岭分割算法结合加权阈值,设计原木图像类圆分割算法;文献[4]利用双目立体视觉技术研究成堆原木野外尺径测量方法;文献[5]利用图像拼接技术获取原木图像,基于改进Canny边缘检测算法和随机Hough变换算法实现了一个原木材积测量系统;文献[6]设计并开发了结合深度学习与Hough变换的等长原木材积检测系统.

本文综合使用并优化了包括灰度变换、二值化、孔洞填充以及边缘检测在内的多种图像处理算法,基于图像处理结果,对原木双侧端面图像进行Hough变换圆检测,并最终将获取的原木检尺径数据用于原木材积计算.

1 算法设计

在原木交易中,使用木材的材积来确定木材的价值.计算木材的材积需要2个参数:检尺径和检尺长,其中检尺径指按标准规定,经过进舍后的原木直径;检尺长指按标准规定,经过进舍后的原木长度.

基于数字图像处理技术与计算机视觉技术,本文原木材积检测算法可分为图像处理、圆检测以及材积计算3个步骤,算法思路简述如下:

输入:去除背景后的原木两端端面图像,原木检尺长,1号原木实际检尺径.

输出:原木材积.

Begin:

Step1:图像处理.包含灰度变换、二值化处理、孔洞填充以及边缘检测4个步骤,通过对原木端面图像的一系列处理,获取原木端面清晰、连续的边缘.

Step2:圆检测.包含端面圆检测和检测结果排序两个步骤.端面圆检测基于Hough变换检测方案,对图像中的端面圆进行检测与定位;然后对检测结果进行排序,使原木两端的检测结果对应.Step3:材积计算.计算原木小端检尺径;根据检尺长与检尺径,计算原木材积.

End.

2 图像处理

由于拍摄时受到相机、光线以及拍照技术等因素影响,采集的原木端面图像可能存在对比度不足、有阴影、不够均匀等一系列问题.因此,需要对输入图像进行一系列处理,保证算法的检测精度.

2.1 灰度变换

数字图像的灰度转换是图像识别预处理的基础.因此需要将原木端面的彩色图像变换为灰色图像,即将图像像素值的彩色区间映射到灰度区间,并对图像的灰度区间进行一系列的变换、扩展和压缩等操作,得到一个灰度范围更加适中、图像更加清晰的灰度图像[7].

彩色图像每一个像素对应一组RGB值,灰色图像每一个像素则对应一个灰度值Y.人眼对RGB三原色拥有不同的权值,在实际应用中,被普遍接受的比值为R∶G∶B=0.299∶0.587∶0.114,可以使用公式(1)完成彩色到灰度图像的转换[8]

在获得原木端面的灰色图像后,为了获取灰度范围更加适中的灰色图像,需要对图像进行灰度变换处理,突出扩展感兴趣的灰度值范围,压缩不感兴趣的灰度值范围.在本文中,采用分段线性变换的方式对图像进行灰度变换.

设一幅灰色图像f(x,y),感兴趣的灰度范围为[a,b];变换后的图像用g(x,y)表示,灰度范围扩展到[c,d].公式(2)为分段线性变换函数

公式(2)中,将灰度区间[0,a]压缩为[0,c],将区间[a,b]扩展为[c,d],将区间[b,Mf]压缩为[d,Mg].在对原木端面图像进行多次灰度变换折点位置的调整后,发现两折点位置分别在(70,40)和(200,230)时,灰度变换效果较好.

2.2 图像二值化处理

图像二值化是指通过指定的阈值,将图像中所有像素点的灰度值都变换为0或255.在原木端面图像中,端面部分的灰度值分布在中间区间,低灰度值部分大多是原木间的空洞部分,高灰度值部分则是由阳光照射形成的.取阈值T1、T2,将图片中介于T1和T2之间的像素值变为255,其余像素值变为0.

为选择合适的阈值,本文进行了像素值分布分析.首先统计经过线性变换后的原木端面图像的像素值数据.将像素值1~255部分绘制成折线图,可以看出,低像素值部分存在一个明显的波峰,该波峰对应原木端面图像中背景部分,如图1所示.选取该波峰与中间像素形成的波峰之间的波谷位置作为选取的二值化阈值.

图1 原木端面图像的像素值分布折线图Fig.1 Broken linediagramof pixel value distribution of log end face image

对10~60范围内的每一个像素值进行区间数量统计,即对像素值x进行[x-5,x+5]范围的像素值数量统计,取统计值最小的像素值作为阈值T1.高像素值范围虽然有一个轻微的波峰存在,但考虑到高像素值点数量在整张图像中占比极小,对整个算法影响不大,加之在线性变换时,不感兴趣的高像素区间灰度被压缩到了230以上,因此可以取230作为阈值T2.

2.3 孔洞填充

常见的孔洞填充算法有泛洪填充算法和基于面积阈值的填充算法.泛洪填充算法的基本原理是取一个像素点作为种子点,将与种子点联通的区域全部填充为指定颜色.基于面积阈值的填充算法对图像中的颜色区域进行面积计算,对面积小于阈值的区域进行填充操作,适用于消除一些细小的孔洞噪声.

2.3.1 黑色孔洞填充 由于原木端面可能存在较大的黑色孔洞区域,难以确定一个固定的面积阈值进行孔洞填充,因此选择以泛洪填充算法为基础进行黑色孔洞填充.具体步骤如下:

(1)获取目标黑洞.在图像的黑色背景中选取种子点,由种子点扩展填充白色,则目标黑色孔洞之外的像素点全部变为白色,剩下的黑色区域即为目标孔洞.

(2)将目标孔洞填充为白色.将图像中白色像素点变为黑色,黑色像素点变为白色.

(3)原木端面恢复.将原二值化图像与步骤(2)结果进行或运算,获得最终的目标图像.

2.3.2 白色孔洞填充 原木端面图像中不存在过大的白色孔洞噪声,只有一些微小的白色孔洞需要进行填充,因此适用基于面积阈值的填充算法进行填充.算法首先检测并获取端面图像中白色物体轮廓,然后根据白色区域的面积大小决定是否进行填充.综合图片考虑,取面积阈值为300,即面积小于300的白色区域填充为黑色.

2.4 原木端面图像的边缘检测

经过前述操作获得较清晰的原木端面二值化图像后,接下来需对图像进行边缘检测,获取原木端面轮廓信息.图像轮廓中包含着许多重要的图像特征信息,提取结果的好坏直接影响图像处理结果.

本文选用Canny算子[9]进行目标图像的边缘检测.Canny算子作为目前被广泛使用的边缘检测算子,能够较好地抵抗噪声干扰并进行边缘标记.

3 原木端面类圆形检测

3.1 基于霍夫变换圆检测的原木端面类圆形检测

霍夫变换通常用于检测识别几何图形.标准霍夫变换圆形检测运算量巨大,难以应用于实际图形检测中.为了解决霍夫变换圆检测的效率问题,本文采用优化后的2-1霍夫变换检测法[10].2-1霍夫变换将三维霍夫空间检测降为二维空间检测,算法性能在时间和空间上都得到明显的提升.

OpenCV视觉库中提供了基于2-1霍夫变换圆检测的HoughCircles函数,本文使用该函数进行原木端面类圆形的检测,识别所得的圆心与半径数据以数组的形式返回,识别效果如图2所示.

图2 原木端面类圆形的识别效果Fig.2 Exampleof recognition effect of circular logend facecircle

3.2 原木双端图像检测数据的整理

本文采用原木双端端面图像结合计算原木材积,计算前需要对原木的两端分别进行检尺径计算,取小头端数据参与最后的材积计算.由于在圆检测过程中没有考虑识别结果顺序,获取到的原木端面圆检测结果是无序的.因此需要对原木双端结果进行排序整理,建立原木两端圆形一一对应关系.

首先对原木两端识别结果中的类圆形分别进行排序,排序规则为:按横坐标从小到大排序,横坐标相同则按纵坐标从小到大排序.因为原木正反面图像中所对应的原木实际位置是左右相反的,所以两份原木端面识别数据中原木的编号也应该相反.由于原木前后端会产生一定的位移偏差,所以直接对原木编号进行逆序,会有部分原木无法建立正确的对应关系.这种误差是由横坐标的细小差距造成,而横坐标差距小的所有原木可以视为处于一列,其纵坐标往往相差较大.根据这一特性可对原木端面圆检测数据进行第二次重排序,算法描述如下:

算法中阈值γ可根据原木最小直径选择.二次排序后,result与circle1数组中具有相同下标的元素分别代表同一根原木的两端截面.

4 原木材积计算

计算原木检尺径,本文算法需要用户输入原木端面图像中1号原木的实际检尺径,作为原木识别直径到实际检尺径转换的参照标尺.假设1号原木的图像识别半径为r1,用户输入的实际检尺径为d,则对于识别结果集中的每一个圆,可根据公式(3)计算其实际检尺径D.对原木两端端面同时计算检尺径,保留较小一端计算结果作为该原木最终的检尺径数据

使用检尺径与用户输入的原木检尺长数据,按照国标文件《原木材积表》(GB/T 4814—2013)中列出的原木材积计算公式,即可算出原木材积.

5 实验验证

5.1 实验设计

本文算法所需测试数据为原木正反端面图像,可由普通的数码相机、手机等拍摄获取,要求拍摄角度位于原木堆端面正中间,角度端正,尽量避免阴影等问题.图像质量高,检测精度也会相应提高.实验使用移动手机拍摄得到原木堆正反端面图像,去除背景后的图片即可用于算法的测试.

实验将算法打包封装,以Web接口的形式接收和返回相应数据,并编写了简单的网页界面用于输入数据及显示检测结果,如图3所示.

图3 原木材积检测结果Fig.3 Log volume measuringresults

5.2 实验结果

将原木检尺径的检测结果与实际人工测量结果进行对比分析,实验结果如表1所示.

表1 原木检尺径检测数据与人工测量数据对比表Tab.1 Comparison table of logmeasuring data and manual measuring datacm

由表1中的数据可以看出,测试图像共有20根原木的检测结果,其中4根原木的检尺径检测数据与人工检尺结果存在差异.本算法最终的材积计算结果为0.401 m3,人工检尺测量获得的材积计算结果为0.413 m3,材积检测精确度为97%.

6 小结

本文利用计算机视觉技术,设计并实现了基于端面类圆形目标识别的原木材积检测算法.算法首先对图片进行灰度变换、自适应阈值二值化、孔洞填充以及边缘检测等操作,然后采用2-1霍夫变换圆检测算法识别原木端面;对原木两端数据进行排序匹配后,以原木小端数据作为检尺径计算得到原木材积.实验显示,算法具有较高的原木材积检测精度.

猜你喜欢
端面原木孔洞
液力缓速器转子端面制动力矩传递方案优化分析
提线木偶
国际热带木材市场
原木精神
国际热带木材市场
悬崖上有字
一种采暖散热器的散热管安装改进结构
走路时,我们会踩死细菌吗
一种面板复合辅助工具
巧数原木