colmap的几种相机类型和内外参取得方法

colmap的相机类型可以参考models.h文件。

主要有以下几种相机类型:

SimplePinhole:

内参格式:f, cx, cy

实际用的时候:fx=fy=f


Pinhole:

内参格式:fx, fy, cx, cy

其他可以自行查看models.h文件。

内参存放在images.bin, 外参存放在cameras.bin中

python 复制代码
def read_colmap(path):
    try:
        cameras_extrinsic_file = os.path.join(path, "sparse/0", "images.bin")
        cameras_intrinsic_file = os.path.join(path, "sparse/0", "cameras.bin")
        cam_extrinsics = read_extrinsics_binary(cameras_extrinsic_file)
        cam_intrinsics = read_intrinsics_binary(cameras_intrinsic_file)
    except:
        cameras_extrinsic_file = os.path.join(path, "sparse/0", "images.txt")
        cameras_intrinsic_file = os.path.join(path, "sparse/0", "cameras.txt")
        cam_extrinsics = read_extrinsics_text(cameras_extrinsic_file)
        cam_intrinsics = read_intrinsics_text(cameras_intrinsic_file)

extr = cam_extrinsics[key]
intr = cam_intrinsics[extr.camera_id]

R = qvec2rotmat(extr.qvec)
t = np.array(extr.tvec)

#world to camera
T = np.zeros((4, 4))
T[:3, :3] = R
T[:3, 3] = t
T[3, 3] = 1.0

def qvec2rotmat(qvec):
    return np.array([
        [1 - 2 * qvec[2]**2 - 2 * qvec[3]**2,
         2 * qvec[1] * qvec[2] - 2 * qvec[0] * qvec[3],
         2 * qvec[3] * qvec[1] + 2 * qvec[0] * qvec[2]],
        [2 * qvec[1] * qvec[2] + 2 * qvec[0] * qvec[3],
         1 - 2 * qvec[1]**2 - 2 * qvec[3]**2,
         2 * qvec[2] * qvec[3] - 2 * qvec[0] * qvec[1]],
        [2 * qvec[3] * qvec[1] - 2 * qvec[0] * qvec[2],
         2 * qvec[2] * qvec[3] + 2 * qvec[0] * qvec[1],
         1 - 2 * qvec[1]**2 - 2 * qvec[2]**2]])

如果是SimplePinhole,

那么,fx = fy = intr[0], cx = intr[1], cy = intr[2]

其他类推。

相关推荐
张申傲1 分钟前
多模态(3):实战 GPT-4o 视频理解
人工智能·chatgpt·aigc·多模态
阡之尘埃3 分钟前
Python数据分析案例73——基于多种异常值监测算法探查内幕交易信息
人工智能·python·机器学习·数据分析·异常检测·无监督学习
猫先生Mr.Mao11 分钟前
2025年3月AGI技术月评|技术突破重构数字世界底层逻辑
人工智能·aigc·大语言模型·agi·多模态·行业洞察
睿创咨询28 分钟前
科技与商业动态简报
人工智能·科技·ipd·商业
科技在线29 分钟前
科技赋能建筑新未来:中建海龙模块化建筑产品入选中国建筑首批产业化推广产品
大数据·人工智能
HED39 分钟前
用扣子快速手撸人生中第一个AI智能应用!
前端·人工智能
极小狐41 分钟前
极狐GitLab 如何 cherry-pick 变更?
人工智能·git·机器学习·gitlab
沛沛老爹1 小时前
从线性到非线性:简单聊聊神经网络的常见三大激活函数
人工智能·深度学习·神经网络·激活函数·relu·sigmoid·tanh
0x2111 小时前
[论文阅读]ReAct: Synergizing Reasoning and Acting in Language Models
人工智能·语言模型·自然语言处理
mucheni1 小时前
迅为iTOP-RK3576开发板/核心板6TOPS超强算力NPU适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品
arm开发·人工智能·边缘计算