相机的内参和外参介绍

news/2024/4/30 4:47:55/文章来源:https://blog.csdn.net/fengbingchun/article/details/130039337

      :以下相机内参与外参介绍除来自网络整理外全部来自于《视觉SLAM十四讲从理论到实践  第2版》中的第5讲:相机与图像,为了方便查看,我将每节合并到了一幅图像中
      相机与摄像机区别:相机着重于拍摄静态图像,光学变焦不大;摄像机着重于拍摄动态视频,光学变焦比较大。
      相机的传感器(CCD, 光学镜头)是有许多像素点按照矩阵的形式排列而成,分辨率就是以水平方向和垂直方向的像素来表示的。分辨率越高,成像后的图像像素数就越高,图像就越清晰。传感器尺寸越大,一定程度上表示相机可容纳像素个数越多,成像的画幅越大。
      像元尺寸:就是每个像素的面积。单个像素面积小,单位面积内的像素数量多,相机的分辨率高。
      像素深度:是指每个像素用多少比特位表示。通常,每个像素的比特位数多,表达图像细节的能力强,这个像素的颜色值更加丰富、分的更细,颜色深度就更深。一般像素深度有1位、8位、16位、24位和32位。
      曝光:指在摄影过程中进入镜头照射在感光元件上的光量。曝光时间:传感器将光信号转换为电信号形成一帧图像,每个像元接受光信号的过程叫曝光,所花费的时间叫曝光时间,也叫快门速度。曝光补偿:是一种曝光控制方式,如果环境光源偏暗,即可增加曝光值以突显画面的清晰度。曝光补偿就是有意识地变更相机自动演算出的"合适"曝光参数,让照片更明亮或者更昏暗的拍摄手法。
      在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数求解相机参数的过程称为相机标定
      三维世界中的一个物体反射或发出的光线,穿过相机光心后,投影在相机的成像平面上。相机的感光器件接收到光线后,产生测量值,就得到了像素,形成了我们见到的照片。
      相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述。这个模型有很多种,其中最简单的称为针孔模型。针孔模型是很常用而且有效的模型,它描述了一束光线通过针孔之后,在针孔背面投影成像的关系。同时,由于相机镜头上的透镜的存在,使得光线投影到成像平面的过程中会产生畸变。因此,我们使用针孔和畸变两个模型来描述整个投影过程。这两个模型能够把外部的三维点投影到相机内部成像平面,构成相机的内参数。

      齐次坐标是将一个原本是N维的向量用一个N+1维向量来表示.
      通常认为,相机的内参(Camera Intrinsics)在出厂之后是固定的,不会在使用过程中发生变化。
      内参包括:焦距(fx, fy)、主点坐标(cx, cy)、畸变参数。
      内参作用:把坐标从相机坐标系转换到像素坐标系中
      外参作用:把坐标从世界坐标系转换到相机坐标系中。相机外参随着世界坐标系与相机坐标系的相对位置而变。
      外参:相机的旋转、平移(相机的位姿由它的旋转矩阵R和平移向量t来描述),用于描述在静态场景下相机的运动,或者在相机固定时,运动物体的刚性运动相比于不变的内参,外参会随着相机运动发生改变。旋转矩阵R为3*3,平移向量t为3*1; R,t组合成3*4的矩阵。 

      由透镜形状引起的畸变(Distortion, 也叫失真)称为径向畸变,参数包括:k1, k2, k3;
      由于透镜和成像面不能严格平行,会引入切向畸变,参数包括:p1, p2;
      相机成像过程涉及到四个坐标系的转换:世界坐标系、相机坐标系、图像坐标系(归一化坐标系)、像素坐标系。
      在instant-ngp中可通过colmap2nerf.py求相机的内参和外参,运算后生成的transforms.json部分内容如下:

{"camera_angle_x": 0.6797143901096673,"camera_angle_y": 0.6796103976473696,"fl_x": 1131.2978259257525,"fl_y": 1131.4850184079994,"k1": 0.010915222368470609,"k2": -0.9233170001378709,"k3": 0,"k4": 0,"p1": 0.011664713007717898,"p2": -0.004849750483773029,"is_fisheye": false,"cx": 445.86115401855534,"cy": 382.96655347583277,"w": 800.0,"h": 800.0,"aabb_scale": 4,"frames": [{"file_path": "./train/r_16.png","sharpness": 695.979090625,"transform_matrix": [[-0.6656617785641908,0.007151776858681357,0.7462193033207263,2.8758118623856377],[0.7251107079754902,-0.23014046936711052,0.6490376148874708,2.7371395609739637],[0.17637703291159618,0.9731311404169232,0.14800988417722724,0.6687713985786954],[0.0,0.0,0.0,1.0]]},{"file_path": "./train/r_23.png",

      其中:
      (1).camera_angle_x, camera_angle_y: 水平、垂直视角;镜头的焦距决定了视角的大小;在colmap2nerf.py中,由焦距求视角的公式为:

camera_angle_x = math.atan(w / (fl_x * 2)) * 2
camera_angle_y = math.atan(h / (fl_y * 2)) * 2

      (2).fl_x, fl_y: 焦距,若没有给出可通过水平或垂直视角计算出,在nerf_loader.cu中的公式为:

fl_x = 0.5f * (float)w / tanf(0.5f * camera_angle_x);
fl_y = 0.5f * (float)h / tanf(0.5f * camera_angle_y);

      (3).k1,k2,k3,k4: 径向畸变参数;
      (4).p1,p2: 切向畸变参数;
      (5).is_fisheye: 是否是鱼眼相机模型;
      (6).cx,cy: 主点坐标;
      (7).w,h: 分辨率,图像宽、高;
      (8).aabb_scale: 对于在单元立方体(unit cube)外部有可见背景的自然场景,有必要将参数aabb_scale设置为2的幂,最大为128;
      (9).transform_matrix: 外参.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_283843.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019年 团体程序设计天梯赛——题解集

前言: Hello各位童学大家好!😊😊,茫茫题海你我相遇即是缘分呐,或许日复一日的刷题已经让你感到疲惫甚至厌倦了,但是我们真的真的已经达到了我们自身极限了吗?少一点自我感动&#xf…

Linux常用指令【文件目录操作】

linux 文件目录操作指令pwd 指令ls 指令cd 指令mkdir 指令rmdir 指令touch 指令cp 指令rm 指令mv 指令cat 指令more 指令less 指令> 和 >> 指令echo 指令head 指令tail 指令ln 指令history 指令pwd 指令 基本语法 pwd (显示当前工作目录的绝对路径) ls 指令 基本语法…

大数据项目实战之数据仓库:电商数据仓库系统——第2章 数据仓库建模概述

第2章 数据仓库建模概述 2.1 数据仓库建模的意义 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希…

【低压】DC-DC 降压恒流 车灯12-100V 2.5A 高干扰 全亮 半亮方案

产品描述 特点 应用领域 应用原理图 AP5127 是一款 PWM 工作模式,高效率、外 围简单、内置功率管,适用于 12-100V 输入的高 精度降压 LED 恒流驱动芯片。输出最大功率可达 25W,最大电流 2.5A。 AP5127 可实现全亮/半亮功能切换,通过 MODE 切…

cgroups是linux内核中限制、记录、隔离进程组(process groups)所使用的物理资源的机制

容器虚拟化 可以实现应用程序的隔离 直接使用物理机的操作系统可以快速响应用户请求 不占用部署时间 占用少量磁盘空间 缺点∶学习成本增加、操作控制麻烦、网络控制与主机虚拟化有所区别、服务治理难。 微服务架构师需要会多门编程语言,才能治理各种服务 三种…

Java初始泛型

目录 一、包装类 1、基本数据类型和对应的包装类 2、装箱和拆箱 3、自动装箱和自动拆箱 二、什么是泛型 三、引出泛型 1、泛型的语法 四、泛型类的使用 1、语法 2、示例 3、类型推导(Type Inference) 六、泛型如何编译的 1、擦除机制 2、为什么不能实例化泛型类…

C指针的简介与应用

C指针 感谢b站up主江科大自化协的讲解:https://www.bilibili.com/video/BV1Mb4y1X7dz/?spm_id_from333.999.0.0 该学习笔记也是基于up课程做的笔记,我的个人能力及理解的局限,不足之处还望大佬指正~ 9.1 指针简介 指针(Pointer)是C语言的…

【NX2023/1847】UG软件安装详细指南教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录安装包一、安装包内容检查二、安装步骤1.安装JAVA_WIN64.exe2.运行Launch.exe3.安装许可3.直接重启电脑(小白直接重启稳妥)4.重启后继续运行L…

【案例实践】R语言多元数据统计分析在生态环境中的实践应用

查看原文>>>R语言生物群落分析绘图、多元统计分析、CMIP6、遥感碳储量、GEE林业、InVEST等 生态环境领域研究中常常面对众多的不同类型的数据或变量,当要同时分析多个因变量(y)时需要用到多元统计分析(multivariate sta…

《计算机网络-自顶向下》05. 网络层-控制平面

文章目录路由控制方式每路由控制逻辑集中式控制路由选择算法LS —— 链路状态路由选择算法DV —— 距离向量路由选择算法LS 和 DV 算法的比较自治系统内部路由协议RIPOSPF自治系统外部路由协议:BGP通告 BGP 路由信息选择最好的路由相关术语热土豆选择路由选择算法&a…

使用向量机(SVM)算法的推荐系统

系统整体结构 运行环境 包括Python环境、TensorFlow环境、安装模块、MySQL数据库。 Python环境 需要Python 3.6及以上配置,在Windows环境下推荐下载Anaconda完成Python所需的配置,下载地址为https://www.anaconda.com/,也可下载虚拟机在Li…

【ES】搜索结果处理RestClient查询文档

【ES】搜索结果处理&RestClient查询文档2.搜索结果处理2.1.排序2.1.1.普通字段排序2.1.2.地理坐标排序2.2.分页2.2.1.基本的分页2.2.2.深度分页问题2.2.3.小结2.3.高亮2.3.1.高亮原理2.3.2.实现高亮2.4.总结3.RestClient查询文档3.1.快速入门3.1.1.发起查询请求3.1.2.解析响…

Java面试题总结 | Java基础部分(持续更新)

Java基础 文章目录Java基础一个Java文件里可以有多个类吗(不含内部类)?创建对象的方法面向对象和面向过程简述自动装箱拆箱Java代码块执行顺序java中的基本数据类型对应的字节数包装类型和基本数据类型的场景java中的关键字分类final关键字st…

数据结构入门(C语言版)线性表中链表介绍及无头单向非循环链表接口实现

线性表之链表导航1、链表的概念和结构2、链表的分类3、链表的实现3.1 结构体定义3.2 接口函数定义3.3 接口函数的实现4、结语导航 1、链表的概念和结构 概念: 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素 。因此,为了表示每…

推荐NLP基础 RNN循环神经网络

NLP概述 Natural Language Processing(NLP, 自然语言处理) 目的:让计算机处理或“理解”自然语言,以执行语言翻译和问题回答等任务;最终 来讲就是构建机器语言和人类语言之间的沟通桥梁,实现人机交流为最终目的。 常见应用&…

Python 虚拟环境迁移到其他电脑

一、背景介绍 在 Python 项目开发过程中,根据不同的项目场景,需要切换不同的 Python 版本。 因此,我们经常会对不同的项目,创建特定的 Python 虚拟环境,实现项目环境间的“物理隔离”。 本地创建 Python 虚拟环境&…

三、位置判断与代码搬移

判断当前位置 判断当前位置是否在SDRAM # < cpu\arm920t\start.S > relocate1: /* relocate U-Boot to RAM */ adr r0, _start /* r0 <- current position of code */ ldr r1, _TEXT_BASE /* test if we run from flash or RAM */ cmp r0, r1 /* dont reloc…

基于支持向量机SVM的脑部肿瘤识别,脑电波样本熵提取

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的的脑部肿瘤识别分类预测 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它…

电视王者沦落到再度卖楼求生,家电巨头跌落神坛,凸显行业之囧

电视无疑是中国家电行业中做得最成功的行业之一&#xff0c;在国内市场将外资品牌挤压出市场&#xff0c;还走向了海外市场&#xff0c;不过有一家国内的电视企业如今却无奈再度卖楼求生&#xff0c;这家企业就是长虹。一、长虹的变幻长虹称雄国内电视市场出自上一任领导人倪润…

pytorch 线性回归总结

测试1(y3∗x1−4∗x2y3*x_{1}-4*x_{2}y3∗x1​−4∗x2​),lr1e-2 %matplotlib inline import torch import numpy as np torch.manual_seed(1) from torch.nn import Linear from torch.autograd import Variable import torch.nn as nn import random np.random.seed(1) rand…