图像融合基于非下采样Contourlet变换nsct算法实现红外图像和可见光图像的融合matlab源码
Posted Matlab咨询QQ1575304183
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像融合基于非下采样Contourlet变换nsct算法实现红外图像和可见光图像的融合matlab源码相关的知识,希望对你有一定的参考价值。
非下采样Contourlet变换(Nonsubsampled contourlet transform,NSCT)
类似小波变换,都是将源图像变换后对系数进行一些处理,再逆变换回目标图像。
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
非下采样Contourlet变换(Nonsubsampled contourlet transform,NSCT)采用非抽样金字塔结构和非抽样方向滤波器组构成,具有Contourlet变换所不具备的平移不变性、较高冗余度等优良特性,而且能够克服伪吉布斯现象。图像经过非下采样Contourlet变换后分解成多尺度、多方向的细节信息,这些细节信息代表了图像不同频带不同方向的特征,这就简化了系数之间的关系。
学习论文1:
结合NSCT与插值的图像超分辨率重建 - 道客巴巴 http://www.doc88.com/p-5496418928888.html
学习论文2:
基于学习的NSCT 的指纹图像超分辨率重建.
学习论文3:
一种新的NSCT超分辨率图像复原技术.pdf https://max.book118.com/html/2015/0909/25034669.shtm
学习论文4:
结合多特征的单幅图像超分辨率重建算法 - 哈尔滨工业大学科研学术 - Free考研 http://school.freekaoyan.com/heilongjiang/hit/keyan/2019/10-24/157190709570584.shtml
为提高直接捕获的图像质量,针对梯度特征只能提取水平、垂直方向信息及非下采样轮廓波变换(NSCT)提取细节信息不足的缺陷,提出一种结合Gabor变换及NSCT的超分辨率重建算法.该算法充分利用Gabor变换和NSCT的互补性,针对输入图像块的特点,采用Gabor变换来提取纹理特征,NSCT来提取轮廓特征,然后分别利用稀疏模型进行重建,最后合并成一幅高分辨率图像.由于输入图像或多或少存在模糊,在重建过程中,加入了去模糊的正则项,以消除输入模糊的影响.实验结果表明,结合两种特征的超分辨率效果与单一特征相比,能够恢复更多的细节信息,去模糊正则项也有一定的作用.本文方法与Kim提出的核岭回归及Yang提出的稀疏表示算法(SCSR)相比,主观上视觉效果更加清晰,客观上PSNR值平均提高了近2dB,说明了该算法能够有效地提高图像的质量。
方差分类:对于平坦块,重点复原纹理信息,利用Gabor滤波器提取小块的纹理特征;而对于非平坦块,重点恢复其轮廓信息,利用NSCT提取小块的轮廓特征。
NSCT不仅具有良好的多方向性和多尺度性,还具有平移不变性,能够有效地提取图像的轮廓特征. NSCT由非下采样金字塔(NSP)分解和非下采样方向滤波器组(NSDFB)分解组成。
以两层NSP分解和两层NSDFB分解为例,阐述图像分解过程.图像首先经NSP分解得到一个高频子带和一个低频子带,然后采用NSDFB对高频子带进行方向分解,若方向分解系数为m,则得到2m个高频子带.而下一次NSP分解再对上一层NSP分解得到的低频图像进行分解,因此经过两层NSP分解和两层NSDFB分解,可以得到1个低频子带和8个高频子带.相比较梯度特征,NSCT可以得到更多尺度与方向的信息,对图像的描述能力更强。
%NSCT_imagefusion%
%实现红外与可见光图像融合;
%初始化%
clear all;
close all;
clc;
%初始化结束%
%计时开始%
tic;
path(path,'nsct_toolbox');
path(path,'ziji');
kk=1.5;
%%%%%%%%%%
%输入图像%
%%%%%%%%%%
[input_image_TV_int_RGB, input_image_TV_int_MAP] = imread('红外.jpg'); %输入gif格式的可见光图像%
% input_image_TV_int_RGB = uint8(256*ind2rgb(input_image_TV_int_GIF, input_image_TV_int_MAP)); %将gif格式数据转换为RGB格式数据%
[input_image_IR_int_RGB, input_image_IR_int_MAP] = imread('可见光.jpg'); %输入gif格式的红外图像%
% input_image_IR_int_RGB = uint8(256*ind2rgb(input_image_IR_int_GIF, input_image_IR_int_MAP)); %将gif格式数据转换为RGB格式数据%
%%%%%%%%%%%%%
%输入图像结束%
%%%%%%%%%%%%%
[Ny,Nx] = size(input_image_TV_int_RGB);
%%%%%%%%%%%
%图像预处理%
%%%%%%%%%%%
%将可见光图像的格式转换为IHS格式%
input_image_TV_int_IHS = rgb2ihs( input_image_TV_int_RGB );
input_image_TV_IHS = double(input_image_TV_int_IHS); %将输入图像的数据类型转换为双精度数据类型%
input_image_TV_I = 256*input_image_TV_IHS(:,:,3); %将输入图像的I分量提取出来以进行NSCT分解%
%将红外图像的格式转换为gray格式%
input_image_IR_int = rgb2gray( input_image_IR_int_RGB );
input_image_IR= double(input_image_IR_int); %将输入图像的数据类型转换为双精度数据类型%
input_image_TV_S = input_image_TV_IHS(:,:,2);
input_image_TV_H = input_image_TV_IHS(:,:,1);
figure;
subplot(1,2,1);
imshow(uint8(input_image_TV_I));title('Original TV image I') %显示输入可见光图像的I分量%
subplot(1,2,2);
imshow(uint8(input_image_IR));title('Original IR image Gray') %显示输入红外图像的灰度图像%
%%%%%%%%%%%%%%%
%图像预处理结束%
%%%%%%%%%%%%%%%
%金字塔表示参数%
Nsc = ceil(log2(min(Ny,Nx)) - 7); %分解尺度的数量 (自适应于图像尺寸)%
Nor = 8; %每级分解的方向数%
%%%%%%%%%%%%%%%
%初始化参数结束%
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%
%NSCT子带分解%
%%%%%%%%%%%%%%
%初始化NSCT子带分解参数%
pfilter = 'maxflat' ; %金字塔滤波器%
dfilter = 'dmaxflat7' ; %方向滤波器%
nlevels=zeros(1,Nsc+1);
for i=1:Nsc+1
nlevels(i)=log2(Nor); %初始化分解尺度%
end
%初始化NSCT子带分解参数结束%
%NSCT分解%
coeffs_TV_int = nsctdec( input_image_TV_I, nlevels, dfilter, pfilter ); %分解可见光图像%
coeffs_IR_int = nsctdec( input_image_IR, nlevels, dfilter, pfilter ); %分解红外图像%
%NSCT分解结束%
%%%%%%%%%%%%%%%%%
%NSCT子带分解结束%
%%%%%%%%%%%%%%%%%
% imwrite(uint8(coeffs_IR_int{1}),'lowfrequent.bmp','bmp');
%%%%%%%%%%
%图像融合%
%%%%%%%%%%
%%%%%%%%%%%%%
%图像融合结束%
%%%%%%%%%%%%%
%%%%%%%%%%%%%%
%NSCT子带重构%
%%%%%%%%%%%%%%
out_image_end_I = nsctrec( coeffs_rec, dfilter, pfilter ) ; %重构灰度图像%
figure;
imshow(uint8(out_image_end_I));title('融合图像I');
out_image_end=zeros(Ny,Nx,3); %初始化彩色图像输出矩阵%
out_image_end=cat(3,input_image_TV_H,input_image_TV_S,out_image_end_I/256);
out_image_end_RGB=256*ihs2rgb(double(out_image_end)); %将输出彩色图像转换为RGB格式%
figure;
imshow(uint8(out_image_end_RGB)); %显示融合后彩色图像%
imwrite(uint8(out_image_end_RGB),'SWT22.bmp','bmp');
toc;
完整代码或仿真咨询QQ1575304183
以上是关于图像融合基于非下采样Contourlet变换nsct算法实现红外图像和可见光图像的融合matlab源码的主要内容,如果未能解决你的问题,请参考以下文章
图像融合基于matlab粒子群优化自适应多光谱图像融合含Matlab源码 004期