参考论文

Min Z, Wang J, Meng M Q H. Robust generalized point cloud registration with orientational data based on expectation maximization[J]. IEEE Transactions on Automation Science and Engineering, 2019, 17(1): 207-221.

思路

该论文提出一种杂交混合模型(hybird mixture model),使用高斯混合模型(GMM)和冯·米塞斯混合模型(von-Misis-Fisher model)分别表示点云位置和法向信息,进而对点云进行配准(registration)

复现

我使用matlab对论文进行了复现,全部代码如下:
主文件:demoHMM.m

%% load and generate data
datas = dlmread("./datas/bunnynormal.txt");
X = datas(:,1:3);
Xn = datas(:,4:6);
% rotate points and normal
angle2rotation = @(theta) [1 0 0;0 cos(theta) -sin(theta);0 sin(theta) cos(theta)] ...*[cos(theta) 0 sin(theta);0 1 0;-sin(theta) 0 cos(theta)] ...*[cos(theta) -sin(theta) 0;sin(theta) cos(theta) 0; 0 0 1];
theta = pi/20;
rMatrix = angle2rotation(theta);
Y = transpose(rMatrix * transpose(X)) + repmat([1 1 1],size(X,1),1);
Yn = transpose(rMatrix * transpose(Xn));
% plot
figure(1);
hold on;
scatter3(X(:,1),X(:,2),X(:,3));
scatter3(Y(:,1),Y(:,2),Y(:,3));
%% set initinal parameters
R = eye(3);
t = [0 0 0]';
k = 10; % von-Misis-Fisher模型参数
N = size(X,1);
M = size(Y,1);
sigma2 = 0;
for n = 1:NpX = X(n,:);for m =1:MpY = Y(m,:);sigma2 = sigma2+sum((pX-pY).^2);end
end
sigma2 = sigma2/(3*M*N);
%% call HMM function
[~,~,~,~]=HMM(X',Xn',Y',Yn',R,t,k,sigma2);

函数文件:HMM.m

function [Y,Yn,R,t] = HMM(X,Xn,Y,Yn,R,t,k,sigma2)
% HMM: utilizing Hybird Mixture Model for registration of orientational
% data
% REFERENCE:Robust Generalized Point Cloud Registration With Orientational Data Based on Expectation Maximization
% INPUT PARAMETERS:
% X: fixed point cloud. Xn = [x1 x2 x3...xn]
% Xn: normals of fixed point cloud
% Y: movable point cloud
% Yn: normals of movable point cloud
% R: initial rotation matrix of Y and Yn
% t: initial translation vector of Y and Yn
% k: initial parameter of Von-Misis-Fisher distribution
% sigma2_: initial parameter of Gaussain distrubution
% OUTPUT PARAMETERS:
% Y: transformed point cloud
% Yn: transformed point cloud normals
% R: final rotation matrix
% t: final translation matrixw = 0.3;% weight of uniform distribution
iter = 5;
N = size(X,2);
M = size(Y,2);
for i = 1:iter%----------- E-step ----------%g = k/(2*pi*(exp(k)-exp(-k))*power(2*pi*sigma2,1.5));h = zeros(M,N);for m = 1:Mfor n = 1:Nh(m,n) = k*transpose(R*Yn(:,m))*Xn(:,n)-sum((X(:,n)-(R*Y(:,m)+t)).^2)/(2*sigma2);h(m,n) = exp(h(m,n));endend% calculate pmnp = zeros(M,N);% posterior probabilityfor n = 1:Nsh = sum(h(:,n));for m = 1:Mp(m,n) = (1-w)*(1/M)*g*h(m,n)/((1-w)*g*(1/M)*sh+w/N);endend%----------- M-step ----------%% M rigid step: calculate t and RNp = sum(sum(p));ux = [0 0 0]';uy = [0 0 0]';for n = 1:Nfor m = 1:Mux = ux + p(m,n)*X(:,n);uy = uy + p(m,n)*Y(:,m);endendux = ux / Np;uy = uy / Np;t = ux - R*uy; % update t% update R: 1.construct xn' and ym' 2.construct H1 and H2% 3.SVDXnew = X - repmat(ux,1,N);Ynew = Y - repmat(uy,1,M);H1 = zeros(3);H2 = zeros(3);for n = 1:Nfor m = 1:MH1 = H1 + p(m,n)*Ynew(:,m)*Xnew(:,n)'./sigma2;H2 = H2 + k*p(m,n)*Yn(:,m)*Xn(:,n)';endendH = H1+H2;[U,~,V] = svd(H);R = V*diag([1 1 det(V*U')])*U'; % update R% update point cloudsY = R*Y + t;Yn = R*Yn;figure(2);clf(2);hold on;text(0,0.25,num2str(i));scatter3(X(1,:),X(2,:),X(3,:));scatter3(Y(1,:),Y(2,:),Y(3,:));hold off;% M-var stepsigma2 = 0;for n = 1:Nfor m = 1:Msigma2 = sigma2 + p(m,n)*sum((X(:,n)-(R*Y(:,m)+t)).^2);endendsigma2 = sigma2./(3*Np);% M-con stepk_new = 0;for n = 1:Nfor m = 1:Mk_new = p(m,n).*transpose(R*Yn(:,m))*Xn(:,n);endendk_new = (exp(k)+exp(-k))/(exp(k)-exp(-k))-k_new/Np ;k = 1/k_new;
end
end

实验效果

我使用bunny模型进行测试,在测试前需要计算点云法矢,代码运行效果如下图:

我使用均方根误差(RMSE)来对配准效果进行评价,误差随迭代变化关系如下图:

迭代过程中的误差具体数值为:

源代码下载地址:https://github.com/sulingjie/-registration

点云配准论文复现:Robust generalized point cloud registration with orientational data based on expectation ma相关推荐

  1. 【配准论文解读】Color Point Cloud Registration with 4D ICP Algorithm

    本文是对于IEEE ICRA2011的论文<Color Point Cloud Registration with 4D ICP Algorithm>做一解读,这篇文章主要介绍了一种通过H ...

  2. 点云配准论文阅读笔记--(4PCS)4-Points Congruent Sets for Robust Pairwise Surface Registration

    目录 点云配准系列 写在前面 Abstract摘要 1 Introduction引言 2 Background研究背景 RANSAC Randomized Alignment 3 Approximat ...

  3. 点云配准论文阅读笔记--Comparing ICP variants on real-world data sets

    目录 写在前面 点云配准系列 摘要 1引言(Introduction) 2 相关研究(Related work) 3方法( Method) 3.1输入数据的敏感性 3.2评价指标 3.3协议 4 模块 ...

  4. 点云配准论文阅读笔记

    1.<RPM-Net: Robust Point Matching using Learned Features> CVPR2020 论文链接:http://arxiv.org/abs/2 ...

  5. 点云配准论文阅读笔记--3d-dnt博士论文

    目录 点云配准系列 本文内容 摘要 chapter1 introduction 1.1 Contributions 1.2 outline chapter2 常用概念 2.1 点.位姿 2.2 旋转 ...

  6. 毫米波点云生成论文 阅读笔记 | 3D Point Cloud Generation with Millimeter-Wave Radar

    毫米波点云生成论文 | 3D Point Cloud Generation with Millimeter-Wave Radar Kun Qian, Zhaoyuan He, Xinyu Zhang ...

  7. 点云配准5:4pcs算法在pcl上的实现

    目录 配准结果 点云配准系列 准备 完整项目文件 参数设定及说明 数据 参数 代码 结果 Bunny hippo 算法缺点 参考及感谢 完 配准结果 偶尔效果比较好,白色是目标点云0°的Bunny,紫 ...

  8. 点云配准2:icp算法在PCL1.10.0上的实现+源码解析

    目录 本文最后实现的配准实例 点云配准系列 准备 程序结构 主程序 1.为什么要降采样 2.体素降采样原理 3.点云更新 icp 配准前的参数设置 icp配准算法内部 对应点对确定(determine ...

  9. KSS-ICP: 基于形状分析技术的点云配准方法

    目录 1. 概述 2. 算法实现 3. 实验结果 总结 Reference 三维点云配准是三维视觉领域一个经典问题,涉及三维重建,定位,SLAM等具体应用问题.传统的配准可以被分为两条技术路线,即基于 ...

最新文章

  1. JavaScript的10种跨域共享的方法
  2. 填充一个池需要多少个线程?
  3. 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
  4. Spark内置图像数据源初探
  5. 结点重要性与SIR模型基础代码
  6. Windows server 2008文件服务器之一隐藏用户无权限访问的共享文件夹
  7. Android Studio真机测试失败-----''No target device found
  8. 如何理解CPU上下文切换(二)
  9. AllWinner board 笔记
  10. 国内6大网络信息采集和页面数据抓取工具
  11. 使用vue开发的网易云音乐播放器
  12. 数据库表设计-第三方登录用户表结构设计
  13. 小程序uni-app介绍
  14. redis五种数据类型及其常见操作
  15. 使用Squid架设代理服务器实现局域网共享上网
  16. 有关计算机时代的英语阅读理解题,2020-2021高考英语阅读理解综合经典题附详细答案...
  17. 设置word表格行高
  18. (CNS复现)CLAM——Chapter_00
  19. 「Poetize9」升降梯上(tyvj2032)(最短路)
  20. jmeter在Linux下执行测试

热门文章

  1. 聊一下关于面试的话题,只谈共性,不谈个例,一家之言,仅供求职者参考:)
  2. with as的update写法
  3. sql join备忘
  4. 【Linux】冯诺依曼体系结构和操作系统概念
  5. htcvr设备计算机配置,htc vive电脑配置要求推荐 htc viv电脑配置多少够用
  6. onkeypress、onkeydown、onkeyup
  7. Android SQLite 数据库存储
  8. Lucene学习——IKAnalyzer中文分词(一)
  9. 十大前端开发框架(转)
  10. MySQL之binlog