Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphics 度量三维重建_Graphics_Matlab_Computer Vision_Linear Algebra - Fatal编程技术网

Graphics 度量三维重建

Graphics 度量三维重建,graphics,matlab,computer-vision,linear-algebra,Graphics,Matlab,Computer Vision,Linear Algebra,我正在尝试从2D图像对应重建3D点。我的照相机校准过了。测试图像是棋盘格立方体,对应关系是手工挑选的。消除了径向畸变。然而,在三角测量之后,构造似乎是错误的。X和Y值似乎是正确的,但Z值大致相同,并且不沿立方体区分。三维点看起来像是沿Z轴展平的点 Z值出现了什么问题?在计算基本矩阵之前,这些点是否需要在任何点处进行归一化或从图像坐标进行更改?(如果这太模糊,我可以解释我的一般流程或详细说明部分) 更新 鉴于: x1=P1*X和x2=P2*X x1,x2为第一和第二图像点,X为3d点 然而,我发现

我正在尝试从2D图像对应重建3D点。我的照相机校准过了。测试图像是棋盘格立方体,对应关系是手工挑选的。消除了径向畸变。然而,在三角测量之后,构造似乎是错误的。X和Y值似乎是正确的,但Z值大致相同,并且不沿立方体区分。三维点看起来像是沿Z轴展平的点

Z值出现了什么问题?在计算基本矩阵之前,这些点是否需要在任何点处进行归一化或从图像坐标进行更改?(如果这太模糊,我可以解释我的一般流程或详细说明部分)

更新

鉴于:
x1=P1*X
x2=P2*X

x1
x2
为第一和第二图像点,
X
为3d点

然而,我发现
x1
与实际手工拾取的值并不接近,但
x2
实际上非常接近

如何计算投影矩阵:

P1 = [eye(3), zeros(3,1)];
P2 = K * [R, t];
更新II

优化后的校准结果(带不确定性)

-

更新III


有关更正,请参见答案。上面计算的答案使用了错误的变量/值。

可能是您的点处于退化配置中。尝试从场景中添加几个不属于立方体的点,并查看其运行情况。

需要更多信息:

  • 什么是t?对于视差来说,基线可能太小
  • x1
    x2
    之间的差异是什么
  • 您对校准的准确性有信心吗(我假设您使用了Bouguet工具箱的立体声部分)
  • 当你说这些对应是手工挑选的,你的意思是你在图像上选择了对应的点,还是你在两幅图像上使用了兴趣点检测器然后设置了对应

我相信我们可以解决这个问题:)

**注意所有参考都是Hartley和Zisserman在计算机视觉中的多视图几何

好的,所以有几个bug:

  • 在计算基本矩阵(第257-259页)时,作者提到了四个R的集合中正确的R,t对,t(结果9.19)是一个3D点位于两个摄像机前面的矩阵(图9.12,a),但没有提到如何计算。碰巧我重读了第6章,发现第6.2.3节(第162页)讨论了点的深度,结果6.1是获得正确R和t所需的方程式

  • 在第2步中,我实现了最佳三角剖分方法(算法12.1(p.318)),我有
    T2^-1'*F*T1^-1
    ,其中我需要
    (T2^-1)'*F*T1^-1
    。前者翻译-1。我想,在后者,翻译T2矩阵(再次被MATLAB挫败!)

  • 最后,我没有正确计算P1,它应该是
    P1=K*[眼睛(3),零(3,1)]。我忘了用校准矩阵K乘以


  • 希望这对未来的过路人有所帮助

    我只想过做这样的事情,从来没有真正尝试过。在没有答案的情况下,也许一些问题可以帮助你解决问题…:-)2D图像是否都具有相同的Z轴?(即:所有图像的所有摄影机方向是否平行?)?如果是这样的话,你能试着对输入的图像重新排序,看看会发生什么吗?你把结果坐标标准化了吗?你从三角测量中得到的通常是[xs,ys,z*s,s](同质坐标),所以你必须确保除以s。@Laurence Gonsalves你能再详细一点吗@kiguari是的,这些点是同质的形式(x,y,z,1)@John这是很多代码,你想看到什么具体的部分?每个2D图像都有一个“z轴”,它是垂直于2D图像的x轴和y轴的向量。这在概念上是“相机方向”,假设2D图像是照片。你有多个2D图像,对吗?它们都有相同的Z轴向量吗?也许我误解了你要解决的问题。@Laurence他们应该有相同的z轴。。。我怎么查?这与光轴/主轴相同吗?在立方体上增加了约9个点。尽管新添加的点相对于立方体的Z值有所不同,但立方体仍然看起来平坦。但是,Z值本身不随X和Y值缩放(Z值比X或Y值小约10^3)。您是否尝试使用新点(仅限这些点)计算基本矩阵?如果这样做有效,那么您可以将非立方体点替换为立方体点,重新计算F,并查看这对重建的影响。我坚持使用这种方法,因为在调试校准算法时,我曾经被立方体上点的简并性所困扰。希望这能有所帮助。嘿,jmbr,你对三角测量中的亚像素对应错误怎么看?嗨,雅各布,在与你的答案对应的帖子中看到我的评论。高偏态也困扰着我。t=[-0.8754;0.2249;-0.4279]。图像点的平均差值为:x65px,y89px。相当自信,用我的校准信息更新了问题,误差约为0.2像素。事实上,你能发布K、R、t和尽可能多的
    x1
    x2
    ?为什么偏斜为1.2584?它通常是(并且通常被假定为)0。您使用的是普通照相机吗?质量差的照相机?:)使用Microsoft LifeCam NX-6000网络摄像头,K=[fc(1),alpha_c*fc(1),cc(1);0,fc(2),cc(2);0,0,1]。我用alpha_c=0试过了。。。还是一样的结果嗯。。我明白你的问题了,这些脸应该是正交的吗?你能把你的整个剧本贴出来作为例子吗。我一直在ci公司工作
    % Focal Length:          fc = [ 699.13458   701.11196 ] ± [ 1.05092   1.08272 ]
    % Principal point:       cc = [ 393.51797   304.05914 ] ± [ 1.61832   1.27604 ]
    % Skew:             alpha_c = [ 0.00180 ] ± [ 0.00042  ]   => angle of pixel axes = 89.89661 ± 0.02379 degrees
    % Distortion:            kc = [ 0.05867   -0.28214   0.00131   0.00244  0.35651 ] ± [ 0.01228   0.09805   0.00060   0.00083  0.22340 ]
    % Pixel error:          err = [ 0.19975   0.23023 ]
    % 
    % Note: The numerical errors are approximately three times the standard
    % deviations (for reference).
    
    K =
    
      699.1346    1.2584  393.5180
             0  701.1120  304.0591
             0         0    1.0000
    
    
    E =
    
        0.3692   -0.8351   -4.0017
        0.3881   -1.6743   -6.5774
        4.5508    6.3663    0.2764
    
    
    R =
    
       -0.9852    0.0712   -0.1561
       -0.0967   -0.9820    0.1624
        0.1417   -0.1751   -0.9743
    
    
    t =
    
        0.7942
       -0.5761
        0.1935
    
    
    P1 =
    
         1     0     0     0
         0     1     0     0
         0     0     1     0
    
    
    P2 =
    
     -633.1409  -20.3941 -492.3047  630.6410
      -24.6964 -741.7198 -182.3506 -345.0670
        0.1417   -0.1751   -0.9743    0.1935
    
    
    C1 =
    
         0
         0
         0
         1
    
    
    C2 =
    
        0.6993
       -0.5883
        0.4060
        1.0000
    
    
    % new points using cpselect
    
    %x1
    input_points =
    
      422.7500  260.2500
      384.2500  238.7500
      339.7500  211.7500
      298.7500  186.7500
      452.7500  236.2500
      412.2500  214.2500
      368.7500  191.2500
      329.7500  165.2500
      482.7500  210.2500
      443.2500  189.2500
      402.2500  166.2500
      362.7500  143.2500
      510.7500  186.7500
      466.7500  165.7500
      425.7500  144.2500
      392.2500  125.7500
      403.2500  369.7500
      367.7500  345.2500
      330.2500  319.7500
      296.2500  297.7500
      406.7500  341.2500
      365.7500  316.2500
      331.2500  293.2500
      295.2500  270.2500
      414.2500  306.7500
      370.2500  281.2500
      333.2500  257.7500
      296.7500  232.7500
      434.7500  341.2500
      441.7500  312.7500
      446.2500  282.2500
      462.7500  311.2500
      466.7500  286.2500
      475.2500  252.2500
      481.7500  292.7500
      490.2500  262.7500
      498.2500  232.7500
    
    %x2
    base_points =
    
      393.2500  311.7500
      358.7500  282.7500
      319.7500  249.2500
      284.2500  216.2500
      431.7500  285.2500
      395.7500  256.2500
      356.7500  223.7500
      320.2500  194.2500
      474.7500  254.7500
      437.7500  226.2500
      398.7500  197.2500
      362.7500  168.7500
      511.2500  227.7500
      471.2500  196.7500
      432.7500  169.7500
      400.2500  145.7500
      388.2500  404.2500
      357.2500  373.2500
      326.7500  343.2500
      297.2500  318.7500
      387.7500  381.7500
      356.2500  351.7500
      323.2500  321.7500
      291.7500  292.7500
      390.7500  352.7500
      357.2500  323.2500
      320.2500  291.2500
      287.2500  258.7500
      427.7500  376.7500
      429.7500  351.7500
      431.7500  324.2500
      462.7500  345.7500
      463.7500  325.2500
      470.7500  295.2500
      491.7500  325.2500
      497.7500  298.2500
      504.7500  270.2500