首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相机本质分辨率与真实屏幕分辨率

相机本质分辨率与真实屏幕分辨率
EN

Stack Overflow用户
提问于 2021-03-31 19:12:15
回答 1查看 703关注 0票数 3

我正在编写一个ARKit应用程序,我需要使用相机的姿势和内在的三维重建。

ARKit返回的相机Intrinsics矩阵似乎使用了与移动屏幕分辨率不同的图像分辨率。下面是这个问题的一个例子

由ARKit返回的本质矩阵是

[[1569.249512, 0, 931.3638306],[0, 1569.249512, 723.3305664],[0, 0, 1]]

而输入图像分辨率为750 (宽)x 1182 (高度)。在这种情况下,主要的观点似乎是不可能的图像。理想情况下,它应该靠近图像中心。因此,上述固有矩阵可能是使用1920年(宽度)x 1440 (高度) 返回的图像分辨率,与原始图像分辨率完全不同。

问题如下:

  • 返回的相机本质是否属于1920x1440图像分辨率?
  • 如果是,如何获得表示原始图像分辨率(即750x1182 )的内在矩阵?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-06 13:32:42

本质3x3矩阵

本质摄像机矩阵在二维摄像机平面和三维世界坐标空间之间进行转换。下面是一个内在矩阵的分解,其中:

  • fxfy是以像素为单位的焦距
  • xOyO是以像素为单位的主点偏移量
  • s是一个轴斜

根据苹果公司的文件:

fx和fy值是像素焦距,对于平方像素是相同的。值ox和oy是图像帧左上角主点的偏移量。所有的值都以像素表示。

所以让我们来看看你的数据是什么:

代码语言:javascript
复制
[1569,     0,    931]
[   0,  1569,    723]
[   0,     0,      1] 
  • fx=1569fy=1569
  • xO=931yO=723
  • s=0

若要将已知的焦距(以像素为单位)转换为mm,请使用以下表达式:

代码语言:javascript
复制
F(mm) = F(pixels) * SensorWidth(mm) / ImageWidth(pixels)

点分辨率与像素分辨率

看看这个职位,找出什么是点雷兹和什么是像素。

让我们探讨一下在使用iPhoneX数据时什么是什么。

代码语言:javascript
复制
@IBOutlet var arView: ARSCNView!

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
        
    let imageRez = (self.arView.session.currentFrame?.camera.imageResolution)!
    let intrinsics = (self.arView.session.currentFrame?.camera.intrinsics)!
    let viewportSize = self.arView.frame.size
    let screenSize = self.arView.snapshot().size
                    
    print(imageRez as Any)
    print(intrinsics as Any)
    print(viewportSize as Any)
    print(screenSize as Any)
}

苹果文档:

imageResolution实例属性描述capturedImage缓冲区中的图像,该缓冲区在相机设备的本机传感器方向中包含图像数据。若要转换图像坐标以匹配该图像的特定显示方向,请使用viewMatrix(for:)或projectPoint(_:orientation:viewportSize:)方法。

iPhone X imageRez (宽径比为4:3)。

这些长宽比值对应于摄像机传感器的值:

代码语言:javascript
复制
(1920.0, 1440.0)

iPhone X intrinsics

代码语言:javascript
复制
simd_float3x3([[1665.0, 0.0, 0.0],     // first column
               [0.0, 1665.0, 0.0],     // second column
               [963.8, 718.3, 1.0]])   // third column

iPhone X viewportSize (screenSize的第九部分):

代码语言:javascript
复制
(375.0, 812.0)

iPhone X screenSize (在技术规范中声明的决议):

代码语言:javascript
复制
(1125.0, 2436.0)

注意,RealityKit的ARView没有ARView方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66893907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档