干货:从相机模型(针孔、鱼眼、全景)到OpenCV源码实现
本文内容
本文旨在较为直观地介绍相机成像背后的数学模型,主要的章节组织如下:
-
第一章用最简单的针孔投影模型为例讲解一个三维点是如何映射到图像中的一个像素
-
第二章介绍除了针孔投影模型外其他一些经典投影模型,旨在让读者建立不同投影模型之间的建模过程
-
第三章介绍如何把不同的投影模型用一个统一的投影过程表达
-
第四章进一步补充第三章的统一投影模型,并介绍畸变的定义和去畸变的原理
-
第五章针对全景相机的基本概念和两种应用广泛的全景相机模型做出介绍
-
第六章用代码示例介绍如何使用OpenCV的接口对图像去畸变
附赠自动驾驶学习资料和量产经验:链接
一、相机是如何成像的?
祭上一张经典图
针孔相机模型
一个三维空间中的点怎样映射到图片上的一个像素?
相机坐标系
大白话总结
问:相机是如何成像的? 答:光束从物体表面反射,经过相机镜头,到达感光原件,这一系列物理过程可以通过数学公式表达,最终变成一个简单的矩阵操作将三维空间中的点对应到图片的一个像素。
二、不同的相机投影模型
第一节介绍的是针孔投影模型,但是事实上相机镜头都是多种多样的,不可能都是符合针孔投影模型。本节会介绍经典的相机投影模型,并从直观感受和形式化定义上介绍不同的投影模型是如何联系在一起的
什么是相机投影模型
相机投影模型用数学的方式描述了一个真实世界中的三维点到图像上像素坐标的映射关系
相机投影模型实际上就是对相机成像过程(物理)的数学建模。建模的目的是为了能够尽量符合真实的成像过程。不同的建模方式就对应不同的相机投影模型
经典的相机投影模型
光束与光轴夹角
经典投影模型
事实上,