matlab点集配准,matlab练习程序(对应点集配准的四元数法)
clear all;
close all;
clc;
%生成原始点集
X=[];Y=[];Z=[];
for i=-180:2:180
for j=-90:2:90
x = i * pi / 180.0;
y = j * pi / 180.0;
X =[X,cos(y) * cos(x)];
Y =[Y,sin(y) * cos(x)];
Z =[Z,sin(x)];
end
end
P=[X(1:3000)‘ Y(1:3000)‘ Z(1:3000)‘];
%生成变换后点集
i=0.5;j=0.3;k=0.7;
Rx=[1 0 0;0 cos(i) -sin(i); 0 sin(i) cos(i)];
Ry=[cos(j) 0 sin(j);0 1 0;-sin(j) 0 cos(j)];
Rz=[cos(k) -sin(k) 0;sin(k) cos(k) 0;0 0 1];
R=Rx*Ry*Rz;
X=P*R + [0.2,0.3,0.4];
plot3(P(:,1),P(:,2),P(:,3),‘b.‘);
hold on;
plot3(X(:,1),X(:,2),X(:,3),‘r.‘);
%计算点集均值
up = mean(P);
ux = mean(X);
P1=P-up;
X1=X-ux;
%计算点集协方差
sigma=P1‘*X1/(length(X1));
sigma_mi = sigma - sigma‘;
M=sigma+sigma‘-trace(sigma)*[1,0,0;0,1,0;0,0,1];
%由协方差构造4*4对称矩阵
Q=[trace(sigma) sigma_mi(2,3) sigma_mi(3,1) sigma_mi(1,2);
sigma_mi(2,3) M(1,1) M(1,2) M(1,3);
sigma_mi(3,1) M(2,1) M(2,2) M(2,3);
sigma_mi(1,2) M(3,1) M(3,2) M(3,3)];
%计算特征值与特征向量
[x,y] = eig(Q);
e = diag(y);
%计算最大特征值对应的特征向量
lamda=max(e);
for i=1:length(Q)
if lamda==e(i)
break;
end
end
q=x(:,i);
q0=q(1);q1=q(2);q2=q(3);q3=q(4);
%由四元数构造旋转矩阵
RR=[q0^2+q1^2-q2^2-q3^2 ,2*(q1*q2-q0*q3), 2*(q1*q3+q0*q2);
2*(q1*q2+q0*q3), q0^2-q1^2+q2^2-q3^2, 2*(q2*q3-q0*q1);
2*(q1*q3-q0*q2), 2*(q2*q3+q0*q1), q0^2-q1^2-q2^2+q3^2];
%计算平移向量
qr=ux-up*RR‘;
%验证旋转矩阵与平移向量正确性
Pre = P*RR‘+qr;
figure;
plot3(P(:,1),P(:,2),P(:,3),‘b.‘);
hold on;
plot3(X(:,1),X(:,2),X(:,3),‘r.‘);
plot3(Pre(:,1),Pre(:,2),Pre(:,3),‘go‘);
关注公众号: MATLAB基于模型的设计 (ID:xaxymaker) ,每天推送MATLAB学习最常见的问题,每天进步一点点,业精于勤荒于嬉。
打开微信扫一扫哦!
matlab点集配准,matlab练习程序(对应点集配准的四元数法)相关推荐
- 如何在matlab中表达点集,matlab练习程序(点集配准的SVD法)
上一篇博客中我们使用了四元数法计算ICP. 本篇我们使用SVD计算ICP. 下面是<视觉slam十四讲>中的计算方法: 计算步骤如下: 我们看到,只要求出了两组点之间的旋转,平移是非常容易 ...
- ICP配准MATLAB实现
ICP配准MATLAB实现 本文介绍了ICP算法及其MATLAB实现 目录 ICP配准MATLAB实现 一.ICP算法 1.算法简介 2. 算法局限性 二.代码实现 1.平移旋转计算 2.ICP算法代 ...
- 图像平移配准matlab,(MATLAB应用图像处理)第6章MATLAB图像配准.ppt
第6章 MATLAB图像配准 6.1 图像配准概述 6.1.1 图像配准定义 图像配准是对从不同传感器.不同时间.不同视点所获得的两幅或多幅图像进行最佳匹配,以达到空间匹配和叠加目的的处理过程.本质上 ...
- matlab gui优化,matlabgui优化程序
的优化工具箱提供了各种优化函数,这些优化 函数可以通过在命令行输入相应的函数名加以调用;此外 为了使用方便,MATLAB 还提供了图形界面的优化工具 (GUI Optimization ...... ...
- matlab中提供滤波器的种类有,求MATLAB巴特沃思低通滤波器程序
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:求MATLAB巴特沃思低通滤波器程序.回答:击响应不变法函数 [bz,az]=impinvar(b,a,Fs) [bz,az]=im ...
- 如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )
如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于MatlabR2015b版) 关键字:MatlabR2015b,可独立运行,可脱离Matlab环境,m文件,Matlab程序 ...
- matlab的exec程序,C++调用Matlab画图的一段程序
劳动节闲来无事,写了一天程序,just for fun. 看,这是C++调用Matlab画图的一段程序.暂时不想多解释了,有兴趣的话,看看下面的代码吧. 以下几段代码由上到下,越来越旧.最上面的是最新 ...
- matlab 万年历,matlab时钟万年历 matlab时钟万年历(附word说明文档):
程序主要 联合开发网 - pudn.com...
matlab时钟万年历 所属分类:图形图像处理 开发工具:matlab 文件大小:54KB 下载次数:6 上传日期:2018-08-24 21:54:23 上 传 者:小小葡萄123 说明: mat ...
- matlab实现简单的交互式程序
matlab实现简单的交互式程序 x = input('请输入圆的半径='); y = pi*x^2; m = pi*x*2; fprintf('圆的面积为%f,圆的周长为%f\n',y,m);
- PV_Characteristic:基于MATLAB/Simulink的光伏特性程序
PV_Characteristic:基于MATLAB/Simulink的光伏特性程序,改程序说明了太阳辐射强度.光伏电池温度.理想因子.光伏模块的串并联电阻如何影响光伏的输出特性曲线和输出功率 ID: ...
最新文章
- 基于Protobuf共享字段的分包和透传零拷贝技术,你了解吗?
- listen()函数中backlog参数分析
- scikit-learn algorithm cheat sheet【汉化版】
- 计算机专业的口号运动会四字,计算机系运动会口号
- [LeetCode]Linked List Cycle
- 智能合约安全陷阱和开发建议
- 手撸Mybatis源码-基础版
- 随机过程(联合平稳随机过程)
- 华为OD机试题:统计射击比赛成绩
- 【乐理】常用和弦走向(4536251/1645)
- 华南师范大学计算机学院教务,促进教考协调,创新教育形式,服务人才培养 ——计算机学院2016-2017(1)学期期末考试工作纪实...
- python跳出循环的方法_Python 跳出嵌套循环的5种方法
- AI 作画领域中的“神笔马良”是怎样炼成的?
- Amoi夏新数码移动音响G5
- 赢鸡:2010年2月网络经典段子集锦
- android hook 第三方app_不需要Root即可Hook别人APP的方法
- 人家裁员我加薪, 这个80后凭什么身价1200亿?
- 计算机组成原理学习笔记:循环冗余校验码
- 网站推广方法大全(2008迎奥运版)
- [数图] 实验八 形态学图像处理
热门文章
- mysql ansi sql标准_Mysql数据库隔离级别(ANSI SQL92规范,行锁,间隙锁)
- “美国国家标准化组织(ANSI)”是一个核准多种行业标准的组织,我们可以把数据库看成这样一种有组织的机制
- 浅谈UAC ByPass
- 红色警戒2+尤里的复仇,带完整音乐+影片,免安装版本,完美兼容WIN10
- 服务器没有显示器能接笔记本吗,笔记本能连显示器吗_笔记本能不能接显示器...
- Chaya虚拟机学习 —— 启用Docker遇到的Bug
- Go和Rust计算性能大比武
- idea运行javaweb项目出现“该网页无法正常运作”
- 【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Table表格增删查改、Pagination分页、搜索框
- PID微分器与滤波器的爱恨情仇