我有一组3D点,我正在投影到图像平面。
我遇到了旋转矩阵的问题。 任何帮助都会很棒。 下面是我在matlab中的代码,
% adjusted plane through points XYZ=[X,Y,Z]p*3 % where p is no of points
%n*(XYZ)-d=0; Given plane parameters
-0,946467797198737 0,322785394989535 0,00288056369821191 28,3620026340107
% finding rotation matrix for [ 0 0 1]% xy plane projection
[U, S, V]= svd(n);
C= [U(:, 2: 3), n];
R= rref([C, eye(3)]);
R= R(:, 4: 6);
%测试正确的R%R * n
R * n = [-0.0000, - 0,1.0000]'
我的问题是关于标志。任何获得正确标志的方法? 我不想玩答案。(R * n)。问题是得到这样的R,它给你正确答案。
答案 0 :(得分:0)
嗯,实际上你的问题看起来可能并不那么糟糕。
或多或少,你仍然有z
- 轴的单位向量。只是继续你的计算并忽略这些细节(除非你真的知道它们如何影响你的计算,请注意,通常不准确的计算组合往往会平衡自己)。
但如果你真的想要(或需要)深入研究细节,只需要对你的计算进行微调:
>>> x= [-1e-13 1e-13 1]';
>>> x(abs(x)< 1e-12)= 0
x =
0
0
1
<强>更新强>:
您应该担心的sign
是det(R)
,因此您应该添加以下支票:
>>> if 0> sign(det(R)), R= -1* R; end