代码之家  ›  专栏  ›  技术社区  ›  Ja_cpp

相机系统的起源到底在哪里?

  •  0
  • Ja_cpp  · 技术社区  · 8 年前

    当我们计算相机相对于像标记或三维模型等原语的姿态时,通常会精确地知道原语的原点,比如棋盘或标记的原点(蓝色)。

    enter image description here

    现在的问题是相机的原点在哪里(黑色)姿势的矢量平移是根据哪个参考来表达的?我们如何确定它在哪里?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Yves Daoust    8 年前

    光学中心是在光轴上(理想地它投射到图像的中心),在传感器的距离等于焦距,它可以以像素单位表示(知道像素大小)。

    你可以看到光轴在哪里(它是透镜的对称轴),但是光学中心在相机的某个地方。

        2
  •  2
  •   Chungzuwalla    8 年前

    OpenCV使用 pinhole camera model 给相机做模型。OpenCV中用于摄像机校准和其他目的的三维坐标系的原点是摄像机本身,或者更具体地说,是摄像机模型的针孔它是所有进入相机的光线汇聚到一个点的点,也被称为“投影中心”。

    真正带镜头的相机实际上没有针孔。但通过分析相机拍摄的图像,可以计算出一个针孔模型,该模型非常接近真实相机的光学特性。这就是opencv在校准相机时所做的。正如@yves daoost所说,这个模型的针孔(以及由此产生的三维坐标原点)将是相机内部某处的一个三维点(或者可能在它的后面,取决于它的焦距),但是opencv不可能准确地说出它与相机体的相对位置,因为opencv对你的相机或它的传感器的物理尺寸或形状一无所知。

    即使你知道原点与你的相机的身体的确切位置,它可能也没有多大用处,因为你不能对相机内的一个点进行任何物理测量而不把它拆开!实际上,你可以在opencv中做任何你需要做的事情,而不需要知道这个细节。