【发布时间】:2018-01-11 16:06:36
【问题描述】:
我正在与ARKit 合作开展一个项目,我正在尝试对ARFrame.capturedImage 进行透视校正,以将一张纸定位在检测到的平面上,以便将其输入CoreML期望从头顶直接获取图像的模型。
ARKit 为我提供了相对于平面的设备方向(ARCamera.transform、ARCamera.eulerAngles 和 ARCamera.projectionMatrix 看起来很有希望)。
所以我有相机的方向(我知道平面是水平的,因为这就是 ARKit 现在检测到的全部).. 但我不太清楚如何创建一个 GLKMatrix4 来执行正确的透视校正。
最初我认为它就像通过 ARCamera.projectionMatrix 的倒数进行转换一样简单,但这似乎根本不起作用;我不完全确定该矩阵描述的是什么。它似乎并没有根据设备方向发生太大变化。
我尝试使用GLKMatrix4Rotate 和滚动/俯仰/偏航创建我自己的矩阵,但没有成功。我什至无法使用单个旋转轴。
我发现 GLKMatrix4MakePerspective、GLKMatrix4MakeOrtho 和 GLKMatrix4MakeFrustum 似乎在进行透视变换,但我不知道如何获取我拥有的信息并将其转换为这些函数的输入以使正确透视变换。
编辑:
作为一个更好地解释我想要做什么的例子,我使用了 Photoshop 中的Perspective Warp 工具来转换示例图像;我想知道的是如何根据我掌握的有关场景的信息提出一个执行类似变换的矩阵。
【问题讨论】:
标签: ios opengl-es 3d perspectivecamera arkit