当前位置:   article > 正文

张量投票(Tensor voting)理论快速入门

张量投票

本文内容与截图主要参考[A Computational Framework for Segmentation and Grouping,Gérard Medioni, Mi-Suen Lee and Chi-Keung Tang]
(http://download.csdn.net/detail/u010658879/8476737 A Computational Framework for Segmentation and Grouping)
和A Perceptual Organization Approach to Computer Vision and Machine Learning

算法流程

算法流程图示:
这里写图片描述

  1. Input tokens: 输入点云,分三类:只包含位置信息的点、包含位置和法向信息的点、包含位置和切向信息的点。
  2. Encode: 参考输入信息,将输入点云参照下两幅截图图编码成张量(tensor tokens)。每个输入点都对应一个张量。如无特殊说明,后面提到“张量”,都指二阶张量。
    二维张量编码参考这里写图片描述
    这里写图片描述
    比如,输入点 p ( x , y ) p(x,y) p(x,y)包含法向信息 n ( n x , n y ) n(n_x,n_y) n(nx,ny)(即棒张量),则该点编码为张量
    S = ( λ 1 − λ 2 ) e ^ 1 e ^ 1 T + λ 2 ( e ^ 1 e ^ 1 T + e ^ 2 e ^ 2 T ) , S=(\lambda_1-\lambda_2) \hat e_1 \hat e_1^T+\lambda_2( \hat e_1 \hat e_1^T+\hat e_2 \hat e_2^T), S=λ1λ2e^1e^1T+λ2(e^1e^1T+e^2e^2T),其中 ( λ 1 − λ 2 ) = 1 , 表 棒 张 量 显 著 性 = 1 ; λ 2 = 0 , 表 球 张 量 显 著 性 = 0 ; e ^ 1 = n ^ (\lambda_1-\lambda_2)= 1,表棒张量显著性=1;\lambda_2=0,表球张量显著性=0;\hat e_1=\hat n λ1λ2=1,=1;λ2=0,=0;e^1=n^
    S = n ^ n ^ T S= \hat n \hat n^T S=n^n^T,其他类型类似。
    三维张量编码参考这里写图片描述
    这里写图片描述
  3. Tensor Voting:
    This process is similar to a convolution with a mask, except that the output consists of a tensor, instead of a scalar.

每个输入***点***都对应一个***张量***,产生一个***张量场***,对邻域的不同点有不同的场强影响。二维棒张量场和球张量场如下图左,下右图表示 O O O点产生的棒张量场可作用到领域点 P P P张量上。
这里写图片描述
现讨论二维张量的投票过程:先设棒张量对邻域点 p p p作用的张量算子 F S ( p ) F_S(p) FS(p),球张量对邻域点 p p p作用的张量算子 F B ( p ) F_B(p) FB(p),后面会具体提到几种张量算子的具体形式;
假设输入只有两点 p 1 , p 2 p_1,p_2 p1,p2(可推广到无数个点),分别编码为
S 0 , i = ( λ i , 1 − λ i , 2 ) e ^ 1 e ^ 1 T + λ i , 2 ( e ^ 1 e ^ 1 T + e ^ 2 e ^ 2 T ) = S 0 , i S + S 0 , i B , S_{0,i}=(\lambda_{i,1}-\lambda_{i,2}) \hat e_1 \hat e_1^T+\lambda_{i,2}( \hat e_1 \hat e_1^T+\hat e_2 \hat e_2^T)=S_{0,i}^S+S_{0,i}^B, S0,i=λi,1λi,2e^1e^1T+λi,2(e^1e^1T+e^2e^2T)=S0,iS+S0,iB,下标0表示第0次投票后, i i i取值为 p 1 , p 2 p_1,p_2 p1,p2
Stick vote.点 p 1 p_1 p1收集到的棒投票张量就是点 p 2 p_2 p2投出的棒投票张量,即 F S ( p 1 ) F_S(p_1) FS(p1),一次棒张量投票后点 p 1 p_1 p1的张量变为
S 1 , p 1 S = S 0 , p 1 S + ( λ p 2 , 1 − λ p 2 , 2 ) F S ( p 1 ) S_{1,p_1}^S=S_{0,p_1}^S+(\lambda_{p_2,1}-\lambda_{p_2,2})F_S(p_1) S1,p1S=S0,p1S+λp2,1λp2,2FS(p1)
Ball vote.同理有点 p 1 p_1 p1收集到的球投票张量 F B ( p 1 ) F_B(p_1) FB(p1),一次球张量投票后点 p 1 p_1 p1的张量变为 S 1 , p 1 B = S 0 , p 1 B + λ p 2 , 2 F B ( p 1 ) S_{1,p_1}^B=S_{0,p_1}^B+\lambda_{p_2,2}F_B(p_1) S1,p1B=S0,p1B+λp2,2FB(p1)
最后汇总一次投票后的各个点的张量 S 1 , i = S 1 , i S + S 1 , i B S_{1,i}=S_{1,i}^S+S_{1,i}^B S1,i=S1,iS+S1,iB
三维张量场如下图,三维场!!三维张量场

  1. Tensor Decomposition:由于任一张量可分解为球张量、板张量、棒张量的线性组合,一次投票后,各点张量信息得到改善,再次进行张量分解为下图的形式
    这里写图片描述
    然后进行二次张量投票,与第一次不同的是,这一次球张量不再有投票权(加速算法的目的)。

  2. 几种张量算子(Tensor kernel)
    把二维棒张量作为张量投票基本算子,因为其他几类张量算子都可由棒张量算子推导获得。
    显著性衰减函数
    这里写图片描述
    s s s-曲线长度, κ κ κ-曲率, c c c-控制曲率衰减程度, σ σ σ-投票邻域范围, l l l-两点间的距离
    这里写图片描述
    这里写图片描述
    基本算子中唯一的变量就是 σ σ σ,只要 O , P O,P O,P两点定了其他量也恒定了。
    二维球张量算子
    这里写图片描述
    R ( θ ) R(\theta) R(θ)-旋转 θ \theta θ角度的二维矩阵。为求方便,会用累加求和
    B S O ( P ) = ∑ i = 1 K v → i v → i T B_{SO}(P)=\sum_{i=1}^K \overrightarrow v_i \overrightarrow v_i ^T BSO(P)=i=1Kv iv iT
    KaTeX parse error: Unexpected character: '' at position 2: v̲_i are the stick votes tensors with angle 2 π K i \frac {2\pi} K i K2πi
    三维球张量算子
    这里写图片描述
    三维板张量算子
    这里写图片描述

~~~~~~~~~~华丽分割线~~~~~~~~~~
MATLAB代码仿真:可从github上找到,也可以从[https://download.csdn.net/download/u010658879/8515907]下载
后来找到更好的tensor voting相关资料(包含伪代码实现,见附录2),下载地址[https://download.csdn.net/download/u010658879/8514365]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/752740
推荐阅读
  

闽ICP备14008679号