【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码

图像融合技术能充分弥补单一传感器的不足,获得更加可靠、准确和全面的图像数据。图像融合技术已经全面的应用于遥感、军事、医疗卫生等各个方面。目前图像融合的研究领域主要集中在基于图像稀疏表示的融合方法上,其中包括基于多尺度分解的融合方法和基于冗余字典分解的融合方法,但是两种方法均存在着各自的不足。因此本文将以此为出发点,寻找性能上更优的图像融合方法。其次,目前对图像融合的客观质量评价大多依据经验选择,缺少关于如何合理选择客观评价指标集的研究,因此本文将对图像融合客观评价指标集的遴选方法进行研究。本文提出了基于NSST和SR相结合的图像融合算法。本文首先研究基于多尺度的图像融合方法,分别对小波(DWT)、曲线波(CVT)、非下采样轮廓波(NSCT)和非下采样剪切波(NSST)进行研究,通过对比实验分析得到了基于多尺度图像融合中分解层数的选择和滤波器的选择标准,同时论证了NSST的图像融合在基于多尺度图像融合方法中的优势。本文接着研究了基于分支字典的图像融合方法(SR),通过对无污染图像、噪声图像和失配图像的实验,证明了SR能够改善融合系统的鲁棒性。在两种算法研究的基础上,选择NSST和SR,本文通过实验分析对比两种算法的优缺点,发现了它们存在着互补特性,基于此提出了基于NSST和SR相结合的图像融合算法。该方法首先对图像进行NSST分解,然后在低频子带,采用学习得到的字典对低频图像通过SR方法进行融合,在高频子带以区域能量为显著性指标进行融合,最后通过NSST逆变换得到融合结果。对于提出的算法,本文接着通过对多聚焦图像、红外可见光图像、以及医学图像进行实验验证该算法的优势。本文的研究证明了基于NSST和SR相结合的图像融合算法能够充分保留其优势,弥补其不足,优于NSST和SR两种算法本身。本文以多聚焦图像融合为应用背景,提出了一种图像融合客观评价指标集的选择方法。该方法首先通过图像融合客观评价指标进行相关性分析。接着通过相关性对指标进行聚类。然后针对多聚焦图像的具体应用,分别在无污染图像、噪声图像、失配图像三种情况下对指标的一致性进行分析,最后结合相关性分析和一致性分析得到结果。实验表明,通过以上方法,能够得到相对合理的多聚焦图像融合的客观评价指标集。

一、融合算法介绍

1.1 拉普拉斯金字塔算法

拉普拉斯金字塔

  在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节信息。为描述这些高频信息,人们定义了拉普拉斯金字塔(Laplacian Pyramid, LP)。用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为 LP 分解图像。

  将Gl内插方法得到放大图像*Gl,使*Gl的尺寸与*Gl-1的尺寸相同,即放大算子Expand。

【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码_第1张图片

  该式子实现两个步骤:在偶数行和列插入0,然后使用下采样中的高斯核进行滤波处理,得到和l-1层一样大小的图像。

【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码_第2张图片

  N为拉普拉斯金字塔顶层的层号,LPl是拉普拉斯金字塔分解的第L层图像。由LP0,LP1、LP2…LPN构成的金字塔即为拉普拉斯金字塔。它的每一层L0图像是高斯金字塔本层G0图像与其高一层图像G1经内插放大后图像*G1的差,此过程相当于带通滤波,因此拉普拉斯金字塔又称为带通金字塔分解。
  
  内插方法:opencv中有实现的函数pyrup。可以得到*G1。然后在两个函数作差,相减就可以得到拉普拉斯金字塔。

  图解gauss、laplace金字塔的构成:

【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码_第3张图片

【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码_第4张图片

  求得每个图像的拉普拉斯金字塔后需要对相应层次的图像进行融合,具体的融合规则有,取大、取小,等等。

  重构

  对融合后的拉普拉斯金字塔,从其顶层开始逐层从上至下按下式进行递推,可以恢复其对应的高斯金字塔,并最终可得到原图像G0。就是从最高层开始使用内插的方法。

1.2 小波变换

小波就是很小的波,小波直接把傅里叶变换的基给换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间了。
小波变换的公式如下
小波变换公式
从公式可以看出,不同于傅里叶变换,变量只有频率ω,小波变换有两个变量:尺度a和平移量 τ。尺度a控制小波函数的伸缩,平移量 τ控制小波函数的平移。尺度就对应于频率(反比),平移量 τ就对应于时间。
伸缩因子的作用不同的伸缩因子生成不同的频率成分,如下图所示。
这里写图片描述
平移因子使得小波能够沿信号的时间轴实现遍历分析,如下图所示。这里写图片描述
多分辨分析也称为多尺度分析,是建立在函数空间概念上的理论。它构造了一组正交基,使得尺度空间与小波空间相互正交。随着尺度由大到小的变化,可在各尺度上由粗及精地观察目标。这就是多分辨率分析的思想。小波多分辨分析的原理图如下。
这里写图片描述
小波分解树如下图所示。高频分量称为细节分量,频率分量部分,称为近似分量
这里写图片描述
小波包分析可以看作是小波分解的一种推广方法,对多分辨分析没有细分的高频分量部分进行进一步的分解,小波包分解树如下图所示。
这里写图片描述

1.3 非下采样轮廓波nsct算法

NSCT是基于Nonsubsampled金字塔(NSP)和Nonsubsampled方向滤波器(NSDFB)的一种变换。首先由NSP对输入图像进行塔形分解,分解为高通和低通两个部分,然后由NSDFB将高频子带分解为多个方向子带,低频部分继续进行如上分解。

  • Nonsubsampled Pyramid(NSP):

Nonsubsampled Pyramid(NSP)和Contourlet的Laplacian Pyramid(LP)多尺度分析特性不同。图像通过Nonsubsampled Pyramid(NSP)进行多尺度分解,NSP去除了上采样和下采样,减少了采样在滤波器中的失真,获得了平移不变性。NSP为具有平移不变性滤波结构的NSCT多尺度分析,可以得到与LP分解一样的多尺度分析特性。图2.4(a)处分为3个尺度。

  • Nonsubsampled方向滤波器(NSDFB)

Nonsubsampled方向滤波器(NSDFB)是一个双通道的滤波器,将分布在同方向的奇异点合成NSCT的系数。方向滤波器(DFB)是Bamberger and Smith提出的。其通过一个l层的树状结构的分解,有效的将信号分成了 个子带,其频带分割成为锲形。Nonsubsampled DFB(NSDFB)为非采样,减少了采样在滤波器中的失真,获得了平移不变性。并且每个尺度下的方向子图的的大小都和原图同样大小,Contourlet变换为所有子带之和等于原图。NSCT有更多的细节得以保留,变换系数是冗余的。下为三个尺度下对图像频域的分割图,其中每个尺度的方向子带数目以2倍递增,以在1,2,3尺度下的方向子带数目分别为2,4,8个。
paper 125:NSCT——Nonsubsampled contourlet 变换程序(尺度不变性问题研究) - Jason.Hevey - 博客园 https://www.cnblogs.com/molakejin/p/5918976.html

【CV】NSCT:Nonsubsampled Contourlet变换算法以及matlab实现_计算机视觉CV,图像处理,图像融合_SoaringLee_fighting的技术专栏-CSDN博客 https://blog.csdn.net/soaringlee_fighting/article/details/80150711

【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码_第5张图片

非下采样Contourlet变换(Nonsubsampled contourlet transform,NSCT)采用非抽样金字塔结构和非抽样方向滤波器组构成,具有Contourlet变换所不具备的平移不变性、较高冗余度等优良特性,而且能够克服伪吉布斯现象。图像经过非下采样Contourlet变换后分解成多尺度、多方向的细节信息,这些细节信息代表了图像不同频带不同方向的特征,这就简化了系数之间的关系。

 

1.4曲线波(CVT)

二、部分代码

clear all;
close all;
clc;

addpath(genpath('sparsefusion'));
addpath(genpath('dtcwt_toolbox'));
addpath(genpath('fdct_wrapping_matlab'));
addpath(genpath('nsct_toolbox'));

load('sparsefusion/Dictionary/D_100000_256_8.mat');

[imagename1 imagepath1]=uigetfile('source_images\*.jpg;*.bmp;*.png;*.tif;*.tiff;*.pgm;*.gif','Please choose the first input image');
image_input1=imread(strcat(imagepath1,imagename1));    
[imagename2 imagepath2]=uigetfile('source_images\*.jpg;*.bmp;*.png;*.tif;*.tiff;*.pgm;*.gif','Please choose the second input image');
image_input2=imread(strcat(imagepath2,imagename2));     

figure;subplot(121);imshow(image_input1);title('图1');subplot(122);imshow(image_input2);title('图2')

if size(image_input1)~=size(image_input2)
    error('two images are not the same size.');
end

img1=double(image_input1);
img2=double(image_input2);

overlap = 6;                    
epsilon=0.1;
level=4;

% To make a comparison, please use 
% LP-SR for medical image fusion, 
% DTCWT-SR for visible-infrared image fusion,
% NSCT-SR for multi-focus image fusion.

tic;
if size(img1,3)==1    %for gray images
    imgf = lp_sr_fuse(img1,img2,level,3,3,D,overlap,epsilon);      %LP-SR
    imgf1 = rp_sr_fuse(img1,img2,level,3,3,D,overlap,epsilon);     %RP-SR
    imgf2 = dwt_sr_fuse(img1,img2,level,D,overlap,epsilon);        %DWT-SR
    imgf3 = dtcwt_sr_fuse(img1,img2,level,D,overlap,epsilon);      %DTCWT-SR
    imgf4 = curvelet_sr_fuse(img1,img2,level+1,D,overlap,epsilon); %CVT-SR
    imgf5 = nsct_sr_fuse(img1,img2,[2,3,3,4],D,overlap,epsilon);   %NSCT-SR
else                  %for color images
    imgf=zeros(size(img1));
    imgf1=zeros(size(img1));
    imgf2=zeros(size(img1));
    imgf3=zeros(size(img1));
    imgf4=zeros(size(img1));
    imgf5=zeros(size(img1));
    for i=1:3
        imgf(:,:,i) = lp_sr_fuse(img1(:,:,i),img2(:,:,i),level,3,3,D,overlap,epsilon);      %LP-SR
        imgf1(:,:,i) = rp_sr_fuse(img1(:,:,i),img2(:,:,i),level,3,3,D,overlap,epsilon);     %RP-SR
        imgf2(:,:,i) = dwt_sr_fuse(img1(:,:,i),img2(:,:,i),level,D,overlap,epsilon);        %DWT-SR
        imgf3(:,:,i) = dtcwt_sr_fuse(img1(:,:,i),img2(:,:,i),level,D,overlap,epsilon);      %DTCWT-SR
        imgf4(:,:,i) = curvelet_sr_fuse(img1(:,:,i),img2(:,:,i),level+1,D,overlap,epsilon); %CVT-SR
        imgf5(:,:,i) = nsct_sr_fuse(img1(:,:,i),img2(:,:,i),[2,3,3,4],D,overlap,epsilon);   %NSCT-SR
    end
end
toc;

figure;;subplot(231);imshow(uint8(imgf));title('LP-SR');
subplot(232);imshow(uint8(imgf1));title('RP-SR')
subplot(233);imshow(uint8(imgf2));title('DWT-SR')
subplot(234);imshow(uint8(imgf3));title('DTCWT-SR')
subplot(235);imshow(uint8(imgf4));title('CVT-SR')
subplot(236);imshow(uint8(imgf5));title('NSCT-SR')
imwrite(uint8(imgf),'Results/fused_mstsr.tif');

三、仿真结果

【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码_第6张图片

 【图像融合】基于nsct-SR+dwt-SR+拉普拉斯金字塔算法-SR等多种图像融合算法matlab源码_第7张图片

 

四、参考文献

[1] Ohkawa Y ,  Hadi C ,  Fukui S K . Fast Combined Separability Filter for Detecting Circular Objects[C]// Iapr Conference on Machine Vision Applications. 2011.

[1] Ohkawa, Y. ,  C. Hadi , and  S. K. Fukui . "Fast Combined Separability Filter for Detecting Circular Objects." Iapr Conference on Machine Vision Applications 2011.

 

你可能感兴趣的:(图像处理,算法,机器学习,c++)