我正在使用 ARKit
进行一个项目,我正在尝试对 ARFrame.capturedImage
进行透视校正,以将一张纸放在检测到的平面,因此我可以将其输入 CoreML
模型,该模型期望从正上方拍摄图像。
ARKit
为我提供了相对于平面的设备方向(ARCamera.transform
、ARCamera.eulerAngles
和 ARCamera.projectionMatrix
看起来很有希望)。
所以我知道了相机的方向(我知道飞机是水平的,因为这就是 ARKit
现在检测到的所有内容)。但是我不太清楚如何创建一个 GLKMatrix4
将执行正确的透视校正。
最初我认为它会像通过 ARCamera.projectionMatrix
的逆转换一样简单,但这似乎根本不起作用;我不完全确定该矩阵描述的是什么。它似乎不会根据设备方向发生太大变化。
我已经尝试使用 GLKMatrix4Rotate
和 roll/pitch/yaw 创建我自己的矩阵,但是没有用。我什至不能让它与单个旋转轴一起工作。
我发现 GLKMatrix4MakePerspective
、GLKMatrix4MakeOrtho
和 GLKMatrix4MakeFrustum
似乎可以进行透视变换,但我不知道如何获取这些信息我将其转换为这些函数的输入,以进行适当的透视转换。
编辑:
为了更好地解释我正在尝试做的事情,我使用了 Photoshop 中的 Perspective Warp
工具来转换示例图像;我想知道的是如何提出一个矩阵,根据我所掌握的场景信息执行类似的变换。
最佳答案
我最终使用了 iOS11 Vision
的矩形检测然后送入Core Image's CIPerspectiveCorrection
filter .
关于ios - ARKit 透视校正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494586/