【图像融合】基于非下采样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,'nscttoolbox'); path(path,'ziji'); kk=1.5; %%%%%%%%%% %输入图像% %%%%%%%%%% [inputimageTVintRGB, inputimageTVintMAP] = imread('红外.jpg'); %输入gif格式的可见光图像% % inputimageTVintRGB = uint8(256*ind2rgb(inputimageTVintGIF, inputimageTVint_MAP)); %将gif格式数据转换为RGB格式数据%

[inputimageIRintRGB, inputimageIRintMAP] = imread('可见光.jpg'); %输入gif格式的红外图像% % inputimageIRintRGB = uint8(256*ind2rgb(inputimageIRintGIF, inputimageIRintMAP)); %将gif格式数据转换为RGB格式数据% %%%%%%%%%%%%% %输入图像结束% %%%%%%%%%%%%% [Ny,Nx] = size(inputimageTVintRGB);
%%%%%%%%%%% %图像预处理% %%%%%%%%%%%

%将可见光图像的格式转换为IHS格式% inputimageTVintIHS = rgb2ihs( inputimageTVintRGB ); inputimageTVIHS = double(inputimageTVintIHS); %将输入图像的数据类型转换为双精度数据类型% inputimageTVI = 256*inputimageTV_IHS(:,:,3); %将输入图像的I分量提取出来以进行NSCT分解%

%将红外图像的格式转换为gray格式% inputimageIRint = rgb2gray( inputimageIRintRGB ); inputimageIR= double(inputimageIRint); %将输入图像的数据类型转换为双精度数据类型%

inputimageTVS = inputimageTVIHS(:,:,2); inputimageTVH = inputimageTVIHS(:,:,1);

figure; subplot(1,2,1); imshow(uint8(inputimageTVI));title('Original TV image I') %显示输入可见光图像的I分量% subplot(1,2,2); imshow(uint8(inputimage_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分解% coeffsTVint = nsctdec( inputimageTVI, nlevels, dfilter, pfilter ); %分解可见光图像% coeffsIRint = nsctdec( inputimage_IR, nlevels, dfilter, pfilter ); %分解红外图像% %NSCT分解结束%

%%%%%%%%%%%%%%%%% %NSCT子带分解结束% %%%%%%%%%%%%%%%%% % imwrite(uint8(coeffsIRint{1}),'lowfrequent.bmp','bmp'); %%%%%%%%%% %图像融合% %%%%%%%%%%

%%%%%%%%%%%%% %图像融合结束% %%%%%%%%%%%%%

%%%%%%%%%%%%%% %NSCT子带重构% %%%%%%%%%%%%%% outimageendI = nsctrec( coeffsrec, dfilter, pfilter ) ; %重构灰度图像%
figure; imshow(uint8(outimageendI));title('融合图像I'); outimageend=zeros(Ny,Nx,3); %初始化彩色图像输出矩阵% outimageend=cat(3,inputimageTVH,inputimageTVS,outimageendI/256);
outimageendRGB=256*ihs2rgb(double(outimage_end)); %将输出彩色图像转换为RGB格式%

figure; imshow(uint8(outimageendRGB)); %显示融合后彩色图像% imwrite(uint8(outimageendRGB),'SWT22.bmp','bmp');

toc;
```

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值