2019-11-17
代码分析
特征点查找
默认使用orb
算法,默认情况下还能够支持akaze
算法.在安装了扩展模块后还能选择surf
和sift
算法
computeImageFeatures
特征点匹配
匹配方法的选择
homography
默认调用BestOf2NearestMatcher
,可选BestOf2NearestRangeMatcher
affine
调用AffineBestOf2NearestMatcher
.使用该方法进行匹配时会多丢弃一些图片
舍弃认为不属于同一张全景图的图片
leaveBiggestComponent
相机参数评估
estimate::estimate
AffineBasedEstimator
默认
HomographyBasedEstimator
焦距评估:当评估计算得到多个焦距f时,可取这些f的中位数作为所有相机的焦距
计算最大生成树:以中心节点的图像为基准,计算其他图像与该图像的旋转矩阵
BundleAdjusterBase::estimate
基于以上方法,我们得到了相机的内外参数,但这样得到的参数忽略了多个图像间的约束,而且会产生累计误差.这时,我们就需要用到光束平差法(Bundle Adjustment)来精确化相机参数
BundleAdjusterReproj
:光束平差法的重映射方法默认
BundleAdjusterRay
:光束平差法的射线发散方法BundleAdjusterAffinePartial
细化相机参数
波形矫正
光束平差法会引起波形效应,即拼接的图像会呈现蛇形分布,这是因为真实拍摄相片时不大可能都保持水平而不倾斜的
waveCorrect
图像投影变换
PlaneWarper
AffineWarper
CylindricalWarper
:柱面- 默认
SphericalWarper
:球面 FisheyeWarper
StereographicWarper
- 还有一堆
曝光补偿
对每幅图像进行曝光补偿,来使所有图像具有相同的曝光程度
ExposureCompensator
寻找接缝线
重叠部分最相似的像素的连线
接缝线有三个限制条件
- 如果重叠区域是宽大于高,则接缝是横向走向的,而如果重叠区域是宽小于高,则接缝是纵向走向的.所以要保证接缝线要有一定的长度
- 如果是横向的接缝,则不允许有绝对垂直的接缝线,而如果是纵向的接缝,则不允许有绝对水平的接缝线
- 三是重叠区域是矩形,接缝线从矩形的一边出发,必须到达与该边平行的另一边结束。
逐点法,动态规划法和图割法
图片融合
羽化
多频段融合
参数说明
matcher
:匹配方式?rangewidth
:限制图片匹配的数目?ba
:拼接图像时的cost函数?warp
:投影变换wave_correct
:波形矫正seam
:寻找接缝线的方法blend
:图像融合方式