如何找到对象的中心线以及为什么它与主轴不同?

时间:2019-08-19 13:49:22

标签: matlab geometry pca eigenvector

我有许多不与全局轴对齐的实体对象的(x,y,z)数据点。数据点仅可用于实体对象的末端部分,由于实验限制,不适用于中间部分。我的任务是首先将每个实体对象的中心线与全局轴对齐,然后比较这些实体。我也可以分别找到两端的中心线。我读过有关使用特征向量查找主轴的方法,但我并未找到中心线。

如何找到这种物体的纵向中心线?

整个洋红色的最大特征向量

红色和黄色(分开的部分的最大特征向量)

r=cov(data);  data=DTPT (86043×3)
[vec,val]=eig(r);
plot3(data(:,1),data(:,2),data(:,3),'.','markersize',1)

mu=mean(data);
d = sqrt(diag(val));
hold on;
quiver3(mu(1),mu(2),mu(3),2*vec(1,3),2*vec(2,3),2*vec(3,3), d(3), 'm','LineWidth',5);
quiver3(mu(1),mu(2),mu(3),-2*vec(1,3),-2*vec(2,3),-2*vec(3,3), d(3), 'm', 'LineWidth',5);
hold off;


indDT=1:37768; 
data1=data(indDT,:);
[v,l]=eig(cov(data1));
mu=mean(data1);
d = sqrt(diag(l));
hold on;
quiver3(mu(1),mu(2),mu(3),3*v(1,3),3*v(2,3),3*v(3,3),d(3), 'r', 'LineWidth',5);
quiver3(mu(1),mu(2),mu(3),-3*v(1,3),-3*v(2,3),-3*v(3,3),d(3),'r','LineWidth',5);
hold off;

indPT=37769:86043;
data2=data(indPT,:);
[v,l]=eig(cov(data2));
mu=mean(data2);
d = sqrt(diag(l));
hold on;
quiver3(mu(1),mu(2),mu(3),3*v(1,3),3*v(2,3),3*v(3,3),d(3), 'y','LineWidth',5);
quiver3(mu(1),mu(2),mu(3),-3*v(1,3),-3*v(2,3),-3*v(3,3),d(3),'y','LineWidth',5);
hold off;

这里是the dataMATLAB figure

0 个答案:

没有答案