文章目录
- 1.cv2.createAlignMTB() 主要是计算2张图像的位移,假设位移移动不大
- 2.多曝光图像的aline算法:median thresold bitmap原理讲解
- 3.图像拼接算法stitch
- 4.多曝光融合工具箱
1.cv2.createAlignMTB() 主要是计算2张图像的位移,假设位移移动不大
而且计算的是全局的位移
参考下面的链接:
https://blog.csdn.net/LuohenYJ/article/details/89712234
https://blog.csdn.net/LuohenYJ/article/details/89840655
https://docs.opencv.org/4.x/d2/df0/tutorial_py_hdr.html
方便理解
使用代码:
print("Aligning images ... ")
alignMTB = cv2.createAlignMTB()
alignMTB.process(img_list, img_list)
2.多曝光图像的aline算法:median thresold bitmap原理讲解
https://blog.csdn.net/weixin_44735951/article/details/88941012
-
转换为灰度图或者利用G通道
-
利用均值或者中值,作为阈值得到二值图像。之所以不用sober,canny是因为不同曝光下检测到的边缘一致性比较低。
-
计算均值和中值的时候,对于严重过曝或者过暗的图像,可能因为大量的255,0像素导致 计算的均值 接近255和0。一个更鲁棒的方法计算均值或者中值是 排除 250以上或者5以下的像素
-
接下来就是通过阈值图像进行异或运算,这样差异为1。那么我们通过遍历其中一个图像的位移dx,dy,计算 error_sum, 寻找最恰到的dx,dy
-
考虑到dx,dy可能太大,利用金字塔减少计算量,从最后一层开始,每次搜索范围就是 [-1,1]很小
-
异或运算计算差异的时候还有一个问题是 在均值附近的一些区域,两张不同曝光的图像的二值图可能被引入一些噪声,此时可以计算图像的 exclusion mask,标记,在均值[-4,4]的区域。 这两张曝光图的exclusion mask 和 xor异或运算得到差异图 再进行与运算,得到更清晰的差异。
3.图像拼接算法stitch
http://www.s1nh.org/post/A-survey-on-image-mosaicing-techniques/
如图所示,图像拼接分为四个步骤:图像匹配(registration)、重投影(reprojection)、缝合(stitching)和融合(blending)。
stitch中的配准 主要是不同视角的图像重合区域不会太大,主要是根据特征点求转换矩阵。
而视频前后帧这种配准,小位移,重合区域多,主要利用光流。
还有特殊的图像就是多帧曝光,小位移,重合区域多,但是亮度差异有点大。
4.多曝光融合工具箱
https://github.com/Galaxies99/AlignHDRToolkit
介绍了一些配准方法。