光照补偿是图像拼接合成里面一个比较重要的问题;由于图像拼接的原始图像来源于相机的多次拍摄,多次拍摄时如果相机使用了不同的曝光参数,或者多次拍摄时处于不同的外部光照环境条件下;会导致参与拼接的图像有不同的整体亮度,同时不同的图像也会发生色差的现象。
GainExposure解决的就是不同光照和色差的图片合成的时候减少最终合成的图片在视觉上由于光照差异和色调差异带来的人工痕迹。
核心是 “Automatic Panoramic Image Stitching using Invariant Features”里面第六节 “6 Gain Compensation” 提出的模型:


此处整个讲述Gain Exposure的第六节非常短,一共提出了27,28,29三个公式;每个公式有一段简短的论述,然后就结束了。
但是整个第六节提出的模型,在解决光照的问题上,根据“Performance evaluation of color correction approaches for automatic multi-view image and video stitching”论文的比较,在效率,扩展性,稳定性和速度上,跟其他同类型的光照补偿类算法比较,都是首选之一。
所以主要讲讲27,28,29三个公式:
27提出了一个模型,给出n幅待合成的图片;假定我们有一组光照补偿参数 g1,g2,g3,..gn; 让每幅图片乘以该参数来减少光照差异(亮度差异);那么从理论上来讲,这组参数什么情况下是最好的;即如何来衡量这组补偿参数的好坏?
那么27公式提出的模型就是一个误差函数:在经过该组参数处理后的图像,在两两重合的图片重合区域(overlay);处理后的光照误差函数,那么理论上该误差越小,给定的这组补偿参数越好。
而28公式对Ii和 Ij做了简化,使用了重合区域的平均亮度
但是27公式有一个很致命的问题,很容易从27公式的形式发现,g1,g2,...gn都等于0是该方程的最优解;但是这显然不是我们想要的;因此误差函数使用公式29;
27公式为什么能到29公式?以及怎么从27公式提出的29公式;而且29公式涉及到两个预置参数;论文都没有讲述,只给了结论;但是这也给了非常普适的思路:当理论上的方程并不合适进行数值求解的时候,可以寻求变异形式求近似解
29公式是一个二次方程,这个二次方程不好求解;论文第六节最后一句提到通过设置该方程导数为0来进行求解;二次方程导数出来的是一次方程;解一次方程通过 Ax = b;构造A和b很容易可以求解:
从29公式,我们直接令误差e=0来构造方程;同时为了方便叙述,我们直接令 n = N/σN^2; m = N/σg^2,那么得到
n(Iigi - Ij * gj)^2 + m(1-gi)^2 = 0;
展开为:
n * Ii^2 * gi^2 + n gj^2 * Ij^2 -2nIiIjgigj + m + mgi^2 - 2mgi = 0
函数对gi进行求导得到:
(2nIi^2+2m)gi - 2nIiIj*gj = 2m
根据上式即可构建A和b。
后续该算法得到扩展优化,“Eliminating ghosting and exposure artifacts in image mosaics”论文在此基础上提出了Block by Block 的优化;主要思想是将整张图像分割为block图像,然后用block图像参与计算,核心思想并无不同,也比较容易理解。同时,该优化可以独立扩展到图像的RGB三个通道上来减小色差问题。
“Eliminating ghosting and exposure artifacts in image mosaics”论文同时提到block尺寸设置为32时,综合效果最佳;同时经过三次迭代;能计算出到更好的效果;此处迭代指的是,每次计算gain后,应用补偿后再次计算gain;这样迭代以期达到更好的效果。
参考文献
Automatic Panoramic Image Stitching using Invariant Features
Performance evaluation of color correction approaches for automatic multi-view image and video stitching
Eliminating ghosting and exposure artifacts in image mosaics
网友评论