ARKit 透视校正

Bra*_*yer 5 3d opengl-es perspectivecamera ios arkit

我正在处理一个项目,ARKit我正在尝试对 进行透视校正,ARFrame.capturedImage以将一张纸放在检测到的平面上,这样我就可以将其输入到一个CoreML模型中,该模型期望从头顶上直接拍摄图像。

ARKit给我相对于平面设备方向(ARCamera.transformARCamera.eulerAngles,和ARCamera.projectionMatrix所有看好)。

所以我有相机的方向(我知道平面是水平的,因为ARKit现在所有检测都可以检测到)..但我无法弄清楚如何创建一个GLKMatrix4将执行正确透视校正的。

最初我认为它会像通过 的倒数转换一样简单,ARCamera.projectionMatrix但这似乎根本不起作用;我不完全确定该矩阵描述的是什么......它似乎没有根据设备方向发生太大变化。

我试过使用GLKMatrix4Rotate和滚动/俯仰/偏航创建我自己的矩阵,但这不起作用..我什至无法使用单个旋转轴工作。

我发现GLKMatrix4MakePerspective, GLKMatrix4MakeOrtho, andGLKMatrix4MakeFrustum似乎可以进行透视变换,但我不知道如何获取我拥有的信息并将其转换为这些函数的输入以进行正确的透视变换。

编辑: 作为一个更好地解释我想要做什么的例子,我使用了Perspective WarpPhotoshop 中的工具来转换示例图像;我想知道的是如何提出一个矩阵,根据我对场景的了解,该矩阵将执行类似的变换。

在此处输入图片说明

Bra*_*yer 3

我最终使用了iOS11Vision的矩形检测,然后将其输入到Core Image的CIPerspectiveCorrection过滤器中。