【问题标题】:Camera Intrinsic Matrix for DJI Phantom 4适用于 DJI Phantom 4 的相机内在矩阵
【发布时间】:2017-12-19 23:49:27
【问题描述】:

我正在尝试估计 DJI Phantom 4 无人机的固有矩阵 K 的值。我知道这个矩阵的形式是:

但我似乎无法正确使用单位。查看https://www.dji.com/phantom-4/info#specs 的规格,我发现焦距为 8.88(不说单位...),图像尺寸为 4000x3000。有了这些,K 会是什么样子?

*PS,我正在缩小图像以使其更小。这会影响我应该用于 openCV 的 K 矩阵吗?

【问题讨论】:

  • 我在您链接的页面上没有找到焦距(我按Ctrl+Fed 输入了“focal”这个词)。我错过了什么?

标签: opencv computer-vision camera-calibration


【解决方案1】:

OP 链接到的页面列出了 94 度的 FOV。图像宽度为 4000 像素,这对应于焦距

f = (4000 / 2) pixels / tan(94 / 2 degrees) = 1865 pixels

没有任何其他校准数据,因此应该使用以下形式的估计相机矩阵:

K = [ [1865, 0   , 2000],
      [0   , 1865, 1500],
      [0   , 0   , 1   ] ]   

【讨论】:

    【解决方案2】:

    OP,您可能混淆了 P4 和 P4Pro 的规格,它们具有不同的传感器和镜头。 P4Pro 而非 P4 的焦距为 8.8mm。 P4的焦距为3.61mm

    如果您确实使用的是 P4 中的图像,那么 Francesco 的答案是正确的。

    但是,如果您实际使用的是 P4Pro 中的图像,则需要使用以下值:

    f = (4864 / 2) pixels / tan(84 / 2 degrees) = 2701 pixels
    
    K = [ [2701, 0   , 2432],
          [0   , 2701, 1824],
          [0   , 0   , 1   ] ]
    




    以下是 P4 和 P4Pro 传感器/镜头的相关规格,供任何可能找到此答案的人参考:

    • Phantom 4:

      • 传感器尺寸:1/2.3" (6.17mm x 4.55mm)
      • 焦距(实际):3.61mm
      • 焦距(相当于35mm):20mm
      • 视场:94°
      • 图像尺寸:4000×3000 像素
      • 视频帧大小
        • 超高清:4096×2160 像素
        • 4K:3840×2160 像素
        • 2.7K:2704×1520 像素
        • 全高清:1920×1080 像素
        • 高清:1280×720 像素
    • Phantom 4 Pro:

      • 传感器尺寸:1" (12.8mm x 9.6mm)
      • 焦距(实际):8.88mm
      • 焦距(相当于35mm):24mm
      • 视场角:84°
      • 图像尺寸
        • 3:2 纵横比:5472×3648 像素
        • 4:3 纵横比:4864×3648 像素
        • 16:9 纵横比:5472×3078 像素
      • 视频帧大小
        • C4K:4096×2160 像素
        • 4K:3840×2160 像素
        • 2.7K:2720×1530 像素
        • 全高清:1920×1080 像素
        • 高清:1280×720 像素

    【讨论】:

      【解决方案3】:

      我认为以毫米为单位的焦距工作要好得多

      https://www.dxomark.com/Cameras/DJI/Phantom4-Pro---Specifications

      对于 P4 专业版:

      13.2 x 8.8  so pixel size is = 0.00241 or 2.41 um focal length is 8.8mm
      

      所以以像素为单位的焦距 = 8.8 / 0.00241 = 3684.6 像素

      顺便在图片元数据中,有一个字段:

      CalibratedFocalLength 3666.666504(使用exiftool找到)所以我认为K应该是

      K = [ [3666.6, 0   , 2432],
          [0   , 3666.6, 1824],
          [0   , 0   , 1   ] ]
      

      【讨论】:

      • 刚刚使用 opencv np.array([[3.62184433e+03, 0.00000000e+00, 2.43666494e+03], [0.00000000e+00, 3.61968333e+03, 1.87045205e+ 03], [0.00000000e+00, 0.00000000e+00, 1.00000000e+00]])
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多