项目说明:使用 AprilTag 进行相机的参数标定
更新日期:2024年11月22日(高宇)
目前是第一个测试版本,欢迎大家使用,如果在使用过程中遇到各种问题可以提在 issue,也可以私信我哈~~
- 拍摄一组 无畸变 多视角相机在共视域内包含 LAMPS 组专用 AprilTag Cube 的图片;
- 提供每张图片对应的相机内参,存为 json 文件,具体的格式说明见下文的使用细节;
- 算法会估计以 AprilTag Cube 几何中心为世界坐标系原点的相机外参,估计结果为 Nx4x4 的外参 RT 矩阵,N为相机数量,包括 c2w 和 w2c 两种类型。
- 拍摄一组 无畸变 多视角相机在共视域内包含 LAMPS 组专用 AprilTag Cube 的图片;
- 为每个相机拍摄一张包含3个面 LAMPS 组专用 AprilTag Cube 的 无畸变 图片;
- 算法会估计以 AprilTag Cube 几何中心为世界坐标系原点的相机外参,估计结果为 Nx3x3 的内参矩阵和 Nx4x4 的外参矩阵,N为相机数量,包括 c2w 和 w2c 两种类型。
自行解决(这你还不会?你是偷进LAMPS的吗?)
具体的配置在 main.py 文件中主执行函数的 config 里,按自己的需要进行修改,目前支持如下项目:
- extrinsics_root: 包含 AprilTag 的图片的共视域图像,如果不需要,设为None;
- intrinsics_root: 包含 AprilTag 的图片的共视域图像,如果不需要,不需要设为None;
- reproj_save_path: 重投影误差估计的投影点可视化结果存储路径;
- param_save_path: 算法输出结果保存文件的路径,输出结果文件名称为 cam_params.json;
- tag_cube: AprilTag 使用的类型,如果使用组内的 Cube,设为"LAMPS";(目前不支持修改)
- tag_size: AprilTag Cube 使用的尺寸,单位为 米(m);(尺寸包含AprilTag的白色边界)
- intrinsics: 是否估计相机内参,设为 True 或者 False;
- extrinsics: 是否估计相机外参,设为 True 或者 False;
- intrinsics_path: 如果 intrinsics 设置为False,需要提供该项,精确到具体的 json 文件路径;
- total_step: 训练的总步数;
- learning_rate: 学习速率;
- device: 训练设备,可设为cpu或者cuda;
- 修改完毕上面的配置项后,直接使用:
python main.py
- 如果只估计外参,需要提供的相机内参 json 格式:
# 示例:
{
"图片名称1": {
"intrinsic": [
[
625.8423389654866,
0,
644.4809943246738
],
[
0,
624.9033528957034,
360.8399595884392
],
[
0,
0,
1
]
]},
"图片名称2": {"intrinsic":[....]}
...
}
- 输出的相机参数保存文件 json 格式:
{
"图片名称1": {
"intrinsic": [
[
625.8423389654866,
0,
644.4809943246738
],
[
0,
624.9033528957034,
360.8399595884392
],
[
0,
0,
1
]
],
"extrinsics_w2c": [
[
0.005854025483131409,
0.013926953077316284,
0.9998858571052551,
-0.04200747609138489
],
[
0.7540636658668518,
0.6566612720489502,
-0.013561099767684937,
-0.18132299184799194
],
[
-0.656775176525116,
0.7540570497512817,
-0.006657660007476807,
0.8428143858909607
]
],
"extrinsics_c2w": [
[
0.005854025483131409,
0.7540636658668518,
-0.656775176525116,
0.6905145645141602
],
[
0.013926953077316284,
0.6566612720489502,
0.7540570497512817,
-0.5158773064613342
],
[
0.9998858571052551,
-0.013561099767684937,
-0.006657660007476807,
0.045154914259910583
],
[
0.0,
0.0,
0.0,
1.0
]
]
},
"图片名称2": {"intrinsic":[....],
"extrinsic_c2w":[....],
"extrinsic_c2w":[....]}
...
}