LabVIEW深度相机与三维定位实战(三)

简介: 立体匹配与ACV算法理论知识

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主

🍻本文由virobotics(仪酷智能)原创首发

🥳欢迎大家关注✌点赞👍收藏⭐留言📝

前言

Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。

今天给大家分享在LabVIEW中实现深度相机与三维定位:立体匹配与ACV算法。关于双目相机基础支持可查看上一篇博文『LabVIEW深度相机与三维定位实战(上)』


一、立体匹配与ACV算法

1.1 立体匹配

  • 基本思路

    如上一篇博文所述,如果已知左右相机画面中的两个像素来源于空间中的同一个点,那么就可以通过视差来计算出该点到基线的距离(深度)。

    如果有一种算法:针对左目画面中的每一个像素,能够分别找到它们在右目画面中对应空间中同一点的像素(假如存在的话),那么就可以计算出单目画面中每一个点的深度,从而形成立体视觉。

  • 立体匹配的任务

    立体匹配的目标,就是从不同视点图像中找到匹配的对应点。该模型的输入为若干不同视角的相机采集的图像,输出是这些图像上的点的对应关系。

    立体匹配是目前机器视觉领域的一个难点,近年来不断有人发明或改良出新的方法,以求提高效率和准确性。本文接下来将介绍其中一种方法——ACV。

    1.2 ACV算法

  • 简介
    该算法来源于今年(2022)发表于CVPR上的一篇论文:
    Attention Concatenation Volume for Accurate and Efficient Stereo Matching
    原文下载地址: https://arxiv.org/abs/2203.02146

    ACV,即 Attention Concatenation Volume,意为:注意力连接(代价)体。它是文章提出的一种新的立体匹配“代价体”的构建方法。

    “该方法利用相关线索生成注意力权重,以抑制冗余信息,增强连接体积中的匹配相关信息。为了产生可靠的注意力权重,本文提出了多级自适应补丁匹配,以提高不同视差下匹配成本的显著性,即使是无纹理区域。”

  • ACVNet网络结构

    如下图所示,首先通过CNN分别提取左右画面的特征图,然后上下“兵分两路”:
    1、下边将左右特征图,按照一定规律拼接,生成初始连接代价体(Concat volume);
    2、上边将(不同层的)左右特征图,进行多级自适应补丁匹配(MAPM),最终生成注意力权重 (Attention Weights);
    3、用注意力权重 对Concat volume进行过滤,以增强相关抑制冗余,得到注意力连接代价体(Attention concat volume);
    4、最后ACV通过一个代价聚合网络(Cost Aggregation),输出最终结果(Left画面每一点的视差预测)。
    image.png

  • 初始连接代价体的构建
    给定一个尺寸为H×W×3的输入立体图像对,对于每个图像,我们通过CNN特征提取,分别得到左、右图像的一元特征图fl和fr。

    特征图的大小为Nc×H/4×W/4(Nc=32)。然后通过连接每个视差水平的fl和fr形成初始连接体,即为
    image.png

Cconcat 的尺寸为2Nc ×D/4×H/4×W/4 ,其中D为最大视差。

🔍 帮助理解:

1、左右特征图都是Nc通道。并且经过多次卷积之后,尺寸已经缩小为原来的1/4。那么原图最大视差D,就对应特征图的最大视差为D/4;

2、通俗地讲解拼接过程:

把Nc通道的右特征图的所有像素,沿X轴向右平移1个像素,然后拼接在Nc通道的左特征图的后面,得到第1组2Nc通道的拼接特征图。
平移2个像素拼接得到第2组、平移3个像素拼接得到第3组……直到平移D/4,一共D/4组2Nc通道的拼接特征图。因此Cconcat 的尺寸为2Nc ×D/4×H/4×W/4


3、这种连接体的构建,实际是在列举所有视差匹配的可能性。理想双目只在X方向有视差,即同源点必然位于左右特征图的同一条水平线上,且XL一定大于XR。因此我们对右侧特征图沿X向右平移1到D/4个单位,再分别与左侧特征图叠加,就能让所有同源点得到一次“左右重合”的机会。重合时对应的平移距离,反映了该点的视差大小,进而反映该点的深度。

  • 多级自适应补丁匹配(MAPM)
    从特征提取模块得到3个不同层次的特征图l1、l2、l3,其通道数分别为64、128、128。对于每一个处于特定水平的像素,我们利用一个具有预定尺寸和自适应学习权重的atrous patch来计算匹配成本。通过控制膨胀率,我们确保patch的范围与特征图层有关,同时在计算中心像素的相似度时保持相同的像素数量。然后,两个相应的像素的相似性是patch内相应像素之间的相关性的加权和。
    image.png

🔍 帮助理解:

1、虽然算法复杂,但是目的简单,就是在估计左右特征图上的两个点是空间同一点的可能性(权重);

2、估算可能性的方法,是选取该点及其周围点,参与加权计算。这个选取范围叫做patch,是个会膨胀的自适应范围。但无论怎么膨胀,参与计算的点数是恒定的9个,就是图中红色和橙色的点。白色的点是膨胀产生的空洞,不参与计算。

将l1、l2和l3的三级特征图连接起来,形成Nf个通道的单级特征图(Nf=320)。将Nf通道平均分成Ng组(Ng=40),前8组来自l1,中间16组来自l2,最后16组来自l3。不同级别的特征图不会相互干扰。我们把第g个特征组表示为 image.png

,多级补丁匹配量Cpatch的计算方法为:
image.png

  • 注意力权重过滤
    在得到注意权重A后,我们用它来消除初始连接代价体中的冗余信息,进而提高其表示能力。
    通道 i 处的注意力连接代价体(ACV)计算为:
    image.png

⊙表示对应像素点乘,注意力权重 A 应用于初始连接代价体的所有通道的过滤。

  • 代价聚合与视差预测
    用一个预沙漏模块来处理ACV,它由4个3D卷积组成(包括批归一化、ReLU)、2个3D堆叠沙漏网络,堆叠在一个 encoder-decoder结构。

    由代价聚合获得3个输出,对于每个输出,使用2个3D卷积得到单通道4D volume,然后上采样并通过softmax转化为置信体。3个预测的视差图表示为d0、d1、d2。最终,预测值就是每一层视差与置信度乘积求和。(k表示视差层级,pk表示对应的置信度)
    image.png


总结

以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续还会继续给各位朋友分享其他案例,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~

如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。进群请备注:LabVIEW机器视觉

如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏

目录
相关文章
|
5月前
|
数据采集 监控 算法
LabVIEW与3D相机开发高精度表面检测系统
LabVIEW与3D相机开发高精度表面检测系统
67 2
|
4月前
|
计算机视觉
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
这篇文章讨论了在yolov5项目中,如何避免使用网络摄像机而改用自带的本地摄像机进行实时目标检测,并提供了解决摄像头打开错误的具体步骤和代码示例。
在yolov5项目中如何使用自带摄像机不用网络摄像机进行实时检测?
|
监控 数据可视化 算法
三维可视化神器带来无限可能,原来三维场景也可以如此轻松实现
三维可视化神器带来无限可能,原来三维场景也可以如此轻松实现
135 1
三维可视化神器带来无限可能,原来三维场景也可以如此轻松实现
|
5月前
|
传感器 编解码 监控
LabVIEW图像采集处理项目中相机选择与应用
LabVIEW图像采集处理项目中相机选择与应用
46 0
|
7月前
|
机器学习/深度学习 存储 数据采集
智能光栅光片显微成像技术的LabVIEW解决方案
智能光栅光片显微成像技术的LabVIEW解决方案
47 4
|
7月前
|
算法 计算机视觉
基于表面法线法的二维人脸图构建三维人脸模型matlab仿真
该内容概述了一个使用MATLAB2022a的二维人脸图像三维重建算法。首先,通过人脸检测和对齐,然后运用深度信息估计技术(如Shape from Shading)获取表面法线。接着,结合预训练的三维人脸模型库和二维关键点,通过迭代优化和全局优化构建三维模型。核心程序涉及图像处理、光源方向转换、反射率和表面法线计算,最终重构高度图并显示结果。该方法依赖多视角图像,单幅图像重建可能存在挑战。
|
7月前
|
算法 机器人 vr&ar
基于双目RGB图像和图像深度信息的三维室内场景建模matlab仿真
基于双目RGB图像和图像深度信息的三维室内场景建模matlab仿真
|
算法
基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真
基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真
335 0
基于双目相机拍摄图像的深度信息提取和目标测距matlab仿真
|
机器学习/深度学习 传感器 编解码
LabVIEW实现深度相机与三维定位实战(一)
LabVIEW实现深度相机与三维定位实战(一)
314 0
LabVIEW实现深度相机与三维定位实战(一)
|
机器学习/深度学习 人工智能 算法
LabVIEW深度相机与三维定位实战(四)
立体匹配与ACV算法在LabVIEW中的调用
123 0
LabVIEW深度相机与三维定位实战(四)