常见图像融合算法(alpha和金字塔融合)
一、背景介绍
图像融合算法作为图像的基础算法,在图像各个领域上使用非常普遍,常见的图像融合算法通常分为:像素级别,特征级别和决策级别融合,对于这些融合的定义,感兴趣小伙伴可以参考:像素、决策、特征级融合区别
由于我主要是在图像画质方向,因此更多接触和使用的主要是像素级融合,因此这里主要记录的基本都是偏像素级融合算法多些。
二、alpha融合
1、简单融合
alpha的图像融合非常简单:需要相应输入图像和对应的mask融合权重。
假设有两张输入图像,且对应mask的权重范围为[0,255],对应图像如下图所示:
那么每个像素点对应融合权重为:
out_pixel = (pixel1* mask + pixel2*(255-mask)) / 255
融合的结果图像表现:
可以看到,融合结果图像表现明显不自然。
2、权重处理
为了缓解这种不自然情况,通常会对权重做些简单滤波,比如guidedFilter等操作,让融合mask阈值平滑过渡。
处理前和之后mask表现如下:
最终结果图表现如下:
需要注意的是,过渡越平滑,引入的背景信息相对会越多,可能引起一些其他负面影响。
3、代码实现
简单复现的代码地址:https://github.com/yulinghan/ImageQualityEnhancement/tree/master/image_fusion/alpha
三、金字塔融合
1、基本实现
相关原理也已经很多人介绍过了,我这里也直接略过了。感兴趣小伙可以参考:山与水你和我:图像处理基础(十)拉普拉斯金字塔、压缩、图像融合 等其他很多资料。
以简单的拉普拉斯金字塔融合,和前面alpha融合图集为例子。
大致操作来说分为如下几步:
1、将2张输入图像进行拉普拉斯金字塔分解。
2、将mask图像进行高斯金字塔分解。
3、对每一层图像进行alpha图像融合。
4、rgb图像三个通道各自处理,将融合后的各层图像进行拉普拉斯金字塔重建,得到结果图像。
简单理解来说,金字塔融合就是拆分成了不同尺度的alpha融合,低频亮度信息上,将alpha权重尽可能平滑,越往高频走,alpha权重尽可能保持原来样子,保证整体亮度过渡自然同时,纹理信息和前景完全一致。
2、代码实现
简单复现的代码地址:https://github.com/yulinghan/ImageQualityEnhancement/tree/master/image_fusion/pyr_fusion