资源简介
使用主元分析法PCA对两片点云数据作粗略的拼接配准,可以作为ICP算法的预处理步骤。尝试规定了PCA主元向量的朝向。附带ply文件格式的bunny多视角数据。

代码片段和文件信息
clc
clear
close all
%------读取点云数据------%
% mydir=uigetdir(‘d:‘‘选择一个目录‘);
mydir=‘d:\Matlab.R2017a\work\bunny‘;
DIRS=dir(fullfile(mydir‘*.ply‘));
n=length(DIRS);
name={DIRS.name}‘;
p=1;q=2;
[~P] = ply_read(fullfile(mydirDIRS(p).name)‘tri‘);
[~Q] = ply_read(fullfile(mydirDIRS(q).name)‘tri‘);
figure;
plot3(P(1:)P(2:)P(3:)‘r.‘);
hold on
plot3(Q(1:)Q(2:)Q(3:)‘b.‘)
hold off
title(name([pq]));
view(2)
point1=size(P2);
point2=size(Q2);
%------分别求解P Q的每一行的均值------%
pc = mean(P2);% xc:3*1的矩阵
qc = mean(Q2); %mean(A2)求各行的均值
%----分别求解两个数据集合的协方差矩阵----%
x1 = P - repmat(pc1point1); %repmat(Amn)将矩阵A以m行n列复制摆好拼起来
Mx =x1 * x1‘;
y1 = Q - repmat(qc1point2);
My = y1 * y1‘;
%------求解Mx My的主元和主方向------%
[VxDx] = eig(Mx‘nobalance‘); %Vx特征向量Dx特征值
[VyDy] = eig(My‘nobalance‘);
[~index]=max(sum(x1.*x1));
xm=x1(:index);
xm(31)=-abs(xm(31));
p3 = Vx(:3);
if dot(xmp3)<0
p3=-p3;
end
p2 = Vx(:2);
if dot(xmp2)<0
p2=-p2;
end
p1=cross(p3p2);
[~index]=max(sum(y1.*y1));
ym=y1(:index);
ym(31)=-abs(ym(31));
q3 = Vy(:3);
if dot(ymq3)<0
q3=-q3;
end
q2 = Vy(:2);
if dot(ymq2)<0
q2=-q2;
end
q1=cross(q3q2);
%------求解旋转矩阵R和平移向量T------%
R = [q1q2q3]/[p1p2p3];%R=(q1q2q3)(p1p2p3)-1:逆矩阵
xc2 = R*pc;
T = (qc - xc2);
P1=R*P+repmat(T1size(P2));
figure;
plot3(P1(1:)P1(2:)P1(3:)‘r.‘);
hold on
plot3(Q(1:)Q(2:)Q(3:)‘b.‘)
hold off
title(name([pq]));
view(2)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-04 12:58 PCA点云位姿估计\
目录 0 2018-04-04 12:58 PCA点云位姿估计\bunny\
文件 1590 2018-04-04 12:58 PCA点云位姿估计\PCA_demo.m
文件 16255 2018-04-04 12:58 PCA点云位姿估计\ply_read.m
文件 1988159 2018-04-04 12:58 PCA点云位姿估计\bunny\bun000.ply
文件 1965799 2018-04-04 12:58 PCA点云位姿估计\bunny\bun045.ply
文件 1651508 2018-04-04 12:58 PCA点云位姿估计\bunny\bun090.ply
文件 1983009 2018-04-04 12:58 PCA点云位姿估计\bunny\bun180.ply
文件 1679880 2018-04-04 12:58 PCA点云位姿估计\bunny\bun270.ply
文件 1808074 2018-04-04 12:58 PCA点云位姿估计\bunny\bun315.ply
文件 3033195 2018-04-04 12:58 PCA点云位姿估计\bunny\bun_zipper.ply
文件 658744 2018-04-04 12:58 PCA点云位姿估计\bunny\bun_zipper_res2.ply
文件 148524 2018-04-04 12:58 PCA点云位姿估计\bunny\bun_zipper_res3.ply
文件 34359 2018-04-04 12:58 PCA点云位姿估计\bunny\bun_zipper_res4.ply
文件 1861310 2018-04-04 12:58 PCA点云位姿估计\bunny\chin.ply
文件 1686708 2018-04-04 12:58 PCA点云位姿估计\bunny\ear_back.ply
文件 1898128 2018-04-04 12:58 PCA点云位姿估计\bunny\top2.ply
文件 1833305 2018-04-04 12:58 PCA点云位姿估计\bunny\top3.ply
相关资源
- 高光谱图像pca分析特征提取
- pca源码matlab
- PCA人脸识别Eigenface特征脸Matlab
- RPCA图像去噪算法
- MATLAB 对iris数据集进行PCA
- 遥感影像融合_数字图像处理的matlab程
- 基于TE过程的PCA程序matlab
- 基于PCA和SVM的人脸识别.zip
- PCA算法实现人脸识别基于matlab GUI界面
- 基于matlab的人脸识别271850
- 2D2DPCA人脸识别matlab代码/ORL库
- PCA人脸识别MATLAB代码/ORL库
- PCA人脸识别论文附MATLAB程序
- KPCA matlab实现
- 基于K-L变换的人脸识别系统
- 基于PCA使用Yale人脸数据库的人脸识别
- 降维技术matlab工具箱
- 2dpca的matlab源码
- 基于pca的图像压缩与重建代码
- 基于pca的图像压缩算法
- 2DPCA的matlab代码
- 基于PCA算法实现人脸识别完整代码文
- MATLAB下人脸图像的PCA重构
- LDA与PCA的讲解与matlab演示
- 基于PCA的人脸识别matlab)
- Matlab人脸识别-PCA算法
- 基于PCA对人脸图像做特征选择matlab程
- 基于PCA算法的人脸识别包含人脸库
- 表情识别 源码Matlab LBP+LPQ SVM PCA
- 基于PCA算法的人脸识别matlab程序
评论
共有 条评论