投影矩阵符号混淆(编辑标题)

时间:2011-05-10 14:14:01

标签: matlab image-processing computer-vision

唐我编辑了我的问题。  我正在将Wxyz投影到图像(u,v)并得到一些错误的结果。我无法弄清楚错误在哪里。请帮助一些人弄明白。

假设:

Wxyzz =
       386.06       197.02      -1821.8            1
       407.32         -108      -1859.1            1
       4.9764       290.92      -1531.2            1
       103.39      -233.07      -1643.2            1
        189.7       320.19      -1667.9            1
       76.279        147.9      -1597.2            1
       47.798      -319.51      -1605.8            1
       164.74       -223.1      -1688.6            1
       482.06      -251.66      -1921.2            1
       226.42      -213.27      -1733.6            1
Wxyz=Wxyz' %';
%# intrinsic

fu = 2640; fv =2640; uo= 1514; vo = 994;

A= [ fu 0  uo 0
      0  fv  vo 0
      0  0  1    0
      0 0   0   1];

Exterior=[-6.6861,12.6118,-8.0660,[-0.4467,-0.3168,0.2380]*pi/180];%# deg 2 rad
%#data
X0=Exterior(1);
Y0=Exterior(2);
Z0=Exterior(3);
ax=Exterior(4);
by=Exterior(5);
cz=Exterior(6);
%#Rotation in X

 Rx = [1  0        0
        0  cos(ax)  -sin(ax)
        0  sin(ax)  cos(ax)];


%#Rotation in Y    
Ry = [cos(by)  0  sin(by)
        0        1  0
        -sin(by) 0  cos(by)];


%#Rotation in Z        
Rz = [cos(cz) -sin(cz) 0
        sin(cz) cos(cz)  0
        0       0        1];
R=Rx*Ry*Rz;

T=[X0;Y0;Z0];
Extrinsic= R';
Extrinsic(:,4) = -(R')* (T);
Extrinsic(4,:)   =  [0 0 0 1]


PImage =  A* Extrinsic* Wxyz;  

%#Obtain the X's
PImage(1 ,:) = PImage(1 ,:) ./ PImage(3 ,:);
%#Obtain the Y's
PImage(2 ,:) = PImage(2 ,:) ./ PImage(3 ,:);

我正在

PImage =

       955.93       707.43      -1814.4            1
       939.75       1147.6      -1854.2            1
       1506.3       490.36        -1521            1
       1352.7       1370.2      -1637.6            1
       1213.9       485.04      -1658.4            1
       1389.7       749.08      -1588.5            1
       1440.9       1521.6      -1600.6            1
       1261.2       1344.2      -1683.2            1
       857.22         1340      -1917.8            1
       1173.9       1319.9      -1728.5            1

我应该得到(真正的2分)

img =

       2072.8       706.69
       2088.9       1146.9
       1522.6        489.6
       1676.1       1369.5
       1814.9        484.3
       1639.2       748.35
       1587.9       1520.9
       1767.6       1343.5
       2171.4       1339.3
       1854.9       1319.2

如果我使用  A = [ - fu 0 uo 0           0 fv vo 0           0 0 1 0           0 0 0 1]; 我得到了核心答案。 我无法弄清楚旋转或翻译的错误在哪里;为什么Pimage(:,1)与img(:,1)不相同。 任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你完成了轮换,你已经完成了转换。 您需要做的是投影!现在我不知道你究竟想要完成什么,但我没有在任何地方看到投影矩阵。所以这是你需要解决的第一件事。

请记住,做一个投影是一个R4 - > R4操作。如果您正在尝试获取R2矢量,那么您正尝试执行其他操作(更多)。

wikipedia了解详情。

如果您真的想了解详细信息,可以观看并了解YouTube

的礼貌