使用选定的地标进行Procrustes Analysis

时间:2018-12-27 03:13:16

标签: matlab computational-geometry

背景

我要相对于平均形状(也是3D)对齐由地标(3D点)表示的一组形状。

平均形状的尺寸为10x3,其中10是形状中的界标数量,而3是尺寸。

如果要使用所有10个界标来确定刚性变换,则可以使用Matlab的[d,Z,transform] = procrustes(X,Y)函数,它可以正常工作。

但是,我不想使用所有10个界标来确定转换,因为这些不稳定因素(即我不希望不稳定确定转换)。

问题:我想使用地标1-2和5-10来确定转换,但是不知道如何使用procrustes函数进行设置。

我不希望使用地标3和4来确定转换。

这是我尝试过的。该代码以Matlab提供的procrustes函数的演示为基础

% X and Y are 10x3 matrices, where X = reference shape and Y = Target shape. | is the transformed shape
rng('default')
n = 10;  
X = normrnd(0,1,[n 3]); % Reference
S = [0.5 -sqrt(3)/2; sqrt(3)/2 0.5];
Y = normrnd(0.5*X*S+2,0.05,n,3); % Target
[d,Z1,transform] = procrustes(X,Y);

% My first solution (???) is to keep 3rd and 4th rows of the matrix as zero, since these are unstable points for me.

X_red = X;
X_red(3:4,:) = 0; % New reference
[d,Z2,New_transform] = procrustes(X_red,Y);
New_Transformed = transform.b*Y*transform.T + transform.c;

您能说明一下这是否对您有意义吗?我只是将不需要的界标设为零-但我认为这可能会使转换变得混乱。

替代我也可以使Y的界标3和4等于零,仅用于确定转换的步骤,这对我来说更有意义。

请注意,确定变换后,我想将变换应用于所有10个界标(包括我未用于确定变换的2个界标)。

不胜感激的讨论

0 个答案:

没有答案