全文无废话!!!
1、相机成像原理
共线条件方程:物方点、相机成像中心、像方点三点共线
2、共线方程
3、空中三角测量
空三定义:空三是空中三角测量的简称。相机输出成像时的位置和姿态都是有误差的,空三是以重投影残差最小化为目标重新求解相机成像时的位置和姿态
空三的作用:空三是建模的基础,是摄影测量核心算法之一,好的空三成果是建好二三维模型的基础
4、特征点匹配
4.1特征点提取
第一步:找到每张照片有特征的点
照片中颜色或纹理变化剧烈的点称之为特征点
一般用像素本身及其周围像素关系来描述特征点
4.2特征点匹配
第二步:将不同像片中相同的特征点关联起来
将不同照片特征信息一致的特征点关联
需保证同一特征点能被不同像片拍到(有重叠度)
提取算法需能在不同亮度、不同尺度、不同角度等情况下,都可以关联特征点
匹配的特征点数量会低于第一步提取的特征点数量
5、区域网平差
根据初始带误差的相机位置和参数,匹配特征点空间中不能相交
平差就是调整相机内参、成像时的位置和姿态,让特征点在三维空间中相交的误差最小
调整时会以初始位置和姿态做参考,在设定的范围内做调整(大疆制图中的初始POS精度)
特征点被越多的照片观测到,参考信息越多,平差可靠性就会越强
6、相机内参与外参
6.1内参
描述相机成像内部的参数相机内参,一般有9个参数:
1. 焦距(2个):fx,fy (以像素为单位,一般fx≈fy)
一般情况下是一样的,但是相机CMOS做工差,长和宽不一般大,就会出现两个焦距。
2. 像主点偏移量(2个):cx、cy (以像素为单位)
由于安装时候的误差导致摄影中心偏移像平面的中心。
3. 畸变参数(一般为5个):k1、k2、p1、p2、k3
相机成像有一个假设,光在空间是直线传播的,但在相机中实际上不是这样子的,初中物理学习的小孔成像,光线穿过小孔,后面成的是倒像,后面成的像亮度是非常低的,应为一个小孔不聚光,多以成的像是很模糊的,怎么解决呢?在光心附近装一个凸透镜,装上凸透镜,光就聚集到像平面上了,但是解决一个问题就会带来另外一个问题,光就不沿直线传播了,那么,我们怎么做才能使光线纠正到直线传播的位置,这个时候畸变参数就登场了,就是使用一套参数给他拟合回来,让计算机知道,如果沿直线传播应该传播到那个地方去。
由透镜形状引起的畸变是径向畸变,而由透镜安装与成像平面不平行引起的畸变是切向畸变。
相机畸变由 (k1、k2、p1、p2、k3) 5个参数描述,而这些参数都可以使用相机标定来求解。质量较好的相机,切向畸变小到可忽略,径向畸变系数 k3 也可忽略,只计算 k1,k2 两个参数就可以了。
6.2外参
描述拍照时刻相机的位置和姿态的参数称之为相机外参,共6个参数,每张照片的外参数都不一样:
1. 相机成像时刻位置(X、Y、Z)
2. 相机成像时刻姿态(Omega、Phi、Kappa)
7、空三相关问题
7.1内参问题
7.1.1多个相机数据一定要避免被大疆智图误认为是同一相机
例如五镜头处理数据时,需要对照片进行预处理,五个文件夹,五个相机类型A\B\C\D\E设置好即可;大疆自己的相机主动会在照片中写入相机信息,不存在此类情况,所以大疆家族相机成果是可以放到一起跑数据的。
市面上常见的第三方相机,例如:A7R4、A7R2,由于都是一个型号,大疆智图可不会分辨具体那些照片是那个相机拍的,本来不同的相机内参数是不一致的,但是对大疆智图来说,这是一个相机啊,那我就要把它拟合成一套参数,这样就乱套了,就是说本来这个相机该用A参数的,结果用到了B参数,最后结果就是恢复相机成像时刻的过程恢复的乱七八糟,也就无法保证数据成果的精度。
7.1.2高程优化
当照片位于同一高度,且视角全朝同一方向时(如正射),空三输出的焦距会不准,最终导致免像控成果的高程精度存在固定差
增加倾斜照片,或增加不同高度的照片能使内参标定更准确
M3E或P1的“高程优化”是通过增加倾斜照片使得内参焦距优化更准
传统航测方案的(构架航线),通过增加不同高度的照片提升高程精度
平差理论是建立在重投影误差最小化的这么一个原则上面来做的
重投影误差:改变相机位姿之后投回去的点和原来匹配的点两者之间的距离最小化,迭代优化的收敛值。
p′投回去的点和原来的点,交到X1\X2\X3,所以重投影误差是0,同理三个点真的就在三维空间相交,如上图所示存在p′′这么一个点,它也可以让你重投影的误差是0 ,这样说明什么情况,不是唯一解了,有两个解都能让平差得到最终的最小化值,这就会很跟麻烦,应为对于计算机来说,你给我一个值,让我到了这个条件就停下来,你先给我一个数据,我到一个地方,再给我一个数据,或者用同样的数据再跑一遍,换位置了,那么,到底那个是真的呢?计算机就不知道了,可能第一次你给我的时候我输出的是这么一个结果,第二次的时候我给你输出了另外一个结果,这样的话,对于相机来说,内参里面的焦距不一样了,其他的都一样,就是f′变成了f′′了,对于交会出来的地面点来说的话平面位置没问题,但是在高程上面由于交会出来的焦距不一样,这里三维坐标里面的高程值也会发生一定的偏移量。
高程免像控出现的高程有一个固定的差值,这个差值可能每一个检查点都一样,就是因为内参优化的时候焦距优化不准,出现了多解造成的。如何避免这个问题有两个条件:
条件一:出现这个问题是因为V1\V2\V3三张照片都是同一飞行高度采集的
条件二:同时这三张照片的朝向也是同一个方向
在这两个条件同时满足的条件下,这些迭代算法,这些平差算法容易出现多解的情况,哪个地方多解呢?焦距多解,怎么改善这种情况呢?
把刚才的两个条件破坏掉!!!!!!
条件一:通过增加不同高度的照片解决同一高度条件。所以仿地飞行出来的高程精度是没有问题的
条件二:所有照片朝向一个方向,改变这个条件,高程优化打开,飞完了整个测区之后,加飞了一段倾斜数据飞了也就十几张左右的倾斜数据,把这些数据和刚才全部垂直朝下的正射数据放到一起来建模,F就可以优化的很准确了,内参就没有问题了。内参没有问题,交会出来这个三维的坐标也就没有问题了
所谓的高程优化是在干什么,就是优化内参,优化焦距
做内参优化,全部是倾斜的采集,效果会比正射的要好的多,传统的航测方案,尤其是做大飞机的航测,构架航线的概念,一般是怎么采集数据的,飞完一段数据后在边缘的地方加飞一个不同高度的,原来飞300m,我就再飞一段330米高度的一些照片,做内参优化,听上去很严谨,至于说为什么严谨,为什么它的精度能有保障呢,最终,也是破坏了一个多解的条件,条件之一飞行高度都是统一高度破坏了,
7.2相机标定
标定航线可以使用五向摆拍或五航线
标定的过程实质就是空三,输出内参数
做过标定的相机能为空三提供更准确内参初始值
大疆智图具有相机自标定功能,如果都是带倾斜的数据,则没有做标定的精度也会很高
所谓的标定就是做一下空三
8、匹配问题
重复纹理或弱纹理导致无法匹配或匹配错误
物体移动、照片出现运动模糊、对焦模糊、过曝、GSD差太大或拍摄角度差太大等都会导致匹配失败
GSD差太大:解决方案,增加过度高度照片。
拍摄角度差太大:解决方案,增加过度角度照片。
9、外参相关问题
9.1空三失败:POS约束与像控点约束冲突
初始POS约束:RTK固定解照片,平面3cm,高程6cm
给了一个初始位置,开始调整位置,调整的时候不是无序的调,而是给初始值一个范围框,调整不能超过这个范围,超过这个框就不对了,这个框就叫POS约束,也就是RTK固定解的数据调整只能是在平面3cm,高程6cm的范围内调整。还有一个约束条件式像控点,就是地面上做好的精度很高的已知点,当出现坐标系统不一致的情况下,就只能选择一种,一般的操作是关闭掉POS约束。
POS约束使空三相机位姿调整在限定范围内进行,可加快空三效率,提升免像控精度
像控点坐标系、高程系统与POS不一致,易导致空三失败
如果使用自定义坐标系或85海拔高的像控点,为保证空三通过,建议关闭POS约束,或将像控点坐标系设置为任意坐标系
9.2空三失败:POS精度与实际精度不符
第三方相机容易出现这个现象
关键是合理的设置POS精度3cm、6cm或2m、10m