当前位置: 首页 > 知识库问答 >
问题:

摄像机投影矩阵正确重投影但提取不正确的本征值

终弘厚
2023-03-14

我想在图像空间中把3D点转换成2D点。根据hartley和zisserman的《多视图几何学》一书,我们用DLT计算摄像机射影矩阵只需要6个点,我做到了。有了矩阵,我能够准确地重新投影点。

虽然投影矩阵工作正常,但从投影矩阵中提取的固有参数却不正常,每次都相差很小mm。

下面是我能够提取的内在参数的示例

10502.9 , -257.128 , 1831.12 

0      ,  10425.8  ,  -390.996

0      ,   0     , 1        

谢谢你。

共有1个答案

居乐池
2023-03-14

你对焦距的计算是一个一级近似,因为它忽略了非线性畸变。此外,你的结果有一个相当大的对角线偏离值(-257.1,或约2.5%的焦距),这看起来很可疑。

六分只是最低限度。你通常遵循一个校准程序,自动检测和匹配图像中已知几何形状的校准目标(又称“钻机”)上的大量点,例如平面棋盘格。这样做的效果是在最小二乘意义上“平均掉”错误。校准优化器通常还将使用robustifier来(试图)删除或降低错误点检测/匹配(“离群值”)的权重。该程序适合通常包括非线性失真项的透镜模型。

您可能希望查看其他答案,以了解有关适当过程的更多细节。

 类似资料:
  • 问题内容: 我试图在OpenGL中使用gluUnProject,首先我需要获取projectoin,model_view和viewort矩阵。根据我在网上找到的例子 但是我收到错误消息“ ValueError:glGetFloatv需要1个参数(pname),收到2:(GL_PROJECTION_MATRIX,[])” 那么,我应该使用什么来获取这些矩阵? 问题答案: 也许: 之后在变量中应该是投

  • 本章节主要给大家引入视图矩阵和投影矩阵两个新的概念,如果你没有图形学基础,对这两个概念暂时还没有认知,也没有关系。通过前面的学习相信你对平移、旋转等矩阵有了一定的认知,至于投影和视图矩阵和平移、旋转等模型矩阵一样也会对WebGL顶点进行坐标变换,至于如何变换下面会逐步讲解。 在学习本章节之前,如果你对Three.js已经有了一定的了解,可以尝试从WebGL视图矩阵和投影矩阵的角度去深入理解Thre

  • 针对不同应用的三维场景需要使用不同的投影方式,比如机械、工业设计领域常常采用正投影(平行投影), 大型游戏场景往往采用透视投影(中心投影)。为了完成三维场景不同的投影方式,three.js封装WebGL API和相关算法,提供了正投影相机OrthographicCamera和透视投影相机PerspectiveCamera。 正投影和透视投影简单解释 下面对正投影相机和透视投影相机的投影算法进行简单

  • 举个简单的例子来说明正交投影与透视投影照相机的区别。使用透视投影照相机获得的结果是类似人眼在真实世界中看到的有“近大远小”的效果(如下图中的(a));而使用正交投影照相机获得的结果就像我们在数学几何学课上老师教我们画的效果,对于在三维空间内平行的线,投影到二维空间中也一定是平行的(如下图中的(b))。 (a)透视投影,(b)正交投影 那么,你的程序需要正交投影还是透视投影的照相机呢? 一般说来,对

  • 我有一个基本的OpenGL应用程序,我想使用我的投影矩阵。 这是我的矩阵: (WorldCoordinates是Matrix4结构,它只包含一个名为m的变量,即浮点[4][4])(宽度和高度是两个s)。然后,我使用以下方法将此坐标应用于我的<code>顶点 (Shader是一个类,并且有一个绑定()方法,它只是glUseProgram)。 这是我的顶点着色器GLSL 使用这个,它不起作用。但将gl

  • 我制作了一个简单的OpenGL程序,在屏幕上绘制2D纹理。当你调整窗口大小时,它不能正确调整,所以要修复这个问题,我只需要再次运行投影矩阵代码: 但是,运行这段代码会扭曲图像。根据我的理解,为了使我能在屏幕上画出类似2D的效果,我的纹理是用正投影矩阵绘制的,这意味着有一个平面与窗口或类似我所画的东西“平行”。当我试图重新调整它以适应新的窗口大小时,它无法正确调整。这段代码出了什么问题?