论文学习——基于导向滤波的图像融合(GFF)
原文 Image Fusion with Guided Filtering - 2013
简介
本文提出了一种基于导向滤波的图像融合方法。融合的对象可以是多光谱图像,不同焦点的图像,不同曝光的图像等。论文比较创新点就是提出了一种不同幅图像的权重计算方法,引入了像素显著性和图像空间连续性的概念。并且使用了引导滤波来重建权重,最终得到了高效和不错的融合效果。
文中提到,该方法的优点:
- 只需要获取图片两个尺度,而过去的方法往往要在多个尺度上进行重建。这里所谓的尺度,即将一幅图像分解为基层(Base Layer)和细节层(Detail Layer),这个方法在如今的话已经广泛使用,例如基于滤波的RGB+NIR图像融合 - 2017。
- 提出了像素显著性(pixel saliency)和空间连续性(spatial consistency)的概念,用于构建不同图像的权重,这将在下文介绍。并且使用局部滤波的方法代替了最优化的方法,提高了效率。即使用了导向滤波,如对导向滤波尚有疑问,可参考导向滤波。
- 在具体实验中发现,在对不同层的融合时,像素显著性和空间连续性表现出的效果是不一样的。
算法
算法本身并不复杂,只是灵活地利用了不同滤波器所获得的图像信息,其主要流程如下图所示:
接下来结合上述流程和matlab代码,详解算法。(图是论文里截的,讲究看吧……)
im1 = im2double(imread('2.jpg'));
im2 = im2double(imread('1.jpg'));
A.Two-Scale Image Decomposition(双尺度分解)
一个简单的均值滤波来获取图像的基层和细节层,滤波器越大,得到的基层模糊程度越高。而细节层是原图减去基层图,随着滤波半径的增大,细节层的信息也会相应增加。论文中给出的建议滤波器大小为31×31。
%% Get B,D
h1 = fspecial('average',[31,31]); %定义一个滤波模板
B1 = imfilter(im1, h1, 'replicate'); %均值滤波得到图1基层 'replicate'是对边界值的处理模式
B2 = imfilter(im2, h1, 'replicate'); %均值滤波得到图2基层
D1 = im1-B1; %细节层
D2 = im2-B2;
B. Weight Map Construction With Guided Filtering(构建权重图)
第二步就是利用导向滤波进行权重重建,上述流程图中应该是各个通道单独处理的,这里直接放一起处理了。
首先对原图进行拉普拉斯滤波得到高频细节,然后再对得到的高频细节进行一次高斯滤波。这两个滤波器一个是高通滤波,一个是低通滤波。在这里对高频信息再进行一次低通滤波,应该是为了去除噪声影响。同时文中也给出了高斯滤波的建议参数,窗口为11×11,sigma=5。拉普拉斯滤波则采用默认的3×3窗口,同时注意在拉普拉斯滤波之后需要对滤波结果取一次绝对值,因为拉普拉斯滤波在求x,y方向梯度的时候会产生负值。
h2 = fspecial('laplacian', 0.2);
H1 = imfilter(im1, h2, 'replicate');
H2 = imfilter(im2, h2, 'replicate');
H1 = abs(H1); % 取绝对值
H2 = abs(H2);
h3 = fspecial('gaussian', [11,11], 5);
S1 = imfilter(H1, h3, 'replicate');
S2 = imfilter(H2, h3, 'replicate');
然后就是本文提出的像素显著性和空间连续性。
P n k = {