ARG*_*Geo 7 iphone augmented-reality scenekit swift arkit
ARKit 2.0在帧与帧之间更新ARCamera的许多内在(和外在)参数.我想知道它是否也考虑Radial Lens Distortion到了(比如在AVCameraCalibrationData课堂上ARKit没有使用),并为后面的iPhone和iPad相机适当修复视频帧的失真(distort/ undistort操作)?
var intrinsics: simd_float3x3 { get }
Run Code Online (Sandbox Code Playgroud)
众所周知,Radial Lens Distortion当我们将未失真的3D物体放置在由镜头真实世界场景扭曲时,会极大地影响6自由度姿态估计精度.
var lensDistortionLookupTable: Data? { get }
/* A map of floating-point values describing radial */
/* lens distortions in AVCameraCalibrationData class */
Run Code Online (Sandbox Code Playgroud)
如果Lens Distortion's math在ARKit 2.0中可通过API获得,我可以在哪里找到它?
尽管没有明确说明,但我可以肯定ARKit正在纠正非线性镜头失真。镜头失真(和反失真)查找表存在于iOS11中,可通过来使用AVCameraCalibrationData,但ARKit不会公开它们,大概是因为您已经在使用校正坐标,因此不需要它们。
每个设备型号的失真模型参数是否相同(即每个iPhone 7的值完全相同),这是一个有趣的问题。我无法使用同一型号的多部手机,但是对于有此能力的人来说,这应该不难发现。
例如:https : //github.com/eugenebokhan/ARKit-Multiplayer
QR标记检测

现在,借助Apple的Vision,可以识别摄像机视频源中的QR标记并在视场中对其进行跟踪。该框架为我们提供了屏幕坐标系中QR标记方形角的坐标。
QR标记姿势估计
检测到QR标记后,您可能要做的下一件事是从中获取相机的姿势。
要执行QR标记姿态估计,您需要了解相机的校准参数。这是相机矩阵和失真系数。每个摄像机镜头都有独特的参数,例如焦距,主点和镜头畸变模型。查找相机固有参数的过程称为相机校准。相机校准过程对于增强现实应用非常重要,因为它描述了输出图像上的透视变换和镜头失真。为了在增强现实中获得最佳的用户体验,应该使用相同的透视投影来完成增强对象的可视化。
最后,校准后得到的是相机矩阵:一个具有焦距和相机中心坐标(又称固有参数)的3x3元素的矩阵,以及失真系数:一个5个元素或更多的矢量,可以对相机产生的失真。大多数iDevice的校准参数几乎相同。
利用标记角的精确位置,我们可以估计相机和3D空间中标记之间的转换。将该操作称为根据2D-3D对应关系的姿势估计。姿势估计过程会在相机和物体之间找到一个欧几里得变换(仅包含旋转和平移分量)。
C用于表示相机中心。P1-P4点是世界坐标系中的3D点,而p1-p4点是它们在相机图像平面上的投影。我们的目标是使用本征矩阵和图像平面上的已知点投影(P1-P4),找到3D世界中已知标记位置(p1-p4)和相机C之间的相对转换。
OpenCV函数用于计算QR标记变换,以使其最小化重投影误差,即观察到的投影的imagePoints与投影的objectPoints之间的距离平方的总和。估计的变换由旋转(rvec)和平移分量(tvec)定义。这也称为欧几里得变换或刚性变换。最后,我们得到旋转四元数和QR标记的平移矩阵。
集成到苹果的ARKit中
最后一部分是将所有关于QR标记姿势的信息集成到ARKit创建的3D场景中。ARKit使用视觉惯性里程表(VIO)来准确跟踪周围的世界。VIO将相机传感器数据与CoreMotion数据融合在一起。这两个输入使设备可以高精度地检测其在房间内的移动方式,而无需任何额外的校准。所有渲染内容均基于Apple的Metal和其上方的Apple SceneKit。
为了以正确的方式在我们的QR标记上渲染SceneKit的节点,我们需要根据从OpenCV获得的四元数和平移矩阵创建QR标记的模型矩阵。下一步是将QR标志的模型矩阵乘以SceneKit场景虚拟相机的变换矩阵。结果,我们可以看到一个自定义节点(我们项目中的“轴”节点),该节点重复了现实世界中所有QR标记的移动,而在iPhone摄像头的视场中,如果不是,它将保留在最后更新的位置位置,以便我们可以对其进行检查。
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |