基于端到端深度神经网络的形状编码结构光高鲁棒特征检测方法

作者:药岩 | 来源:3DCV

1、导读

形状编码结构光是结构光领域最重要的技术之一。但由于其特征提取鲁棒性较差,其在实际场景中的应用受到很大限制。针对这一问题,本文提出了一种基于深度学习方法的高鲁棒性特征提取方法。首先,设计了形状编码结构光图案。由一系列水平和垂直线形成的网格点被指定为编码特征点。然后,利用著名的U-net网络来检测网格特征点的位置。最后,为了验证所提方法的有效性,进行了大量的实验。实验结果表明,我们的方法优于传统的特征检测方法,特别是在噪声干扰的情况下。对于编码密度较高的结构光图案,我们的方法在检测鲁棒性和检测精度方面都比传统方法表现得更好。

2、研究内容

三维重建已广泛应用于SLAM(同步定位与建图)、航空测绘、增强现实、智能制造等领域。目前,主流的三维重建技术包括立体视觉、飞行时间和结构光。其中,结构光技术因其在测量弱纹理区域方面的优势而闻名。根据编码策略的不同,结构光技术一般可分为时间编码结构光和空间编码结构光。时间编码结构光要求场景在图像捕获期间保持静态,因为它们需要预编码图案的多个投影。相比之下,空间编码方法仅需要单个投影,因此适合动态重建。颜色和几何形状是在空间编码方法中对图案进行编码的两种典型选择。与颜色编码方法相比,形状编码方法对表面颜色和复杂纹理更加鲁棒。

随着深度学习的发展,一系列的卷积神经网络(CNN)被设计来解决图像处理中的复杂问题。因此,我们试图解决基于CNN的形状编码结构光中的特征检测问题。在所有广泛使用的CNN中,U-net的优点是不需要大量的训练数据集,同时还使用加权损失,这使得网络能够学习更准确地识别特征。通过引入U-net,特征检测问题可以转化为语义分割问题。接下来我们介绍基于深度学习的特征检测方法。

3、方法

3.1、形状编码结构光中的图案设计

本文的结构光图案采用与我们之前的工作相同的结构光图案,如图1(a)所示。将八个点状几何形状嵌入到网格单元中,将由垂直线和水平线形成的网格点指定为特征点,如图1(b)中的放大细节所示。提出了一种自行设计的特征检测检测器来检测这些特征点,如图1(c)。

尽管特征检测检测器在检测大多数特征点方面表现出良好的性能,但它仍然存在一些局限性:

  • 它对成像噪声的鲁棒性较低。当采集的图像受到噪声干扰时,可能会出现大量的误点;
  • 它对扭曲或高纹理表面的鲁棒性较低。当目标物体具有复杂或高纹理表面时,如图1(b)所示的网格点肯定会过于扭曲而无法被简单的检测器提取;
  • 不同的编码密度会极大地影响提取效果。

随着编码密度的增加,相邻网格点之间的距离会随之减小,从而影响特征检测的准确性。当相邻距离太小时,它甚至可能无法提取正确的点。事实上,使用传统的图像处理方法无法有效避免所有这些限制。鉴于此,本文探索将深度学习方法引入到特征提取任务中。我们的目标是找到一个端到端的深度神经网络,能够直接输出特征点的位置。

3.2、U-net

在我们之前的工作中,引入深度学习方法将模式块识别问题转化为图像分类任务。与此不同的是,本文旨在解决特征检测问题。通过仔细观察,我们发现形状编码图案中网格点的位置可以转化为图像分割问题。目标是将交叉点从整个图案中分割出来。在众多的卷积网络中,U-net自2015年提出以来被广泛用于图像分割。

U-net网络是一个全卷积网络,其主要贡献在于其U形结构。这使得它可以在保持分割准确性的同时使用更少的训练图像。由于模式的特征非常简单,减少了网络结构的层数以防止过拟合,改进后的网络结构如图2所示

在我们研究中,交叉点是局部灰度值最大的点,也是要搜索的特征点,利用该网络可以实现特征点的预测。

3.3、深度神经网络特征提取

为了实现端到端的特征提取方法,我们希望当输入捕获的模式图像时,可以输出相同大小但具有所有提取的特征点的图像。为了实现这一目标,将传统特征检测方法与额外的手动操作相结合。首先,我们使用之前设计的特征检测器提取大部分网格点。如前所述,由于扭曲的表面和复杂的纹理,某些网格点无法正确提取。因此,在第二步中,我们使用Labelme软件手动提取剩余物。部分数据标注结果如图3所示。可以看出,在当前的三个场景中,图像处理方法无法处理沿图像边缘的特征点,更不用说高纹理或扭曲区域的特征,例如花瓶瓶身、人脸模型的鼻子部分等。通过辅助手动操作,可以更全面地标记特征点。

图3:目标对象及其数据标记结果。第二行:红点和绿点分别表示提取的特征点。

为了收集足够的训练数据,通过将形状编码图案投影到不同的物体(例如花瓶、球和面部模型)上来拍摄大量图像。通过在拍摄过程中不断改变物体的姿态,训练数据的数量扩大了四到五倍。本文总共拍摄了100张图像,按照8:1:1分为训练集、测试集和验证集。以收集的训练数据作为输入,U-net网络进行训练。当获得深度神经网络的最优参数后,可用于输出端到端的特征检测结果。

4、实验结果

建立了一个实验系统来演示U-net架构提取特征点的有效性。实验系统由BENQ wl700s投影仪和工业相机组成,如图4所示。相机分辨率为3000×4000,镜头焦距16mm。

为了验证所提方法的有效性,进行了两组实验。一是在不同编码密度的情况下比较传统图像处理方法和所提出的方法。这里投影图案块的大小调整为21×21, 31×31, 41×41 和 51×分别为51个。块尺寸越小,编码密度就越大。使用三个目标对象:花瓶、球和面部模型。以人脸模型为例,不同编码密度的捕获图像如图5所示。

另一个实验是测试传统图像处理方法和所提出的方法在干扰噪声的情况下的性能比较。将偏差为0、0.2、0.4、0.6、0.8和1.0的高斯噪声水平添加到捕获的图像中。仍以人脸模型为例,扰动结果如图6所示。可以看出,随着噪声水平的增加,图像细节逐渐变得模糊。

现在我们提取不同编码密度和不同噪声水平下的物体的特征点。请注意,在训练过程中,使用pytorch框架总共进行了100轮,并分为两部分。第一段训练了50轮,学习率设置为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 3 e − 4 3e^{-4} </math>3e−4以加快学习速度;第二段从51轮开始将学习率调整为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 5 e − 6 5e^{-6} </math>5e−6以降低学习速度,如图7。使用不同方法的性能比较。训练使用NVIDIA 3080显卡完成。训练完成后,使用训练好的模型来预测验证集。

编码密度为21的三个噪声清除对象的结果×21个全部放入图7中。为了更清楚的比较,将定量数据放在表1和图8中。需要注意的是,图8中比较了未检测到的特征点的数量,这样比较更有意义。

从图7中可以清楚地看到,所提出的方法能够提取更多的特征点,特别是沿着物体边缘,而传统的图像处理方法在大多数情况下都失败。

如上所述,表1和图8分别显示了不同编码密度和不同噪声水平下检测到和未检测到的特征点的数量。可以得出一些结论。首先,所提出的方法在所有不同的编码密度下都比传统方法表现更好。以花瓶为例。当噪声水平为0、编码密度为21×21,31×31,41×41,51×51,该方法成功检测到的特征点数量比传统方法分别提高了26.32%、31.86%、26.90%和21.82%。对于相同情况下的球体数据,该方法成功检测到的特征点数量比传统方法分别提高了17.10%、11.14%、4.26%和23.96%。其次,所提出的方法比传统方法更能抵抗干扰噪声。

以花瓶的结果为例。当噪声水平为0、编码密度为21时×21,编码密度为21×21, 31×31,41×41, 51×51,该方法成功检测到的特征点数量比传统方法分别提高了26.32%、31.86%、26.90%和21.82%。相比之下,当噪声水平为1.0时,该方法成功检测到的特征点数量比传统方法分别提高了28.86%、51.18%、75.18%和47.92%。在所有情况下,所提出的方法都表现更好。特别是当噪声水平较高时,所提方法表现出明显的优越性。

5、结论

我们探索了一种检测形状编码结构光中特征点的稳健方法。为了实现这一目标,使用了端到端深度神经网络U-net。实验结果表明,该方法比传统的基于图像处理的方法表现更好,特别是在噪声干扰的情况下。除此之外,该方法适用于不同编码密度的结构光图案。随着深度学习方法的引入,形状编码结构光在SLAM、增强现实、智能制造等实际应用中显示出巨大的应用潜力。下一步,我们将进一步研究基于深度学习的结构光鲁棒解码和重构方法。目前,我们的方法没有考虑特征角点的亚像素定位精度,因此将添加亚像素定位算法。

相关推荐
didiplus9 分钟前
【趣学Python算法100例】百钱百鸡
python·算法·百钱百鸡
Monodye17 分钟前
【Java】网络编程:TCP_IP协议详解(IP协议数据报文及如何解决IPv4不够的状况)
java·网络·数据结构·算法·系统架构
pzx_00122 分钟前
【内积】内积计算公式及物理意义
数据结构·python·opencv·算法·线性回归
元气代码鼠24 分钟前
C语言程序设计(进阶)
c语言·开发语言·算法
十雾九晴丶1 小时前
攻防世界--->gametime
算法
Aurora_th2 小时前
树与图的深度优先遍历(dfs的图论中的应用)
c++·算法·深度优先·图论·dfs·树的直径
马剑威(威哥爱编程)3 小时前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
算法萌新——14 小时前
洛谷P2240——贪心算法
算法·贪心算法
湖北二师的咸鱼4 小时前
专题:二叉树递归遍历
算法·深度优先
重生之我要进大厂4 小时前
LeetCode 876
java·开发语言·数据结构·算法·leetcode