首页 > 其他分享 >相机标定原理

相机标定原理

时间:2024-01-10 17:00:11浏览次数:35  
标签:矩阵 标定 像素 相机 畸变 图像 原理 坐标系

相机标定后可以得到什么?
相机的内参矩阵A(dx,dy,r,u,v,f),外参矩阵[R|T]、畸变系数[k1,k2,k3,~,p1,p2,~]。
•内参矩阵各元素意义:一个像素的物理尺寸dx和dy,焦距f,图像物理坐标的扭曲因子r,图像原点相对于光心成像点的的纵横偏移量u和v(像素为单位)。

•外参矩阵:世界坐标系转换到相机坐标系的旋转R和平移T矩阵。

•畸变系数:包括相机的径向畸变系数k1,k2,k3,~,和相机的切向畸变系数p1,p2,
以上以相机标定最需要求得的参数。

相机标定的原理
四个坐标系:
世界坐标系(world coordinate system):用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入。单位为m。

相机坐标系(camera coordinate system):在相机上建立的坐标系,为了从相机的角度描述物体位置而定义,作为沟通世界坐标系和图像/像素坐标系的中间一环。单位为m。

图像坐标系(image coordinate system):为了描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系而引入,方便进一步得到像素坐标系下的坐标。 单位为m。

像素坐标系(pixel coordinate system):为了描述物体成像后的像点在数字图像上(相片)的坐标而引入,是我们真正从相机内读取到的信息所在的坐标系。单位为个(像素数目)。

 

1.从世界坐标系到相机坐标系 3D->3D

 

 

其中,R为旋转矩阵,t为平移向量,因为假定在世界坐标系中物点所在平面过世界坐标系原点且与Zw轴垂直(也即棋盘平面与Xw-Yw平面重合,目的在于方便后续计算),所以zw=0,可直接转换成式1的形式。其中变换矩阵

即为前文提到的外参矩阵,之所称之为外参矩阵可以理解为只与相机外部参数有关,且外参矩阵随刚体位置的变化而变化。

2.从相机坐标系到理想图像坐标系(不考虑畸变) 3D->2D

 

 

 

这一过程进行了从三维坐标到二维坐标的转换,也即投影透视过程(用中心投影法将形体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图,也就是使我们人眼看到景物近大远小的一种成像方式)。

3.从理想图像坐标系到实际图像坐标系(考虑畸变):

透镜的畸变主要分为径向畸变和切向畸变(还有薄透镜畸变等等,但都没有径向和切向畸变影响显著,所以我们在这里只考虑径向和切向畸变)。

径向畸变是由于透镜形状的制造工艺导致。且越向透镜边缘移动径向畸变越严重。实际情况中我们常用r=0处的泰勒级数展开的前几项来近似描述径向畸变。矫正径向畸变前后的坐标关系为:

•xcorrected = x(1+k1r2+k2r4+k3r6)

•ycorrected = y(1+k1r2+k2r4+k3r6)

由此可知对于径向畸变,我们有3个畸变参数需要求解。

切向畸变是由于透镜和CMOS或者CCD的安装位置误差导致。切向畸变需要两个额外的畸变参数来描述,矫正前后的坐标关系为:

•xcorrected = x + [ 2p1y + p2 (r2 + 2x2) ]

•ycorrected = y + [ 2p2x + p1 (r2 + 2y2) ]

由此可知对于切向畸变,我们有2个畸变参数需要求解。

综上,我们一共需要5个畸变参数(k1、k2、k3、p1和p2 )来描述透镜畸变。

注意:

4.从实际图像坐标系到像素坐标系:

由于定义的像素坐标系原点与图像坐标系原点不重合,假设像素坐标系原点在图像坐标系下的坐标为(u0,v0),每个像素点在图像坐标系x轴、y轴方向的尺寸为:dx、dy,且像点在实际图像坐标系下的坐标为(xc,yc),于是可得到像点在像素坐标系下的坐标为:

 

化为齐次坐标表示形式可得:

 若暂不考虑透镜畸变,则将式2与式5的转换矩阵相乘即为内参矩阵M:

之所以称之为内参矩阵可以理解为矩阵内各值只与相机内部参数有关,且不随物体位置变化而变化。

 

最后用一幅图来总结从世界坐标系到像素坐标系(不考虑畸变)的转换关系:

 

 

标签:矩阵,标定,像素,相机,畸变,图像,原理,坐标系
From: https://www.cnblogs.com/heyrroo/p/17956865

相关文章

  • MyBatis实战指南(二):工作原理与基础使用详解
    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。那么,它是如何工作的呢?又如何进行基础的使用呢?本文将带你了解MyBatis的工作原理及基础使用。一、MyBatis的工作原理1.1MyBatis的工作原理工作原理图示:1、读取MyBatis配置文件mybatis-config.xml为MyBa......
  • 文件上传漏洞 原理利用防御实战
    原理1、文件上传(FileUpload)是大部分Web应用都具备的功能,例如用户上传附件、修改头像、分享图片/视频等2、正常的文件一般是文档、图片、视频等,Web应用收集之后放入后台存储,需要的时候再调用出来返回3、如果恶意文件如PHP、ASP等执行文件绕过Web应用,并顺利执行,则相当于黑客直......
  • Dictionary原理(转)
    原文:【C#】三分钟,深入理解C#哈希表(Dictionary)_c#dictionary为什么会hash冲突-CSDN博客1.哈希函数:将key转成hashcode。2.哈希桶:用来解决哈希冲突的链表、没有冲突一个桶对应一个entry(有key、value,真正的数据),有冲突就是一个链表。对于C#中的Dictionary,具体实现如下:1.最小数......
  • uniapp调用相机
    uni.chooseImage({count:1,//默认9sizeType:['original','compressed'],//可以指定是原图还是压缩图,默认二者都有sourceType:['album','camera'],//album从相册选图,camera使用相机success:function(res){console.log(JSON.stringify(res.temp......
  • spring boot自动装配原理
    学习笔记1@SpringBootConfiguration:该注解上有一个@Configuration注解,表示这个springboot启动类是一个配置类,最终要被注入到spring容器中。   2@EnableAutoConfiguration:表示开启自动配置   3@AutoConfigurationPackage,该注解上有一个@Import(AutoConfigurationPacka......
  • RocketMQ系统性学习-RocketMQ原理分析之NameServer 路由注册机制、生产者的发送消息流
    欢迎关注公众号:【11来了】发送“资料”可以下载Redis、JVM系列文章PDF版本!作者为在读研究生,目前研二,计划在公众号记录学习常用中间件笔记,以及明年更新面试经历!NameServer路由注册机制在Broker启动时,通过BrokerController.this.registerBrokerAll(true,false,brokerConfig......
  • Three.js——十五、Box3、相机动画、lookAt()视线方向、管道漫游案例、OrbitControls
    正投影相机正投影相机和透视相机的区别如果都以高处俯视去看整个场景,正投影相机就类似于2d的可视化的效果,透视相机就类似于人眼观察效果调整left,right,top,bottom范围大小如果你想整体预览全部立方体,就需要调整相机的渲染范围,比如设置上下左右的范围。使用场景:正投影可以......
  • 湘潭大学马克思主义基本原理错题集(自留)
    湘潭大学马克思主义基本原理错题集(自留)一、单选题(147道)二、多选题(112道)三、填空题(41道)四、判断题(78道)......
  • stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原
    stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原理图)文章目录stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原理图)一、前言二、资料收集三、STM32CubeMX配置按键及蜂鸣器连接口1、按键及LED的IO口配置2、......
  • 二维卷积计算:解析其原理和应用领域
    卷积计算是深度学习中常见的一种操作,它广泛应用于图像处理、语音识别、自然语言处理等领域。其中,二维卷积计算是卷积计算的一种形式,专门针对二维数据,如图像、矩阵等。一、二维卷积计算基本原理二维卷积计算是指对两个二维矩阵进行运算,得到一个新的矩阵。具体来说,给定两个矩阵A和B,其......