s-l*_*low 10 opencv computer-vision 3d-reconstruction camera-calibration
有许多关于从已知内部校准的立体视图进行3D重建的帖子,其中一些是非常好的.我已经阅读了很多这些内容,根据我所阅读的内容,我正在尝试使用下面的管道/算法来计算我自己的3D场景重建.我将列出方法,然后在底部询问具体问题.
0.校准你的相机:
CalibrateCamera()和棋盘程序,但是这个功能也包括在Matlab的摄像机标定工具箱.OpenCV例程似乎运行良好.1.基本矩阵F:
findFundamentalMat()来获得F,它提供了许多选项方法(8点算法,RANSAC,LMEDS).x'Fx = 0其中x'和x是(x, y)齐次坐标中的原始图像点对应关系,(x, y, 1)并且三个向量中的一个被转置,以便乘法有意义.每个对应关系越接近于零,越好的F就越服从它的关系.这相当于检查派生的F实际从一个图像平面映射到另一个图像平面的程度.我使用8点算法获得~2px的平均偏差.2.基本矩阵E:
3.对E的内部约束:
USV.t那么它的奇异值应该是= a, a, 0.S的前两个对角元素应该相等,第三个零.E_new = U * diag(1,1,0) * V.t当然可以保证服从约束.你基本上人为地设置了S =(100,010,000).4.全相机投影矩阵:
x = PX关系.此外,P = K[R|t]因此K_inv.P = [R|t](相机校准已被删除).[I|0]P 2(不包括K)R|tU*W*V.t和U*W.t*V.t)和两种计算t的方法(±第三列的U),这意味着有四种组合的Rt,其中只有一个是有效的.5.三维三角形
问题:
x'Ex = 0使用归一化图像对应测试E时,该映射中的典型误差大于标准化坐标本身的100%.测试E是否xEx = 0有效,如果是,那么错误的跳跃来自哪里?\n\n\n当使用 RANSAC 时,我的基本 matr1ix 估计中的误差明显比 8pt 算法更严重,\nx 和 x' 之间的映射中的 \xc2\xb150px。这让我深感担忧。
\n
使用8pt算法并不排除使用RANSAC原理。\n直接使用8pt算法时使用哪些点?你必须自己选择8(好)分。
\n\n理论上,您可以从任何点对应关系计算基本矩阵,并且通常会得到退化基本矩阵,因为线性方程不是独立的。另一点是,8pt 算法使用超定线性方程组,因此单个异常值将破坏基本矩阵。
\n\n您是否尝试过使用 RANSAC 结果?我敢打赌它代表了 F 的正确解决方案之一。
\n\n\n\n\n我的 F 矩阵显然是准确的(与典型坐标值相比,映射中的偏转为 0.22%),但是当使用归一化图像对应测试 E 针对 x'Ex = 0 时,映射中的典型误差 >100%标准化坐标本身。针对 xEx = 0 测试 E 是否有效?如果有效,错误跳转从何而来?
\n
同样,如果 F 是退化的,则 x' F x = 0 可以对于每个点对应。
\n\nE不正确的另一个原因可能是相机的切换(K1T * E * K2而不是K2T * E * K1)。请记住检查:x'Ex = 0
\n\n\n\n\n“强制执行内部约束”对我来说仍然很奇怪 - 仅从原始分解的一部分制造一个新的基本矩阵怎么可能有效?
\n
Hartley 和 Zisserman 的“计算机视觉中的多视图几何”对此进行了解释。据我所知,这与 F 的弗罗贝尼乌斯范数的最小化有关。
\n\n你可以Google一下,里面有pdf资源。
\n\n\n\n\n是否有比计算 P 和三角测量一些归一化坐标更有效的方法来确定使用 R 和 t 的组合?
\n
据我所知没有。
\n\n\n\n\n我的最终重投影误差是 720p 图像中的数百个像素。我可能会在校准、确定 P 矩阵或三角测量中遇到问题吗?
\n
您的刚体变换 P2 不正确,因为 E 不正确。
\n| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |