Accelerated Hypothesis Generation for Multi-Structure Data via Preference Analysis

multi-GS: 更高效的RANSAC
RANSAC的思路可简单概括为随机抽取M个hypothesis(也即minimal sample set,包含p个点)分别用来建模,最后采用效果最好(能囊括最多内点)的hypothesis所建立的模型。
然而,抽取每一个hypothesis时都是完全随机的,hypothesis内所抽取到的点全是内点的概率很小,特别是当p比较大或者外点占比大的时候,这也导致了使得RANSAC算法收敛所需的M变得很大。
本文提出了一种方法,增大了单个hypothesis内的点属于同一个structure的概率,加快了RANSAC的收敛。
算法如下:
在这里插入图片描述在这里插入图片描述
该算法能work的原因:
假设当前已经采样了m个hypothesis并求出了每个hypothesis所对应的模型,用这m个模型分别去计算它们同所有n个点的residual(即在该点上使用该模型所产生的误差),这样就得到了一个n*m的矩阵,矩阵的i行即为第i个点在所有m个模型上的residual vector,也就是每个点都对应了一个residual vector,这个residual vector也就是点的一个性质,residual-vector越相似,两个点就越可能属于同一个structure,multi-GS的理念即在于在同一个hypothesis内取 residual vector相似的点来提升hypothesis内的点属于同一个structure的概率。
以homography为例说明residual的计算方式:

function [dist, H] = homography_res(H, X)
    
    H = reshape(H,3,3);
   
   
    x1 = X(1:3,:);   % Extract x1 and x2 from x
    x2 = X(4:6,:);    
    n = size(x1,2);
    
    % Calculate, in both directions, the transfered points    
    Hx1    = H*x1;
    invHx2 = H\x2;
    
    % Normalise so that the homogeneous scale parameter for all coordinates
    % is 1.
    
    x1     = hnormalise(x1);
    x2     = hnormalise(x2);     
    Hx1    = hnormalise(Hx1);
    invHx2 = hnormalise(invHx2); 
    
    dist = sum((x1-invHx2).^2)  + sum((x2-Hx1).^2);
    %size:1*n 使用当前hypothesis m 采样得到的4对matching points所构建的H,计算得到H在每一对matching
    %points 上的误差
    
    dist = reshape(dist,n,1);
    
    H = H(:);

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值