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

标签 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

我应该得到(真正的二维点)

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 声音 0 0 0 1 0 0 0 0 1]; 我得到正确的答案。 我不知道旋转或平移的错误在哪里;为什么 Pimage(:,1) 与 img(:,1) 不同。 任何帮助将不胜感激。

最佳答案

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

请记住,进行投影是 R4 -> R4 操作。如果您试图获得 R2 向量,那么您就是在尝试做其他事情(更多)。

查看更多信息 wikipedia .

如果你确实想了解详情,可以观看学习,有礼YouTube

关于matlab - 投影矩阵符号混淆(编辑标题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951414/

相关文章:

图像变形 - 凸起效应算法

azure - 如何访问 Azure 认知服务自定义视觉非美国终结点?

opencv - opencv 的某些功能在某些特定情况下显示错误

python - 如何在opencv python中的图像周围添加边框

MATLAB 组合不同维度的矩阵,填充相应索引的值

matlab - 矩阵中的前 n 行?

matlab - 如何使用MATLAB从url下载视频

arrays - 在 MATLAB matfile 中使用非零值预分配大型数组

ios - 减少在 iOS 上使用 OpenCv 的方法消耗的内存

python - OpenCV 是否具有多目标跟踪功能?