资源简介
使用主元分析法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的人脸识别matlab)
- Matlab人脸识别-PCA算法
- 基于PCA对人脸图像做特征选择matlab程
- 基于PCA算法的人脸识别包含人脸库
- 表情识别 源码Matlab LBP+LPQ SVM PCA
- 基于PCA算法的人脸识别matlab程序
- matlab toolbox for pca
- pca实现人脸识别算法matlab
- PCA+SVM matlab代码 测试通过
- matlab表情识别
- 基于MATLAB GUI的PCA人脸识别门禁系统
- 基于PCA和SVM的人脸识别 matlab程序
- PCA LDA LLE各种降维方法Matlab工具箱
- PCANet MATLAB代码
- 基于PCA的人脸识别MATLAB
- 手写数字识别Matlab代码
- matlab开发-用PCA检测平面图像的眼镜
- 基于MATLAB的微表情识别系统
- PCA的MATLAB实现
- PCA人脸识别代码MATLAB可直接运行
- 通过svm cnn knn对高光谱数据集PaviaU进行
- 人脸识别经典算法PCA和2DPCA 的matlab版
- pca人脸识别算法
- 基于PCA主成分分析的人脸识别
-
PCA SPE T2 Contribution Simuli
nk matlab - oldpac.rar
- 基于ORL库和PCA方法的人脸识别系统m
- PCA主成分分析实现方法Matlab
- 人脸识别 MATLAB代码
- PCA人脸降维与单幅图像识别
评论
共有 条评论