极端外点率下鲁棒配准的多项式时间解

2023-05-16

在这里插入图片描述
论文地址
论文视频

文章导读

为什么要解读这篇文章?因为之前接连介绍该作者的两个工作,TEASER | 快速且可证明的点云配准算法和代码解读 和 基于四元数的存在外点Wahba问题的可证明最优解,前者的未知有界噪声,几何不变测量,内点选择最大团和SDP松弛思想均来自该工作,而后者和该工作共同组成了TEASER。所以为了彻底理解TEASER,就不得介绍本文。本文使用截断最小二乘将点云配准问题转化为优化问题,然后设计出可处理高外点率的多项式时间算法进行相对变换(尺度,旋转和平移)的计算。

摘要

提出了一种在存在大量外点的情况下两组3D点的鲁棒配准方法。第一个贡献是使用截断最小二乘(TLS)代价重新建模配准问题,该代价使得估计对大量外点不敏感。第二个贡献是一个解耦旋转、平移和尺度估计的通用框架,该框架允许级联地求解这三个量。但是每个子问题(尺度,旋转和平移估计)仍然是非凸和组合的,所以第三个贡献是证明(i)adaptive voting机制可以在多项式时间内精确地求解TLS尺度和分量形式的平移估计,(ii)TLS旋转估计可以被松弛为半定规划,并且该松弛实际上是紧的,甚至在极端外点率情况下也仍然是紧的。将提出的算法命名为TEASER(截断最小二乘估计和半定松弛),并在标准的3D配准基准上验证该算法,实验结果证明其超越了RANSAC和鲁棒的局部优化方法,比Branch-and-Bound方法效果更好。与此同时,这还是一个多项时间算法,十分快速。此外,TEASER可以处理高达99%外点率的情况,同时给出一个高精度的解。

动机

  1. 能够全局地求解配准问题,不需要依赖初始值;
  2. 能够忍受极端的外点数量,如99%的测量值都是外点;
  3. 能够在多项时间内运行;
  4. 能够提供正式的性能保证,也就是全局最优性保证。

主要贡献

  1. 使用截断最小二乘(TLS)代价重新建模配准问题,该代价对大量外点不敏感。将产生的问题称为截断最小二乘配准(TR)问题;
  2. 分离尺度,旋转和平移估计的通用框架。该方法的创新性有三个方面:(i)开发估计尺度的不变测量,(ii)在未知但有界噪声的框架下,将分离形式化。解耦使得可以级联地求解尺度,旋转和平移;
  3. 证明(i)使用adaptive voting机制能够在多项式时间内精确地求解标量情况的TLS估计,这样可以高效地估计尺度和(分量形式的)平移;(ii)通过寻找由不变测量定义的图的最大团来修剪大量的外点;(iii)建立一个紧的半定规划(SDP)松弛来估计旋转,(iv)在SDP松弛的性能上提供每个实例的界限。这是第一个可计算性能保证的外点鲁棒配准问题的多项式时间算法。

算法流程

  1. 使用截断最小二乘代价函数的鲁棒配准
    1.1 原始问题
    给定两组点云 A = { a i } i = 1 N \mathcal{A}=\left\{ a_i \right\}^N_{i=1} A={ai}i=1N B = { b i } i = 1 N \mathcal{B}=\left\{ b_i \right\}^N_{i=1} B={bi}i=1N,满足:
    在这里插入图片描述
    其中, ϵ i \epsilon_i ϵi为测量噪声, o i o_i oi为inlier-outlier向量(内点为0向量,外点为任意向量)。
    1.2 截断最小二乘配准模型
    当一部分对应点云是外点时,需要引入鲁棒的模型去处理它们,这里引入截断最小二乘配准模型:
    在这里插入图片描述
  2. 解耦尺度,旋转和平移估计
    这部分内容是这篇文章的一大贡献,利用仿射变换具有空间距离不变性的思想,也就是分别来自两组点云的两个点之间的线段长度是(近似)相等的,进而重新转换测量值以得到尺度、旋转和平移变换的不变量。
    2.1 平移不变测量(TIM)
    点的绝对位置是依赖于平移量 t t t,但是两个点之间的相对位置对于平移量是不变的,那么求取两组点 a i a_i ai b i b_i bi 之间的相对位置就抵消掉了平移量 t t t
    在这里插入图片描述
    因为,平移不变测量定义为 a ˉ i j = . a j − a i \bar{a}_{ij} \overset{.}{=} a_j-a_i aˉij=.ajai b ˉ i j = . b j − b i \bar{b}_{ij} \overset{.}{=} b_j-b_i bˉij=.bjbi,它们满足以下模型:
    在这里插入图片描述
    可以看到这个模型只依赖于未知的尺度 s s s 和旋转量 R R R,该不变量思想如图所示
    在这里插入图片描述
    2.2 平移和旋转不变测量(TRIM)
    TIM 还是依赖于旋转量 R R R,但TIM的模长对于旋转量 R R R 和平移量 t t t 都是不变的,因此首先计算 TIM 的范数:
    在这里插入图片描述
    这里使用有界噪声,那么就可以得到:
    在这里插入图片描述
    然后将上式两边同时除以 ∣ ∣ a ˉ i j ∣ ∣ ||\bar{a}_{ij}|| aˉij,就可以得到新的不变测量值 s i j = . ∣ ∣ b ˉ i j ∣ ∣ ∣ ∣ a ˉ i j ∣ ∣ s_{ij} \overset{.}{=} \frac{||\bar{b}_{ij}||}{||\bar{a}_{ij}||} sij=.aˉijbˉij
    在这里插入图片描述
    可以看到这个测量值仅仅依赖于未知的尺度 s s s,该不变量思想如图所示
    在这里插入图片描述
    2.3 上述不变测量值的总结
    在这里插入图片描述
  3. 配准算法:截断最小二乘估计和半定松弛(TEASER)
    3.1 鲁棒尺度估计
    使用平移和旋转不变测量 s k s_k sk 和估计尺度 s ^ \hat{s} s^,采用第4部分介绍的adaptive voting 算法进行估计:
    在这里插入图片描述
    3.2 鲁棒旋转估计
    使用上式得到的尺度估计 s ^ \hat{s} s^ 和平移不变测量TIM估计旋转 R ^ \hat{R} R^,采用第5部分介绍的半定松弛和快速证实算法进行估计:
    在这里插入图片描述
    3.3 鲁棒平移估计
    在截断最小二乘配准模型中使用上面得到的尺度估计 s ^ \hat{s} s^ 和旋转估计 R ^ \hat{R} R^,从 ( a i , b i ) (a_i,b_i) (ai,bi) 估计粗平移 t ^ \hat{t} t^ 的三个分量,采用第4部分介绍的 adaptive voting 算法进行三个分量的估计:
    在这里插入图片描述
    3.4 TEASER算法
    在这里插入图片描述
  4. 尺度,旋转和平移三个子问题的具体求解
    4.1 鲁棒的尺度估计
    给定标量尺度 s s s,定义一致集 C ( s ) = { k : ( s − s k ) α k 2 ≤ c ˉ 2 } \mathcal{C}(s)=\left\{ k: \frac{(s-s_k)}{\alpha^2_k} \le \bar{c}^2 \right\} C(s)={k:αk2(ssk)cˉ2}。对任何 s s s,最多有 2 K − 1 2K-1 2K1 个不同的非空一致集,将这些一致集命名为 C 1 , . . . , C 2 K − 1 \mathcal{C_1},...,\mathcal{C_{2K-1}} C1,...,C2K1,那么可以通过枚举公式(6)的解:
    在这里插入图片描述
    上式可以直接采用 adaptive voting 算法来求取
    在这里插入图片描述
    上述算法第4行见Fig. 3(a),第6、12行见Fig. 3(b)
    在这里插入图片描述
    4.2 鲁棒的旋转估计
    这部分是本文的另一大贡献,设计一个计算旋转估计的紧的凸松弛,并且该松弛对于高外点率情况仍然能够保持紧度。
    4.2.1 二值模型和克隆
    引入辅助的二值变量 θ k \theta_k θk,将(7)改写为:
    在这里插入图片描述
    然后使用合适的正交矩阵代替二值变量,将(10)改写为以下二值克隆问题:
    在这里插入图片描述
    4.2.2 凸松弛
    将(11)中所有未知变量堆叠起来,组成一个 3 × 3 ( K + 2 ) 3 \times 3(K+2) 3×3(K+2) 矩阵 X = [ I 3 , R , R 1 , . . . , R K ] X=[I_3,R,R_1,...,R_K] X=[I3,R,R1,...,RK],然后可以发现矩阵 Z = X X T Z=XX^T Z=XXT 的元素包含所有 R R R R K R_K RK 的线性项和二次项:
    在这里插入图片描述
    进一步发现(11)中的目标函数和约束都可以使用矩阵 Z Z Z 的函数来表示,并且 Z Z Z 是秩为3的半正定矩阵,那么就可以使用 Z Z Z 来改写问题(11),从而设计出一个凸松弛:
    在这里插入图片描述
    其中用到的技巧是在添加冗余约束((13)中最后两个约束)和舍弃秩约束( r a n k ( Z ) = 3 rank(Z)=3 rank(Z)=3),因此(13)是(11)的凸松弛,可以使用凸算子在多项式时间内求解得到最优解 Z ∗ Z^* Z。如果 Z ∗ Z^* Z 的秩为3,可以将其分解为 Z ∗ = ( X ∗ ) T ( X ∗ ) Z^*=(X^*)^T(X^*) Z=(X)T(X) X ∗ = . [ I 3 , R ∗ , R 1 ∗ , . . . , R K ∗ ] X^*\overset{.}{=}[I_3,R^*,R^*_1,...,R^*_K] X=.[I3,R,R1,...,RK] 是矩阵 Z ∗ Z^* Z 的第一行矩阵块,并且 R ∗ , R 1 ∗ , . . . , R K ∗ R^*,R^*_1,...,R^*_K R,R1,...,RK 是(11)的最优解。
    这里作者并没有给出这个凸松弛紧度的分析,也就是没有从理论上证明该凸松弛是紧的,而是通过后续的实验结果从经验上说明该松弛是紧的(也就是产生秩为3的解)。那么问题是,如果该凸松弛得到的解不是紧的,即 Z ∗ Z^* Z 的秩不为3,该怎么办?其实可以通过将 Z ∗ Z^* Z 投影到流形 O ( 3 ) O(3) O(3) 得到结果解的次优程度的上界,作为旋转估计 R ^ \hat{R} R^

    4.3 鲁棒的平移估计
    类似于4.1,同样可以使用 adaptive voting 算法来求解平移估计,也就是使用三次算法2分别求解平移向量的三个分量 t ^ j \hat{t}_j t^j,得到每个分量的估计值,最终组成平移估计值 t ^ = [ t ^ 1   t ^ 2   t ^ 3 ] T \hat{t}=[\hat{t}_1 \ \hat{t}_2 \ \hat{t}_3]^T t^=[t^1 t^2 t^3]T
    在这里插入图片描述

主要实验结果

  1. 标准数据集的benchmarking
    未知尺度情况下,与Fast Global Registration (FGR)、Guaranteed Outlier REmoval (GORE) 和RANSAC两种变体进行精度的比较,分别评估尺度,旋转和平移误差
    在这里插入图片描述
  2. 极端外点率(外点率为95%-99%)的测试
    在这里插入图片描述
  3. 目标位姿估计和定位
    输入为含噪声的FPFH特征描述子建立的对应点,其中含有大量外点(蓝色线),绿色线为内点,红色部分为最终配准的目标
    在这里插入图片描述

总结

这个工作提出了一个基于截断最小二乘模型计算相对变换(尺度,旋转和平移)的算法,用于极端外点率情况的点云配准问题。虽然该方法对外点很鲁棒,计算速度也比较快,但也是存在一些问题和改进点的:

  1. 实验中问题规模不大,这里受限制的原因是通用的SDP算子在大规模问题上会计算很慢,可以预见该方法在大规模点云配准上会表现不佳,作者也没有给出算法的效率测试,所以可以通过设计特定的SDP算子来实时地求解大规模配准问题,可以参考 IJRR18 的经典论文 “SE-Sync: a certifiably correct algorithm for synchronization over the Special Euclidean group.”;
  2. 旋转估计中使用的凸松弛,并不是一个经过理论证明(certifiable)的紧凸松弛,不过作者在之后的TRO20 TEASER 工作中对其进行了证明,从理论上分析和保证了紧度。
    该工作使用的估计理论中的未知但有界噪声,几何中的不变测量,图理论中的内点选择最大团和优化中的SDP松弛这些理论和技巧均出现在之前介绍过的作者TRO20 TEASER工作中;该工作的旋转估计部分在作者ICCV2019 “A Quaternion-based Certifiably Optimal Solution to the Wahba Problem with Outliers”中进行了改进,即将旋转参数化为四元数。所以该工作和ICCV2019共同组成了TEASER的前置工作,说明了作者这一系列工作的连贯性,并且这些工作都是理论和开源效果俱佳,非常值得关注和学习。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

极端外点率下鲁棒配准的多项式时间解 的相关文章

  • C语言随笔-去掉仅有\n的行

    include lt stdio h gt int main int argc const char argv char str 128 char linep strcpy str 34 12 35 56 n12 33 87 n n n n
  • python3.6-深入浅出视频

    课程收益 适合人群 python小白 xff0c 大数据和机器学习编程程序员 上机实践为主线 以最快的速度上手 快速入门 xff0c 还学到了python3的核心知识 https edu csdn net course detail 989
  • 数学之路(3)-机器学习(3)-机器学习算法-神经网络[11]

    多层感知器的代码 xff0c 需要一个比较复杂的调试过程 xff0c 不过也有一些方法来加快这一速度 xff0c 其中有几个地方要注意 xff1a 1 输入层 输出层 中间层的学习率和动量参数不能一样 xff0c 2 3个层的权值策略不能一
  • opencv中ArUco识别

    姿态估计 xff08 Pose estimation xff09 在 计算机视觉领域扮演着十分重要的角色 xff1a 机器人导航 增强现实以及其它 这一过程的基础是找到现实世界和图像投影之间的对应点 这通常是很困难的一步 xff0c 因此我
  • PID算法的EXCEL模拟实现

    增量式PID算法公式 xff1a 在表格里可以看见PID算法在目标值和实际值差异较大时 xff0c 控制量也很大 xff0c 主要是比例环节起到主要的调节作用 xff0c 在目标值和实际值相等时 xff0c 主要的控制量是积分环节 xff0
  • 三极管基本知识

    导通条件 NPN型三极管的导通条件是C点电位 gt B点电位 gt E点电位 xff0c 三极管饱和导通的条件是Ub gt Ue Ub gt Uc PNP型三极管的导通条件是E点电位 gt B点电位 gt C点电位 xff0c 三极管饱和导
  • 5.FreeRTOS学习笔记- 互斥量

    基本概念 互斥量又称互斥信号量 本质是信号量 是一种特殊的二值信号量 互斥量 支持互斥量所有权 递归访问以及防止优先级翻转的特性 用于实现对临界资源 如显示器 打印机 的独占式访问 任意时刻互斥量的状态只有两种 开锁或闭锁 持有该互斥量的任
  • could not stop cortex-m device 问题

    出现问题原因 xff1a 调试程序过程中mdk突然奔溃 xff0c 之后就再也下载程序失败 xff0c 但是读取swd IDCODE OK 下载程序就报错 个人觉得应该是单片机内部保护了 问题图 问题处理办法 先检查3 3v和GND是否短路
  • FreeRTOS系列|任务堆栈

    任务堆栈 运行freertos系统的大部分都是资源有限的MCU xff0c 所以对于RAM我们都要考虑尽量的节省 xff0c 避免资源浪费 下面将会基于Cortex M3内核的STM32F103型MCU来介绍FreeRTOS任务栈大小的确定
  • 9. GD32F103C8T6 定时器2的更新中断触发定时器0开始计时

    1 初始化定时器TIM0 span class token comment 定时器的基本初始化和打开更新中断 enable 是否使能定时器 span span class token keyword static span span cla
  • 4.GD32F103C8T6 串口中断方式接收数据和输出重定向

    1 串口基本初始化 span class token comment 基本初始化函数 span span class token keyword void span span class token function usart base
  • 5.GD32F103C8T6 串口DMA+IDLE方式接收数据

    1 串口的基本初始化 span class token keyword void span span class token function usart base init span span class token punctuatio
  • 26. GD32F103C8T6入门教程-CAN外设回环测试

    1 基础知识 相关stm32CAN外设 外设特征 3个发送邮箱 2个深度为3个邮箱的接收FIFO 自动重传 自动唤醒 发送 接收时间戳 最大速率1Mbps 3种工作模式 睡眠模式 可以检车总线状态自动唤醒 初始化工作模式 如果需要对 CAN
  • stm32 操作W25Q256 W25Q16 spi flash

    硬件连接 本函数库来自正点原子官方 xff0c 本人稍作修改和添加注释 W25Q16 2M Byte W25Q256 32M Byte spi 配置 2022 7 27 经过测试 华邦的 W25Q256JV 32M 字节 容量的spi fl
  • ESP32学习笔记20-dac

    20 DAC 20 1概述 ESP32 有两个 8 位数模转换器 DAC 通道 分别连接到 GPIO25 通道 1 和 GPIO26 通道 2 每个 DAC 通道可以将数字值 0 255 转换成模拟电压 0 Vref out voltage
  • ESP32学习笔记21-esp32启动流程

    24 esp32启动流程 第一 xff0c 第二阶段启动流程 第三阶段的详细流程
  • ESP32学习笔记22-TWAI-CAN

    22 TWAI CAN 22 1概述 22 1 1参考博客 ESP32 基于自带控制器实现CAN总线通信 上 知乎 zhihu com ESP32 基于自带控制器实现CAN总线通信 下 知乎 zhihu com 22 1 2 ESP32 T
  • Python str和bytes的相互转换

    str0 61 39 abc 39 a 61 bytes str0 39 utf 8 39 print type str0 str0 print type a a print 39 39 c 61 bytes 97 98 99 100 pr
  • wxpython 基本的控件 (按钮)

    在wxPython 中有很多不同类型的按钮 这一节 xff0c 我们将讨论文本按钮 位图按钮 开关按钮 xff08 toggle buttons xff09 和通用 xff08 generic xff09 按钮 如何生成一个按钮 xff1f

随机推荐

  • FreeRTOS系列|处理器利用率

    处理器利用率 1 处理器利用率统计的作用 处理器利用率其实就是系统运行的程序占用的CPU资源 xff0c 表示机器在某段时间程序运行的情况 xff0c 如果这段时间中 xff0c 程序一直在占用CPU的使用权 xff0c 那么可以认为CPU
  • QT 多线程使用QTcpSocket

    本人亲测使用moveToThread xff08 xff09 的方式可以 xff1b 不存在报错 xff0c 警告 include 34 widget h 34 include 34 ui widget h 34 Widget Widget
  • ESP8266天猫精灵接入流程

    Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey对应的设备若需要更换接入的设备类型 xf
  • 存储器的分类

    目录 01 ROM 02 非易失性RAM 2 1原理 2 2发展 2 3 摩尔定律 03 易失性RAM 3 1原理 3 2发展 3 3总结 04 总结 储器类型有很多 xff0c 常见的有ROM xff08 Read onlymemory只
  • RT - thread学习(一)

    目录 一 RT thread介绍 二 RT thread移植 首先我们先在官网获取 编辑 对无关的文件进行剪裁 剪裁后的内核文件移植到sdk文件 配置内核文件 一 RT thread介绍 rt thread是国产的一款开源的实时操作系统 这
  • 机器学习基本概念

    文章目录 深度学习和机器学习NLP xff08 Natural language processing xff09 Confusion Matrix 混淆矩阵ROC xff08 Receiver Operator Characteristi
  • ROS Kinetic中OpenCV使用

    ROS Kinetic中OpenCV使用 本文主要记录了ROS Kinetic中OpenCV的使用 xff0c Kinetic完全安装中本身自带了Opencv3 3 1 xff0c 因此在ROS中可以直接用ROS自带的Opencv3 3 1
  • ROS下gazebo不能加载willowgarage世界

    在打开gazebo ros打开williowgarage的时候 xff0c 能够找到willowgarage world的文件 xff0c 但是gazebo不能够加载这个模型 xff0c 主要原因是gazebo的model里面并没有mode
  • Mac OS下安装串口调试工具minicom

    最近在做一个Mac下的ssh调试工具 xff0c 但是出现了一点问题 后来发现居然Mac下有串口调试工具可以用 xff0c 所以果断换串口了 xff0c 是普通PL2303芯片的usb转串口线 接下来说下简单的安装步骤吧 我是勤劳的搬砖工
  • Eclipse等IDE配置Anaconda/Python3开发环境(win10_x64)

    分诊台 正所谓 洞庭揽物 xff0c 各有所怀 xff0c 博客点击 xff0c 也是各有所需 为了能让读者节约时间 xff0c 本小百姓 xff0c 写博客时尽力将博客内容各部分内容解耦 xff0c 但仍保持一定的连贯性 xff0c 并参
  • Linux(树莓派)系统中判断WiFi是否连接上路由器的方法

    之前 xff08 https blog csdn net u010299133 article details 105823339 xff09 介绍过在Linux系统中使用wpa supplicant连接到指定的WiFi路由器的方法 xff
  • FreeRTOS系列|任务相关API函数

    任务相关API函数 1 任务相关API函数 FreeRTOS中有很多与任务相关的API函数 xff0c 大多数是辅助函数 下表是这些与任务相关的API函数功能和描述简介 函数名功能描述uxTaskPriorityGet 查询某个任务的优先级
  • 无人机通信协议:MavLink协议使用

    mavlink的数据封装的结构体以及封装解析的函数都在mavlink代码库中的头文件中 主要的结构体 xff1a E mavlink mavlink include v1 0 mavlink types h MAVPACKED typede
  • 【计算机视觉】Lecture 16:平面单应变换

    动机 xff1a 在平面上的点 回顾 xff1a 正向投影 世界坐标系到相机坐标系的变换 透视矩阵方程 xff08 相机坐标系到成像坐标系 xff09 成像坐标系到像素坐标系 从成像坐标 xff08 x xff0c y xff09 到像素坐
  • 【计算机视觉】Lecture 20:八点法

    提醒 本质 基础矩阵 本质矩阵和基础矩阵都是 3x3 的矩阵 xff0c 用于 编码 两个视图的对极几何 动机 xff1a 给定一张图像中的一个点 xff0c 乘以本质 基础矩阵将告诉我们在第二个视图中沿着哪个极线搜索 本质 基础矩阵总结
  • 【计算机视觉】Lecture 23:光流估计

    流估计 主要概念 xff1a 亮度08好恒定方程 孔径问题 Lucas Kanade算法 回顾 xff1a 由于自身运动产生的场 流 xff08 Flow xff09 xff1a 旋转分量不依赖于场景结构 平移分量随场景 Z 值的变化而变化
  • 【计算机视觉】Lecture 24:视频变化检测

    视频基础 每秒30帧 每一幅图像的处理时间不会太多 因此 xff0c 实时算法往往非常简单 视频图像的主要特征之一是帧间的时间一致性 在1 30秒内帧间变化不大 xff01 检测移动的对象 假设 xff1a 移动的对象是非常重要的 xff0
  • Eigen中基本和常用函数

    Eigen 中矩阵的定义 span class token macro property span class token directive keyword include span span class token string lt
  • 基于四元数的存在外点Wahba问题的可证明最优解

    论文地址 论文视频 文章导读 为什么这次要解读这篇文章 xff1f 因为上次文章 xff08 详见 TEASER 快速且可证明的点云配准算法和代码解读 xff09 旋转求解部分就是用本文中的方法 xff0c 所以本文算是TEASER方法的前
  • 极端外点率下鲁棒配准的多项式时间解

    论文地址 论文视频 文章导读 为什么要解读这篇文章 xff1f 因为之前接连介绍该作者的两个工作 xff0c TEASER 快速且可证明的点云配准算法和代码解读 和 基于四元数的存在外点Wahba问题的可证明最优解 xff0c 前者的未知有