一、基本设定
1. 相机系坐标
点 在相机坐标系下的坐标 为:
2. 像素系坐标
相机系坐标转换成像素系齐次坐标:
其中: 为像素系齐次坐标, 为相机内参矩阵。
3. 平面参数
所在平面在相机系下的参数:
其中: 为平面法向量, 相机系原点到平面距离。
点 在平面 上由以下公式表达:
二、平面参数:由像素系计算相机系
1. 由像素系坐标计算相机系坐标:
存在未知数深度 ,因此无法由像素系计算出相机系坐标。
2. 加入平面参数
结合(1.1)(2.2)得:
整理:
结合(2.2)(2.4)得:
可知,加入平面信息 后,可完全由像素坐标还原出相机坐标。
三、单应矩阵:由像素系a计算像素系b
1. 由a系像素计算b系像素
有两个相机系,a 和 b,其下坐标有关系:
其中:
表示从坐标系b原点运动到坐标系a原点的旋转矩阵;
表示b坐标系下,从b到a的向量。
转到对应像素系,有关系:
可得到由a系的像素表达出的b系像素:
但是存在未知数 ,所以无法直接通过a系像素得到b系像素。
2. 加入平面参数
结合(2.4)(3.1)
上面推导用到的理论:
- 齐次坐标与系数无关,因此可省去
3. 定义单应矩阵
符号简化:
其中 为 单应矩阵:
单应矩阵包含了相机内参矩阵、旋转、平移和平面参数信息。
引入单应矩阵后,可以直接通过a系像素得到b系像素。
四、匹配点计算单应矩阵
(3.2)给出的单应矩阵的定义是通过旋转平移信息计算的,现实中有时不知道旋转平移信息,而知道两张图像中的匹配点,可以由匹配点计算出单应矩阵。
对于图片上的一对匹配点有如下关系:
1. 单应矩阵有8个未知数
因为转换的是齐次坐标,所以单应矩阵H与尺度无关,也即 与 的作用是相同的,因此自由度为 8,使用 来进行归一化。
故 共8个未知数,需要8个方程来解。
2. 一对匹配点提供2个方程
由于是齐次坐标,所以展开是这种形式:
3. 四对匹配点提供8个方程
解此方程组,可得 单应矩阵 。
参考:
- STATE ESTIMATION FOR ROBOTICS
- 视觉slam十四讲
- https://www.cnblogs.com/ml-cv/p/5871052.html
- https://www.zhihu.com/question/23310855