zoukankan      html  css  js  c++  java
  • 运动一致性判断

    直至以来,SLAM的研究共朝着三个方向努力:精度、速度、鲁棒性。尤以鲁棒性居多。通常动态场景中,根据IMU测量值与视觉测量值分别进行计算得到的结果会有所不同。因此需要进行一致性的检测,以得到真值。本文将主要讲运动一致性检测。

    运动一致性判断

    基于聚类将图片分割之后获得的区域需要判断其运动一致性以分离动态物体和静态背景。

    目的:对图片中各部分进行运动一致性判断以分离出目标和背景。

    下面介绍各个论文中的判断方法

    Nonparametric Statistical and Clustering Based RGB-D Dense Visual Odometry in a Dynamic Environment

    该论文将RGB图片与深度图结合后进行k均值聚类以实现图片分割

    过程:

    1. 进行k-means聚类
    2. 计算每一个簇的残差
    3. 根据计算出的残差建立非参数统计模型

    聚类的好处有两点:

    1. 能够将非刚体场景表示基于聚类的刚体场景
    2. 可有效增强密集运动的分割效果,从而支持场景流估计和避障。

    本文使用了一个残差模型。该模型基于一个假设:

    若图片对齐,则基于静态背景的聚类将会有一个很小的残差。

    光照强度残差:
    $$
    r^p_I(xi)= I_k(W(x^p_{k-n},xi^k_{k-n}))-I_{k-n}(x^p_{k-n})
    $$
    图像扭曲,Warp函数:
    $$
    W(x^p_{k-n},xi^k_{k-n})=pi(T^k_{k-n}pi^{-1}(x^p_{k-n},Z_{k-n}(x^p_{k-n})))
    $$

    第i个聚类的残差计算方法如下所示:
    $$
    delta^{k,i}{k-n}=cfrac{sum^{S_i-O_i}{p=1}alpha_Ir^p_I+r^P_Z/hat Z_i}{S_i-O_i}
    $$
    其中,$S_i$是第i类的像素大小。$O_i$是第i类遮挡的区域大小。

    $hat Z_i$是第i类的平均深度,$alpha_I$是平衡深度和广度的权重。
    $$
    r_Z^P(Chi)=Z_k(W(x^p_{k-n},Chi^k_{k-n}))-|T^k_{k-n}|_Z
    $$

    非参数统计模型

    该模型的用途是为了你和实际实验残差的直方图,为每个聚类提供权重以估计相机运动

    静态背景部分的运动始终与相机运动具有双重关系。因此,静态簇的残差通常会很小或接近零,因为它们会完美对齐,而这些动态簇的残差通常是较大的值,由于动态对象的独立运动,它们的值会很明显的偏移于零。

    对于不同的场景,残差分布并不总是相同的。应该探索聚类残差的分布特征。图2是高动态场景的统计残差直方图示例。

    image-20200316123237971

    在概率论和统计学中,t-分布(t-distribution)用于根据小样本来估计呈正态分布且方差未知的总体的均值。

    受[14,23]的启发,基于t分布的非参数统计模型构造如下:
    $$
    w_i = cfrac{v_0+1}{v_0+((delta’_i-mu))^2}
    $$

    $$
    delta = 1.4826 Median {|delta’_i-mu|}
    $$

    其中,$v_0$是t分布的自由度,决定了分布曲线的陡峭程度。

    实验中,$v_0$被设置为10,$mu$是样本均值,设为0;

    $delta$是样本方差,即基于中位数绝对偏差的非参数统计。

    由于统计模型的概率表示簇的运动可能性,因此它可以指导场景运动分割,并为每个聚类提供权重以估计自我运动。

    聚类标签根据如下给出:
    $$
    Beta_i=left{
    egin{array}{l}
    1,&delta’_ileq1/(min(10,max(3.alpha_Bv_cdelta)))
    ,&delta’_igeq1/(min(10,max(3,alpha_Bv_cdelta)))
    end{array}
    ight.
    $$
    Bi表示第i个簇的聚类标签。1表示该类属于静态背景。

    0表示该类属于动态部分。$alpha_B$是一个用来调节独立变量和残差的维度协方差,计算方法为:
    $$
    alpha_B=10^3 imesmin(10^3,10^{N_d})
    $$
    $N_d$是标记为移动部分的聚类数。

    聚类权重参考聚类的残差来给出,如下所示:
    $$
    w_i^p=left{
    egin{array}{}
    w_i, &Meadian(delta’_i)>0.02or N_d>5
    1-delta’_i,&Others
    end{array}
    ight.
    $$
    其中,$w_i$是第i类的权重。Median($delta’_i$)是聚类残差的中位数。

    最后将运动标记和权重模型添加到稠密视觉里程计的能量优化函数中。优化函数是根据Kerl的工作[9]基于深度和强度构建的,具有很高的稳定性,而Jaimez的工作[15]的方法表明优化过程可以在Cauchy M估计器中获得良好的结果。自运动通过以下等式估算:
    $$
    Chi = arg min_{Chi}{sum^M_{m=1}Beta_i[F(w^P_i)r^P_Z(Chi)+F(alpha_I)w^p_ir^p_I(Chi)]
    $$

    $$
    F(r)=cfrac{c^2}{2}log(1+(cfrac{r}{c})^2)
    $$

    此外,基于能量函数的视觉里程计方法只有在运动较小时才能收敛到真实值,而较大的运动通常会将收敛收敛到局部最小值。因此,我们使用金字塔模型来解决此优化问题,以获得更准确的自我运动估计。

    Dection and Resolution of Motion Conflict Inertial Odometry

    判断路标点间一致性的策略:

    1. 基于IMU判断的运动对每一个特征点计算重投影残差
      $$
      delta_{l_j}=sum_{iin S}(z_ij-h(hat X^I_j,l_j))
      $$

    2. 计算当前帧中特征点的残差不一致点的个数,如果不一致点的个数超过了一定比例,则判断发生了运动冲突。
      $$
      Mr:=cfrac{landmarkswihtoutconfilt}{landmarks}
      $$

    3. 另一方面,分别根据基于IMU和视觉的运动计算重投影误差,再计算二者的分歧度,再根据分歧度计算当前帧是否发生了冲突。
      $$
      delta_{MC}=||{hat p_k^V-hat p_k^I}||_{sum}
      $$

    On Exploting Per-Pixel Conflict to Extract Secondary Motions

    基于DNN训练一个概率图,提取出概率图(Mask)

    然后基于该概率图分别计算主要运动和次要运动。

    A Compatible Framework for RGB-D in Dynamic Scenes

    1. 首先利用CNN提取出图像中潜在的动态区域

    2. 运动检测方法

      ​ 本文采用基于光学流的方法来检查潜在动态区域和背景区域的一致性。光学流算法[30]在该领域已被广泛研究,该算法在运动检测中表现出色。该算法的总体思想是在两个图像的时空一致性假设下,从两个连续的图像中确定点的对应关系。提出了两种针对光流问题的解决方法,分别称为稀疏法和稠密法。稠密解决方案逐像素计算图像中的光学流值。但稀疏解决方案仅在这些兴趣点上计算流量矢量。可以通过以下公式获得一个像素的光学流值:
      $$
      au(Chi,u)=sum_{Chi_iin S}[I_{l-1}(X_i)-I_l(X_i+u(X_i))]^2
      $$
      ​ 对于每一个2D再集合$Ssubset R^2$的点$X_i$,$I_{l-1}(X_i)$是第l-1帧的$X_i$的雄塑强度。$I_l(X_i+u(X_I))$表示相应的第l帧中的光照强度。

      $u(X_i)$是第l-1和第l帧的相应点的变化,该项根据局部窗口中基于重心$X_i$的变化而来,是使函数达到最小的变量。

      为了减少上面所说的损失函数,$X_i$点的光流向量$(frac{u_x(X_i)}{dt},frac{u_y(X_i)}{dt})$。$frac{u_x(X_i)}{dt}$是其沿x轴的时间随时间变化的导数,$frac{u_y(X_i)}{dt}$是其沿y轴方向变化的倒数。沿y轴的时间。利用广泛使用的Lucas-Kanade光流法用于跟踪潜在动态对象内部和外部的稀疏点。

      对于光学流向量$p =(u,v)$,其方向$Phi$和大小$ρ$表示如下:
      $$
      phi=left{
      egin{array}{}
      atan2(frac{v}{u})180/pi,&if~atan2(frac{v}{u})>0
      (360+atan2(frac{v}{u}))
      180/pi,&otherwise
      end{array}
      ight.
      $$

      $$
      ho = sqrt2{u^2+v^2}
      $$

      然后,类似于[15],将为潜在的动态区域和背景区域构建标准化的直方图,其中每个单元格的范围将由如下所示的公式确定:
      $$
      2pifrac{r-1}{R}<psi<2pi{frac{r}{R}}
      $$
      其中,$R$是bins的数目,r是从左到右的系列字母。所有的流向量将根据它们与水平轴的夹角划分为每个容器。此外,所有流向量将分配给不同的簇。每个bin的高度将如下计算:
      $$
      H=frac{sum_{xiin bin} ho_xi}{sum_{muin area} ho_mu}
      $$

    其中$ρ_ξ$表示一个箱中流量矢量的大小,而$ρ_mu$是势能动态区域或背景区域中流量矢量的大小。

  • 相关阅读:
    sklearn使用高斯核SVM显示支持向量
    决策树和随机森林分类
    线性回归曲线和过拟合判断
    wave数据集的回归曲线
    用KNN实现iris的4分类问题&测试精度
    pandas绘制矩阵散点图(scatter_matrix)的方法
    6种字符串数组的java排序 (String array sort)
    Spring中Quartz的配置
    jquery easyui datagrid js获取记录数 页数 当前页
    EasyUI的treegrid组件动态加载数据问题的解决办法
  • 原文地址:https://www.cnblogs.com/guoben/p/13339287.html
Copyright © 2011-2022 走看看