MTB图像配准算法实现
一、背景介绍
本篇主要是对论文:Fast, Robust Image Registration for Compositing High Dynamic Range Photographs from Hand-Held Exposures 的基本复现。
二、基本原理
1、 通过将待配准的输入图像,自适应阈值的二值化处理,大幅度规避了亮度变化和噪声干扰对配准结果影响。
2、多尺度从低频到高频,暴力八邻域相似度匹配,从粗到细来简单暴力的得到配准结果。
3、所以本篇方法的配准数据只有平移,无法处理旋转或者缩放等情况,并且算法支持配准最大范围和金字塔层数正相关。
三、代码流程
1、拿到待配准两张输入图像,并截取图像中心公共区域。
2、将输入图像进行高斯金字塔拆分。
3、计算每张图像均值,并以均值为阈值,图像图像二值化处理。
4.1、拿到金字塔最顶层图像,参考帧保持不动,待配准图像在原图保持不变和往8邻域方向便宜一个像素,生成一共9张待配准图像。
4.2、9帧图像分别和当前层参考帧计算相似性(都是二值图像,直接全图xor就能得到相似性误差),取最相似图像,该图像在8邻域上相对于原图的偏移,就表示当前层配准数据shift。
4.3、下一层图像拿到上层配准数据shift后x2,并以该数据对当前层待配准图像进行偏移,偏移后图像和4.2一样操作,的到当前层配准数据shift2,合并最新配准数据shift = shit*2 + shift2,传给下一层,循环迭代,直达所有层图像数据处理完成,得到的最终shift即为最终配准结果。
四、代码实现
简单代码复现如下,原始代码地址,搞忘了在哪下的了,我在其基础上稍微精简抽了下核心部分。
https://github.com/yulinghan/ImageQualityEnhancement/tree/master/image_registration/mtb