ARCore中的相机校准(内参)参数

7
有没有一种类似于ARKit提供的从ARCore获取相机内参参数的方法?我尝试使用ImageMetadata中的LENS_INTRINSIC_CALIBRATION,但显然这个常量实际上不被支持(我在Pixel 2上尝试过)。

在我的情况下也是一样的。相机校准给出了一些不可靠的参数。 - nbsrujan
你能解释一下你想做什么吗?也许它只是另一个名称... - Steven Mohr
1
在任何摄影测量应用中,相机内参都是非常重要的。它包含了焦距以及与镜头和图像传感器相关的信息。 - nbsrujan
1
我正在使用自定义的计算机视觉库,基本上是在进行SfM的变体。该库需要以2x3矩阵形式提供相机内参(焦距和主点偏移)。我可以从投影矩阵中推导出近似值,但这很不方便且容易出错。苹果的ARKit正好提供了我所需的内容。 - DmitryA
@nbsrujan 我明白相机内参对于摄影测量的重要性,但这如何转化为ARCore呢?也许我应该问问DmitryA他想要实现什么... - nerk
6个回答

2
可能是可以的。但这些参数只能获取(就像在ARKit中一样)。
ARCore的类CameraIntrinsics提供了有关设备相机物理特性的信息,用于相机图像(CPU)或纹理(GPU)。CameraIntrinsics是一个长期存在的对象,并且每次调用Session.update()时,CameraIntrinsics的属性可能会更新。
public class CameraIntrinsics

enter image description here


2
据我所知,目前ARCore不支持此功能,尤其是由于焦距被锁定。建议您在ARCore的github上报告此问题,并让人们为该功能提供支持,希望它能够得到实现!

谢谢,我注意到 @nbsrujan 刚刚为此创建了一个问题。 - DmitryA
好的。您介意在此处链接问题吗?如果您觉得我有所帮助,非常感谢能被标记为答案或其他推荐。 :) - nerk
1
这是问题链接:https://github.com/google-ar/arcore-android-sdk/issues/112 - DmitryA
谢谢!@DmitryA,您可以解释一下这些数据将如何帮助您创建ARCore应用程序吗?我只是想知道您正在考虑的应用程序。例如,我理解为什么它在摄影测量中是必要的,但那似乎不像AR样式的体验...尽管我想这也许可以被制作成这样的体验? - nerk
1
我正在使用的特定第三方库需要相机校准矩阵来处理原始图像数据并构建自己的点云。然后使用ARCore呈现结果。 - DmitryA
1
@DmitryA 很有趣。我很想知道你正在构建什么! - nerk

1

1.3版本起,ARCore已经添加了相机内参。


0

此处第一步描述的启发,我尝试了几件事情,成功地找到了ARCore APK中支持设备的内在参数。您需要获取apktool并在下载ARCore APK(例如v1.2)的同一文件夹中运行此操作:

apktool -q d -s -r ARCore_1_2.apk -o ARCore_1_2

这将创建一个名为ARCore_1_2的文件夹,然后进入./lib/arm64-v8a并解压缩libdevice_profile_loader.so(例如使用7zip)到一个新文件夹中以方便操作。然后,使用文本编辑器打开新创建的文件夹中的.rodata文件。该文件的大部分内容都是格式化为XML的,只需查找您正在使用的手机名称,并在标签内找到固有参数即可。还有一些IMU校准数据和外参,但不清楚它们如何使用。

我自己还没有测试过这些参数,但会在接下来的几天内进行测试...


0

实际上,LENS_INTRINSIC_CALIBRATION在Pixel 2中是支持的。您只需要确认您的APK可以访问相机。您可以通过进入设置手动授予应用程序权限。


0

目前您可以使用投影矩阵来获取fx,fy,cx,cy。但是,畸变是无法获得的,尽管有可能图像已经被校正。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接