生长轮扫描图Canny边界检测结果修复算法

2021-03-04 08:41林启招孙永科
实验技术与管理 2021年1期
关键词:二值坐标值像素点

林启招,孙永科,何 鑫,秦 磊,邱 坚

(西南林业大学 材料科学与工程学院,云南 昆明 650224)

树木年代学是由美国亚利桑那大学树木年轮研究试验室的创始人、天文学家Douglass在20世纪上半叶发展起来的[1]。与之相关的研究涉及气候环境等领域[2]。在研究中,学者们需要测算树木的生长轮,于是提出了基于图像处理技术的GIS工具、R软件、图像处理技术等方法和手段得到生长轮图像[3-6]。

数字图像处理技术被用于众多实验教学中[7],其可以辅助人们快速测算生长轮,但仍有不足。为了有效识别横切面微观图,Wang等[8]提出了自动识别木材微观图生长轮的方法,但未给出修复横切面图像上断裂断开生长轮界进的详细步骤。王燕凤等[9]提出了年轮图像双边滤波增强方法,但未提及如何解决不理想的生长轮界问题。Vaz等[10]提出的生长轮自动识别与测量系统,未考虑到生长轮界不完整的情况。Subah等[11]提出了生长轮交互式视觉分析系统,在遇到生长轮断裂或不完整时,需通过用户给定起点和终点进行生长轮修复,工作量大的情况下,用户容易疲劳。Fabijańska等[12]在生长轮自动检测研究中提出了拟合线条,具有一定弧形的轮界很可能被拟合成理想化的线段。宁霄等[13]提出的基于U-Net卷积神经网络对年轮图像进行分割,可达到好的分割效果,但它的不足是需要进行大量的图像训练学习。

对具有明显生长轮界的木材端面扫描图进行Canny边缘检测,可得到生长轮界,但所得结果经常会出现边缘断裂,即生长轮界不连续的情况。Canny检测出现边缘断裂是由边缘附近的灰度值接近引起的[14],被学者们改进后加以运用[15]。木材端面扫描图较自然界宏观图像而言,修复断裂生长轮界的要求更高,现有的图像修复方法无法用来修复生长轮界图像,例如:舒彬等[16]所得的图像修复算法可以修复自然图像的小区域破损,刘昱等[17]提出的图像修复算法适用于补全大面积破损的图像。

鉴于此,基于在木材圆盘上对若干不同方向进行传统人工生长轮计数思路,本文提出一种对生长轮扫描图Canny边缘检测结果进行修复的算法,对作者“基于交互模式和图像处理的针叶材生长轮测算方法”[18]的前期工作进行深入研究。在前期工作中,发现轮界不连续的情况包括中间断裂和端头断开,如图1所示,图 1(a)和图 1(b)是针叶树翠柏断面检测前后对照图,图 1(c)和图 1(d)是阔叶树冬青断面检测前后对照图。从上往下看,图 1(b)的第一条轮界线是连续的、第二条端头断开、第三和第四条中间断裂;图 1(d)有多处断裂的生长轮界线。

图1 木材端面边缘检测前后对比图

1 材料与方法

1.1 材料

本研究试验对象包括杉木、翠柏、北美红杉、冬青从髓心向树皮方向的扫描图边缘检测结果,其中前3个样品为针叶树、第4个样品为阔叶树,它们的边缘检测图都存在生长轮界断裂的情况。

1.2 方法

1.2.1 准备工作

在对生长轮界进行修复前,需导入生长轮扫描图的Canny边缘检测结果。应对所获得的边缘检测图进行降噪处理,例如:给定阈值,把宽度小于阈值的白色轮界区域转为黑色,即可达到降噪的目的,作者已在前期工作[18]中进行研究并提出了解决方法。

1.2.2 算法流程

已经去噪的生长轮扫描图Canny边缘检测结果矩形图,是本文修复算法的输入。算法流程图如图 1所示。流程涉及的关键过程和技术在后续章节进行陈述。

图2 生长轮界修复流程图

1.2.3 算法描述

本文设计的算法涉及的主要过程包括:①输入图像;②轮界区域排序;③取一断裂轮界区域;④找下一个与之相邻且中心点X坐标值差小于阈值t1的断裂轮界区域;⑤连接修复;⑥延长修复。具体处理过程描述如下:

(1)输入图像。算法导入已经去噪的生长轮扫描图的边缘检测二值图像矩形图。该过程应给定查找相邻断裂轮界所用的阈值和延长修复的阈值。

(2)轮界区域排序。对轮界区域按中心坐标X坐标值排序。区域个数如果大于0,则执行第 3步,否则执行第7步。

(3)取一断裂轮界区域。取一个未形成完整轮界线的轮界区域,即轮界区域小于二值图像宽度。如果取到,则执行第4步,否则执行第7步。

(4)找下一个与之相邻的断裂轮界区域且中心点坐标X坐标值差小于阈值t1的断裂轮界区域。取一个满足中心点坐标X坐标值差小于阈值t1的相邻断裂轮界区域。如果取到,则执行第5步,否则执行第6步。

(5)连接修复。以原先的左边轮界区域最右侧点为起始点,以右边轮界区域的最左侧点为终点,然后用白色像素点从起始点开始一直连接到终点。执行完连接修复后,执行第3步。

(6)延长修复。以轮界区域中心点为起始点,以最右侧或最左侧点为终点,然后用白色像素点延长这两点间的连接线段到二值图像侧边。执行完连接修复后,执行第3步。

(7)结束。结束算法的执行,如果算法成功进行生长轮界修复,则可以输出修复后的生长轮界二值图像。

1.2.4 图像存储

一幅大小为M×N像素的数字图像f(x,y),具有M行,N列。把输入的二值图像存储到长度为M×N的一维数组中,黑色像素值为0,对应二值图像的0,白色像素值为255,对应二值图像的1。数字图像坐标如图3所示。二值图像存储示例如图4所示。

图3 数字图像坐标

图4 二值图像存储示例

1.2.5 轮界区域排序

基于连通区域判断[19],可以得到数字图像上所有的轮界区域。为f(sumx, sumy, area, allPoint, leftPoint, rightPoint, midPoint),所有点X坐标值之和 sumx、区域所有点Y坐标值之和sumy、像素点个数area、区域内所有像素点坐标allPoint、最左侧点坐标leftPoint、最右侧点坐标rightPoint、中心点坐标midPoint。图5为轮界区域数据结构体。图6由1像素点构成的连通区域是一个轮界区域示例,a、b、c分别对应需被保存坐标的最左侧像素点、最右侧像素点、中心点。如果在X坐标方向有并列的最左侧或最右侧坐标,任意保存一个像素点坐标。

为了正确修复轮界,需对边缘检测后的二值图像的轮界区域进行排序。从数字图像坐标来看,各轮界区域的中心点坐标的X坐标值按升序排序,X坐标值小的靠前。fj(x,y),j为轮界区域新序号。

图5 轮界区域结构体

图6 轮界区域示例

1.2.6 阈值计算

本文提出的算法共用到2个阈值,均通过计算机程序自动计算,而不是人为设置默认阈值[11],在轮界区域“找下一个与之相邻且中心点X坐标值差小于阈值t1的断裂轮界区域”的过程中用到2个阈值,设存在j个白色区域,有k个大白色区域宽度(最右侧点Y坐标值-最左侧Y坐标值)≥阈值t2,即t2=w/a,w为图像宽度,a为可调参数,实验中a取3,即实验中把宽度小于图像宽度 1/3的白色区域当作小区域,该参数越大,筛选出来的区域越多,j个白色区域中心点Y坐标集合∏=[x1,x2, …,xj],k个大白色区域中心点X坐标集合Γ=[x1,x2, …,xk],阈值t1根据式(1)计算而来,min为求最小值函数。

1.2.7 轮界修复

用本文作者提出的“基于交互模式和图像处理的针叶树生长轮测算方法”[18],在生长轮边缘检测图去噪的基础上,对不完整轮界线区域进行修复。具体的操作根据图2流程图进行修复。

连接修复以原先的左边轮界区域最右侧点为起始点,以右边轮界区域的最左侧点为终点,然后用轮界像素点从起始点开始一直连接到终点;延长修复以轮界区域中心点为起始点,以最右侧或最左侧点为终点,然后用轮界像素点向右或向左延长这两点间的连接线段到二值图像侧边。

两点连线上的点坐标计算:

其中,起始点像素点坐标为f(x1,y1),终点像素点坐标为f(x2,y2),x是大于x1且小于x2的整数。为了满足连接线的两侧不被判断为8邻域连接,除了设置f(x,y)像素点为白色外,还需设置f(x,y–1),f(x,y-2),f(x,y+1)像素点为白色,如果点的坐标不在坐标体系中,则不进行设置。在具体的二值图像中,X轴最小值xmin=0、最大值xmax=图像高度-1,Y轴最小值ymin=0、最大值ymax=图像宽度-1。

2 结果与分析

为了验证算法的有效性,本文作者用C#编程语言实现了所述算法的可视化试验。试验选取了端面边缘检测结果图都具有断裂生长轮界且生长轮数分别为21、104、235、14的杉木、翠柏、北美红杉、冬青,如表1所示。

表1 修复结果

图7是样品修复前后局部对照图,框线处为被修 复部位,图上的框线及A和B是后期添加上去,仅作本文说明用。A框线部位为2个轮界区域连接修复示例,B框线部位为轮界区域延长修复示例。图 7(a)是1号样品修复前后局部对照,框线处为延长修复。图7(b)是2号样品修复前后局部对照,A为连接修复,B为延长修复。图7(c)是3号样品修复前后局部对照,框线为连接修复。图7(d)是4号样品修复前后局部对照,该样品有10处需要修复,均被延长修复或连接修复。

通过修复前后对照图可知,本文提出的修复算法可较好地对断裂的轮界线进行连接修复和延长修复。从修复的树种来看,不仅可修复针叶树端面Canny边缘检测结果,还可修复阔叶树端面Canny边缘检测结果。从修复效果来看,修复后的生长轮界线走向与原有的轮界线走向有较好的一致性。从修复的原图来看,针对不同的针叶树,输入的端面扫描图Canny边缘检测轮界线粗细不同,如图 7(c)的轮界线较其他轮界线粗,这是图7(c)对应的树种晚材率高所导致的。

图7 修复前后对照图

3 结语

本文提出的生长轮界修复算法,基于在木材轮盘上对若干不同方向进行传统人工生长轮计数思路,它有别于获取整个木材端面生长轮界的方法,只处理矩形区域断裂的生长轮界线。通过C#编程语言实现了所述算法的可视化试验并已集成到自行开发的“针叶树宏观生长轮数测算系统”中。试验结果表明,该算法可以准确地修复断裂的生长轮界,为后期获得准确的生长轮数、计算生长轮宽度等工作做好准备。如何使生长轮界修复的区域准确沿着生长轮界伸展方向,值得继续深入研究。

猜你喜欢
二值坐标值像素点
基于局部相似性的特征匹配筛选算法
探讨数控铣床操作实训中零件装夹及对刀方法
探讨Excel2007与ArcGis10.0结合提取小班四至界限的坐标值
基于5×5邻域像素点相关性的划痕修复算法
面向网络边缘应用的新一代神经网络
基于二值图像数字水印算法研究
基于canvas的前端数据加密
基于稀疏表示的二值图像超分辨率重建算法
基于曲率局部二值模式的深度图像手势特征提取
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割