当前位置: 首页 > news >正文

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

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

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

SimplePinhole
内参格式:f, cx, cy
实际用的时候:fx=fy=f

在这里插入图片描述
Pinhole:
内参格式:fx, fy, cx, cy

在这里插入图片描述
其他可以自行查看models.h文件。

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

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.0def 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]
其他类推。


http://www.mrgr.cn/news/8726.html

相关文章:

  • k8s Unable to fetch container log stats failed to get fsstats for
  • linux之ELK
  • .NET_WebForm_layui控件使用及与webform联合使用
  • 数据分析及应用:如何分析区间上用户分布情况 | 基于快递单量区间划分的用户分布情况 | 基于TOPN商品区间划分用户浏览情况分析
  • LRU缓存
  • http的keepalive和tcp的keepalive
  • Spring面试题二
  • 【数据结构3】哈希表、哈希表的应用(集合与字典、md5算法和文件的哈希值)
  • 图像分割论文阅读:BCU-Net: Bridging ConvNeXt and U-Net for medical image segmentation
  • 用excel内容批量建立文件夹
  • 全面解析轮换IP:原理、优势与应用详解
  • 同一台主机两个github账号切换使用
  • Zookeeper的watch机制是如何工作的?
  • flink+flinkcdc+同步(MYSQL到MYSQL)实践
  • AudioNotes -将音频内容转 markdown
  • redis | 认识非关系型数据库Redis的列表类型及python如何操作redis
  • SpringBoot集成kafka-指定topic(主题)-partition(分区)-offset(偏移量)消费信息
  • 如何利用ThinkPHP6打造高效SEO优化的网站!
  • R 语言学习教程,从入门到精通,R XML 文件使用(19)
  • 【单片机】PICC编译器和XC8编译器的历史发展,有什么关系