SSR-Laplacian Image Fusion
AN IMPROVED FUSION METHOD FOR INFRARED AND LOW-LIGHT LEVEL VISIBLE IMAGE - 2017
该论文是一篇SCI二区的论文,发表在TIP上,本文提出了一种融合低照度可见光图像和红外图像的方法。关于本文的创新点,并不是很强,主要是增加了图像的预处理步骤,后续过程多是一些传统处理方法的组合和延伸。由于创新点并不是很强,因此并没有细读,在这里做一个简单的记录。
算法框架
由图可概括该算法的流程如下:
- 可见光图像的预处理:SSR算法,一种基于Retinex的人眼生理特征所发展起来的算法。这里用到了最基本的Single Scale Retinex算法,用于提升可见光图像的对比度。由于低照度图像本身的信息不多,因此增强可见光图像对于融合的质量理论上会有较大的提升。
- 拉普拉斯金字塔分解:拉普拉斯金字塔分解的图像融合本身就是一个很经典的算法,在这里并没有什么更多的创新之处。
- 融合策略:拉普拉斯金字塔的各种融合算法差异就在于融合策略的选取,本文所用的是一种局部能量特征法,该法的起源也可以说是很早了,所以也谈不上创新。
算法实现
该算法本身的借鉴意义有限,但是几个子算法都有值得推敲的地方。在此,以Matlab代码的形式,对照上述的算法框架,做一个简单的实现。
SSR算法,我们看到的图像一般都是光线和物体共同作用的结果,因此光线的好坏,会很大程度上影响图像的质量。SSR算法则是从人眼特性的角度,剥离光照的影响,还原物体的内在属性。关于此算法,有很多变体算法和延伸内容,如有兴趣可以自行学习,在此给出百度的SSR。本文,只给出单尺度SSR的示例。
function out = SSR(im, sigma)
%Single Scale Retinex
%分通道处理
if ~exist('sigma', 'var')
sigma = 80;
end
hsize = size(im(:,:,1));
out = zeros([hsize, 3]);
k = fspecial('gaussian', hsize, sigma);
G = imfilter(im, k, 'replicate');
for i=1:size(im, 3)
L = G(:,:,i);
r = log(im(:,:,i)+1)-log(L+1);
R = exp(r)-1;
Max = max(R(:));
Min = min(R(:));
out(:,:,i) = (R-Min)/(Max-Min);
end
end
效果如图,下图是采用不同的尺度得到的结果。如何选取sigma取决于你需要更好的还原颜色,还是更好的提取特征。其实我不知道这一步在实际做低照度夜视图像时有什么用。
拉普拉斯金字塔分解,相关资料较多,不多做解释。此处给出彩色图像和红外图像的拉普拉斯金字塔融合效果。
function pyr = LPD(I, nlev, sigma)
%Laplacian Pyramid Decomposition
%拉普拉斯金字塔分解,在灰度图进行