经典的ICP点云拼接配准算法,matlab实现,带例程,附带RMS误差分析

  • u7_193722
    了解作者
  • matlab
    开发工具
  • 545.5KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-21 16:25
    上传日期
自己实现的经典ICP算法,采用PCA作了粗拼接,然后使用K-d树算法加速选取对应点,使用bunny数据进行了拼接实验,并计算了其RMS误差。经典ICP算法中不包含筛选删除误匹配点对的步骤,因此精度较低。
Basic_ICP.zip
  • Basic_ICP
  • ascread.m
    704B
  • init.m
    1.5KB
  • bun045.asc
    1.1MB
  • RMScompute.m
    178B
  • bun000.asc
    1.1MB
  • Solvecircle.m
    1.1KB
  • register_demo.m
    1.3KB
内容介绍
function result = init(X,Y) pointx=size(X,2); pointy=size(Y,2); %------分别求解X Y的每一行的均值------% xc = mean(X,2);% xc:3*1的矩阵 yc = mean(Y,2); %mean(A,2)求各行的均值 %----分别求解两个数据集合的协方差矩阵----% x1 = X - repmat(xc,1,pointx); %repmat(A,m,n)将矩阵A以m行n列复制摆好拼起来 Mx =x1 * x1'; %x1':转置矩阵 y1 = Y - repmat(yc,1,pointy); My = y1 * y1'; %------求解Mx My的特征值和特征向量------% [Vx,Dx] = eig(Mx,'nobalance'); %Vx特征向量,Dx特征值 [Vy,Dy] = eig(My,'nobalance'); %R存在问题 %判断特征向量矩阵方向?? [~,index]=max(sum(x1.*x1)); xm=x1(:,index); xm(3,1)=-abs(xm(3,1)); p3 = Vx(:,3); if dot(xm,p3)<0 p3=-p3; end p2 = Vx(:,2); if dot(xm,p2)<0 p2=-p2; end p1=cross(p3,p2); % Vx=[p1,p2,p3]; % xx=Vx*x1; % if std(xx(3,xx(3,:)>0),1)<std(xx(3,xx(3,:)<0),1) % p3=-p3; % end % if std(xx(2,xx(2,:)>0),1)<std(xx(2,xx(2,:)<0),1) % p2=-p2; % end % p1=cross(p3,p2); [~,index]=max(sum(y1.*y1)); ym=y1(:,index); ym(3,1)=-abs(ym(3,1)); q3 = Vy(:,3); if dot(ym,q3)<0 q3=-q3; end q2 = Vy(:,2); if dot(ym,q2)<0 q2=-q2; end q1=cross(q3,q2); % q3 = Vy(:,3); % f = 0.8; %f是阀值 % if dot(p1,q1) < f %dot(x,y)向量点乘 % p1 = -p1; % end % if dot(p2,q2)<f % p2 = -p2; % end % % p3 = cross(p1,p2);%返回向量叉积 R = [q1,q2,q3]/[p1,p2,p3];%R=(q1,q2,q3)(p1,p2,p3)-1:逆矩阵 %T重新求 % T = (yc - xc); % xc2 = mean(s*R*X,2); xc2 = R*xc; T = (yc - xc2); result = cell({R;T});
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • MATLAB教程
      MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程
    • MATLAB
      MATLAB 该项目是在matlab上完成的,涉及创建和移动宇宙飞船和机器人。 太空飞船和机器人是使用Matlab中的简单几何形状创建的,并通过连续变换矩阵进行移动。 这个项目教我如何使用变换矩阵(旋转,平移等)的概念...
    • MATLAB基础
      一本学习matlab的一本好书
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlabruntime
      通过奇点容器运行您的matlab项目 可以在没有MATLAB的容器中运行matlab代码。 为此,我们首先需要通过Matlab编译器在本地构建相应的Matlab代码的独立应用程序,然后使用具有Matlab运行时( 的容器)运行该应用程序 )...
    • matlab实现
      matlab实现 matlab实现matlab实现matlab实现matlab实现
    • matlab 教程
      matlab 信号处理资料,里面包含信号处理pdf文档,一些杂乱的程序和命令等
    • matlab教程
      matlab教程,PPT格式,包含 matlab基本知识、matlab入门、matlab作图、线性规划、无约束优化、非线性规划、统计工具箱、差值、微分方程等多项知识点,并且每个知识点独立成为PPT,内还含有matlab信号处理详解等文档...
    • matlab简介
      1.MATLAB 开发环境 1.1 MATLAB 的视窗环境 进入MATLAB之后,会看到一个视窗MATLAB Command Window称为指令视窗,它是你键入指令的地方同时 MATLAB也将计算结果显示在此。 1.2 简易计算 我们先从MATLAB的...