小波变换-图像融合matlab代码
离散小波变换matlab
离散小波变换matlab一、离散小波变换介绍离散小波变换(Discrete Wavelet Transform, DWT)是一种基于小波分析的数学方法,它可以将信号分解成不同尺度的频带,从而实现信号的多分辨率分析。
与傅里叶变换相比,离散小波变换更加适用于非平稳信号的处理,如图像、音频等。
二、matlab中的离散小波变换函数matlab提供了多种离散小波变换函数,常用的有dwt和wavedec两个函数。
1. dwt函数dwt函数用于对一维信号进行单层离散小波变换。
其语法为:[c,l] = dwt(x, wname)其中,x为输入信号,wname为所选用的小波基名称。
c为输出系数向量,l为各层输出长度向量。
2. wavedec函数wavedec函数用于对一维信号进行多层离散小波分解。
其语法为:[c,l] = wavedec(x, n, wname)其中,x为输入信号,n为所需分解层数,wname为所选用的小波基名称。
c为输出系数向量,l为各层输出长度向量。
三、matlab中的离散小波重构函数与离散小波变换函数对应,matlab也提供了离散小波重构函数,常用的有idwt和waverec两个函数。
1. idwt函数idwt函数用于对单层离散小波变换系数进行重构。
其语法为:x = idwt(c, l, wname)其中,c为输入系数向量,l为各层输出长度向量,wname为所选用的小波基名称。
x为输出信号。
2. waverec函数waverec函数用于对多层离散小波分解系数进行重构。
其语法为:x = waverec(c, l, wname)其中,c为输入系数向量,l为各层输出长度向量,wname为所选用的小波基名称。
x为输出信号。
四、matlab中的图像处理中的应用离散小波变换在图像处理中有广泛应用。
常见的应用包括图像压缩、边缘检测、图像增强等。
1. 图像压缩利用离散小波变换可以将图像分解成不同尺度的频带,在高频子带上进行量化和编码可以实现图像压缩。
Matlab中的小波变换与小波包分析方法详解
Matlab中的小波变换与小波包分析方法详解引言近年来,小波变换在信号处理领域中得到了广泛的应用。
小波变换是一种能够捕捉信号时频特性的有效工具,可以用来分析、压缩和去噪各种类型的信号。
本文将详细介绍Matlab中的小波变换和小波包分析方法,以帮助读者更好地理解和应用这一强大的信号处理技术。
一、小波变换(Wavelet Transform)小波变换是一种将信号分解成不同尺度的基函数的技术。
与传统的傅里叶变换相比,小波变换具有更好的时频局部化特性。
Matlab中提供了丰富的小波分析工具箱,可以方便地进行小波变换的计算。
1.1 小波基函数小波基函数是小波变换的基础。
不同类型的小波基函数适用于不同类型的信号。
在Matlab中,我们可以使用多种小波基函数,如Daubechies小波、Haar小波和Morlet小波等。
1.2 小波分解小波分解是指将信号分解成多个尺度的小波系数。
通过小波分解,我们可以获取信号在不同尺度上的时频特性。
Matlab中提供了方便的小波分解函数,例如'dwt'和'wavedec'。
1.3 小波重构小波重构是指根据小波系数重新构建原始信号。
通过小波重构,我们可以恢复原始信号的时域特性。
在Matlab中,可以使用'idwt'和'waverec'函数进行小波重构。
二、小波包分析(Wavelet Packet Analysis)小波包分析是对小波变换的进一步扩展,它允许对信号进行更精细的分解和重构。
小波包分析提供了一种更灵活的信号分析方法,能够获得更详细的时频特性。
2.1 小波包分解小波包分解是指将信号分解成具有不同频带的小波包系数。
与小波分解相比,小波包分解提供了更高的分辨率和更详细的频谱信息。
在Matlab中,可以使用'wavedec'函数进行小波包分解。
2.2 小波包重构小波包重构是根据小波包系数重新构建原始信号。
MATLAB小波变换指令及其功能介绍(超级有用)解读
MATLAB小波变换指令及其功能介绍1 一维小波变换的 Matlab 实现(1) dwt函数功能:一维离散小波变换格式:[cA,cD]=dwt(X,'wname')[cA,cD]=dwt(X,Lo_D,Hi_D)别可以实现一维、二维和 N 维DFT说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函数 'wname'对信号X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。
(2) idwt 函数功能:一维离散小波反变换格式:X=idwt(cA,cD,'wname')X=idwt(cA,cD,Lo_R,Hi_R)X=idwt(cA,cD,'wname',L)函数 fft、fft2 和 fftn 分X=idwt(cA,cD,Lo_R,Hi_R,L)说明:X=idwt(cA,cD,'wname') 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。
'wname' 为所选的小波函数X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和Hi_R 经小波反变换重构原始信号 X 。
X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。
2 二维小波变换的 Matlab 实现二维小波变换的函数别可以实现一维、二维和 N 维 DFT函数名函数功能---------------------------------------------------dwt2 二维离散小波变换wavedec2 二维信号的多层小波分解idwt2 二维离散小波反变换waverec2 二维信号的多层小波重构wrcoef2 由多层小波分解重构某一层的分解信号upcoef2 由多层小波分解重构近似分量或细节分量detcoef2 提取二维信号小波分解的细节分量appcoef2 提取二维信号小波分解的近似分量upwlev2 二维小波分解的单层重构dwtpet2 二维周期小波变换idwtper2 二维周期小波反变换----------------------------------------------------------- (1) wcodemat 函数功能:对数据矩阵进行伪彩色编码函数 fft、fft2 和 fftn 分格式:Y=wcodemat(X,NB,OPT,ABSOL)Y=wcodemat(X,NB,OPT)Y=wcodemat(X,NB)Y=wcodemat(X)说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵Y ;NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16;OPT 指定了编码的方式(缺省值为 'mat'),即:别可以实现一维、二维和 N 维 DFTOPT='row' ,按行编码OPT='col' ,按列编码OPT='mat' ,按整个矩阵编码函数 fft、fft2 和 fftn 分ABSOL 是函数的控制参数(缺省值为 '1'),即:ABSOL=0 时,返回编码矩阵ABSOL=1 时,返回数据矩阵的绝对值 ABS(X)1. 离散傅立叶变换的 Matlab实现(2) dwt2 函数功能:二维离散小波变换格式:[cA,cH,cV,cD]=dwt2(X,'wname')[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数'wname' 对二维信号 X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。
小波变换的matlab实现
举例: A1=upcoef('a','cA1','db1',1,ls); D1=upcoef('d','cD1','db1',1,ls);
subplot(1,2,1);plot(A1);title('Approximation A1')
subplot(1,2,2);plot(D1);title('Detail D1')
重构原始信号
*
2D图形接口
*
显示
*
小波分析用于信号处理
01
信号的特征提取
信号处理
常用信号的小波分析
GUI进行信号处理
*
正弦波的线性组合
S(t)=sin(2t)+sin(20t)+sin(200t)
*
2019
间断点检测
01
2020
波形未来预测
02
2021
各分信号的频率识别
03
2022
信号从近似到细节的迁移
*
多尺度二维小波
命令:wavedec2
格式: [C, S]=wavedec2(X,N,’wname’) [C, S]=wavedec2(X,N,Lo_D,Hi_D)
*
[C,S] = wavedec2(X,2,'bior3.7'); %图像的多尺度二维小波分解
提取低频系数
命令:appcoef2 格式: 1. A=appcoef2(C,S,’wname’,N) 2. A=appcoef2(C,S,’wname’) 3. A=appcoef2(C,S,Lo_R,Hi_R) 4. A=appcoef2(C,S,Lo_R,Hi_R,N) cA2 = appcoef2(C,S,'bior3.7',2); %从上面的C中提取第二层的低频系数
在Matlab中进行图像融合与图像叠加的方法与技巧
在Matlab中进行图像融合与图像叠加的方法与技巧引言:随着数字图像处理和计算机视觉领域的发展,图像融合和图像叠加变得越来越重要。
图像融合是指将多幅图像合成为一幅具有更清晰、更丰富信息的图像,而图像叠加则是在保留所叠加图像的原始信息的同时,使图像更加丰富和易于理解。
Matlab作为一种强大的科学计算工具,提供了丰富的图像处理函数和工具箱,可以很方便地进行图像融合与图像叠加。
一、图像融合的方法与技巧1. 融合算法图像融合的基本方法有加权平均法、空间域融合法、频域融合法、小波融合法等。
加权平均法是最简单的方法,通过计算图像像素的平均值来融合。
空间域融合法是通过对直接融合的图像进行空间域操作来提取融合结果。
频域融合法则是通过将图像转换到频域,然后进行频域操作来实现融合。
小波融合法是基于小波变换的方法,利用小波分析的多尺度分解能力对图像进行分析和融合。
根据具体需求和图像的特点,选择合适的融合算法是非常重要的。
2. 图像预处理在进行图像融合之前,通常需要进行图像预处理,以提高融合结果的质量。
常用的图像预处理方法包括灰度拉伸、直方图均衡化、滤波等。
灰度拉伸是通过对图像的像素值进行线性变换,将图像像素值的范围拉伸到合适的范围内,从而增加图像的对比度。
直方图均衡化则是将图像的像素值在灰度直方图上均匀分布,以增强图像的细节。
滤波是通过对图像进行滤波操作,如低通滤波、高通滤波等,以去除图像中的噪声和不需要的细节。
3. 图像融合的策略图像融合的策略可以根据具体需求来选择。
常见的策略包括全局融合和局部融合。
全局融合是将所有图像的信息进行融合,得到整体的融合结果。
而局部融合则是将不同图像的不同区域进行融合,以保留更多的细节和纹理。
根据具体应用和需求,选择合适的融合策略可以使融合结果更加符合实际需求。
4. 参数设置与调整在进行图像融合过程中,不同的算法和方法有各自的参数,根据不同的图像和具体应用,需要适时地进行参数的设置和调整。
图像处理matlab及图像融合图像镶嵌图像拼接
图像处理matlab及图像融合图像镶嵌图像拼接在实际的对图像处理过程中,由于我们读出的图像是unit8型,⽽在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型)。
因此读出的图像数据不能直接进⾏相加求平均,因此必须使⽤⼀个函数将图像数据转换成双精度型数据。
MATLAB中提供了这样的函数:im2double函数,其语法格式为:I2 = im2double(I1)其中I1是输⼊的图像数据,它可能是unit8或unit16型数据,通过函数的变化输出I2为⼀个double型数据,这样两图像数据就可以⽅便的进⾏相加等代数运算.要把double的图像(范围是0到1)再次转化为256灰度值的,可以这样Igrey= uint8(I2*255)图像类型转换函数:dither() 通过颜⾊抖动,把真彩图像转换成索引图像或灰度图象转换成⼆值图像gray2ind() 将灰度图像(或⼆值图像)转换成索引图像grayslice() 通过设定的阈值将灰度图象转换成索引图像im2bw() 通过设定亮度阈值将灰度、真彩、索引图象转换成⼆值图像ind2gray() 将索引图象转换成灰度图象ind2rgb() 将索引图象转换成真彩⾊图像mat2gray() 将⼀个数据矩阵转换成⼀幅灰度图象rgb2gray() 将真彩转换成灰度图象rgb2ind() 将真彩转换成索引图象图像类型与类型间的转换1。
索引图像:包括⼀个数据矩阵X和⼀个⾊图阵MAP。
矩阵元素值指向MAP中的特定颜⾊向量。
2。
灰度图像:数据矩阵I,I中的数据代表了颜⾊灰度值。
矩阵中的元素可以是double类型、8位或16位⽆符号的整数类型。
3。
RGB图像:即真彩图像。
矩阵中每个元素为⼀个数组,数组的元素定义了像素的红、绿、蓝颜⾊值。
RGB数组可以是double类型、8位或16位⽆符号的整数类型。
4。
⼆值图像:⼀个数据阵列,每个象素只能取0或1。
矩阵的基本运算⾏列式求值:det(A)矩阵加减:+、-矩阵相乘:*矩阵左除:A/B %相当于inv(A)*B矩阵右除:A\B %相当于A*inv(B)矩阵的幂:^矩阵转置:'矩阵求共轭(实部相同,虚部相反):conj(X)矩阵求逆:inv(X)级数的求和与收敛symsum(fun,var,a,b):其中fun是通项表达式,var为求和变量,a为求和起点,b为求和终点例如:I为1/[n*(2n+1)]从1到正⽆穷的和,求Isyms n;f1=1/(n*(2*n+1));I=symsum(f1,n,1,inf)计算结果为:I =2-2*log(2)空间曲⾯mesh()函数语法:mesh(Z):mesh(X,Y,Z,C):其中C是⽤来定义相应点颜⾊等属性的数组例:求x^2+y^2=z的空间曲⾯x=-4:4;y=x;[X,Y]=meshgrid(x,y);%⽣成x,y坐标Z=X.^2+Y.^2;mesh(X,Y,Z)曲⾯图[x,y]=meshgrid(xa,ya) 当xa,ya分别为m维和n维⾏向量,得到x和y均为n⾏m列矩阵。
(完整版)MATLAB小波变换指令及其功能介绍(超级有用)
MATLAB小波变换指令及其功能介绍1 一维小波变换的 Matlab 实现(1) dwt函数功能:一维离散小波变换格式:[cA,cD]=dwt(X,'wname’)[cA,cD]=dwt(X,Lo_D,Hi_D)别可以实现一维、二维和 N 维 DFT说明:[cA,cD]=dwt(X,'wname’)使用指定的小波基函数’wname’ 对信号X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D)使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解.(2) idwt 函数功能:一维离散小波反变换格式:X=idwt(cA,cD,’wname’)X=idwt(cA,cD,Lo_R,Hi_R)X=idwt(cA,cD,'wname',L)函数 fft、fft2 和 fftn 分X=idwt(cA,cD,Lo_R,Hi_R,L)说明:X=idwt(cA,cD,'wname’) 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X .’wname'为所选的小波函数X=idwt(cA,cD,Lo_R,Hi_R)用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。
X=idwt(cA,cD,’wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L)指定返回信号 X 中心附近的 L 个点。
2 二维小波变换的 Matlab 实现二维小波变换的函数别可以实现一维、二维和 N 维 DFT函数名函数功能——————----—--——--———--—-—-----————-——————-—--—---——dwt2 二维离散小波变换wavedec2 二维信号的多层小波分解idwt2 二维离散小波反变换waverec2 二维信号的多层小波重构wrcoef2 由多层小波分解重构某一层的分解信号upcoef2 由多层小波分解重构近似分量或细节分量detcoef2 提取二维信号小波分解的细节分量appcoef2 提取二维信号小波分解的近似分量upwlev2 二维小波分解的单层重构dwtpet2 二维周期小波变换idwtper2 二维周期小波反变换—-—-—--——-—-——-—-—---—-—-——-—————------——-—----—-————---——-(1) wcodemat 函数功能:对数据矩阵进行伪彩色编码函数 fft、fft2 和 fftn 分格式:Y=wcodemat(X,NB,OPT,ABSOL)Y=wcodemat(X,NB,OPT)Y=wcodemat(X,NB)Y=wcodemat(X)说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵 Y ;NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16;OPT 指定了编码的方式(缺省值为’mat’),即:别可以实现一维、二维和N 维 DFTOPT='row’ ,按行编码OPT=’col' ,按列编码OPT='mat' ,按整个矩阵编码函数 fft、fft2 和 fftn 分ABSOL 是函数的控制参数(缺省值为’1’),即:ABSOL=0 时,返回编码矩阵ABSOL=1 时,返回数据矩阵的绝对值 ABS(X)1. 离散傅立叶变换的Matlab实现(2) dwt2 函数功能:二维离散小波变换格式:[cA,cH,cV,cD]=dwt2(X,'wname’)[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)说明:[cA,cH,cV,cD]=dwt2(X,'wname’)使用指定的小波基函数 'wname'对二维信号 X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。
采用以下方法将给定的全色和多光谱图像进行融合
1、采用以下方法将给定的全色和多光谱图像进行融合:(1)IHS变换;(2)高通滤波;(3)GIHS方法,参见指定文献;(4)小波变换;(5)PCA变换;(6)Brovey变换。
其中(4)和(5)的方法,可以从网上下载代码来学习,或者自己写也可以,如果是学习别人的代码,要写出学习总结,学到哪些知识?有什么写代码的技巧?等等。
要求:IHS变换和PCA变换要将正变换和逆变换写成函数的形式,尽量使用矩阵操作。
答:全色影像是整个可见光区间的黑白影像,即只有灰度值的影像。
多光谱影像有多个波段。
全色影像一般空间分辨率较高,但是只有灰度值,没有彩色信息。
多光谱影像有丰富的色彩信息,但是通常空间分辨率比全色影像低。
全色影像和多光谱影像融合的目的是得到既有一定的光谱信息,空间分辨率又比多光谱的影像有所提高的影像。
所以融合后的影像是多光谱影像。
一般来说,融合后的影像的空间分辨率比全色低,比多光谱的高,光谱信息比全色的多,但是对于多光谱影像,会有部分失真。
融合后的影像空间信息保存的越多,光谱信息融合的就越差,反之光谱信息保存的越好,空间信息保存的就越差。
(1)基于IHS变换的全色和多光谱图像融合方法:●算法流程:多光谱影像RGB空间--->多光谱影像IHS空间--->将强度影像I用全色影像替换得到融合后的多光谱影像IHS空间--->多光谱影像RGB空间●Matlab代码:%hsi变换代码:(即附件文献中的非线性变换方法)function Ihsi=rgb2hsi(Irgb)[m,n,k]=size(Irgb);Irgb=double(Irgb);r=Irgb(:,:,1);g=Irgb(:,:,2);b=Irgb(:,:,3);temp3=min(min(r,g),b);temp4=r+g+b;temp1=((r-g)+(r-b))/2;temp2=sqrt((r-g).^2+(r-b).*(g-b));for i=1:mfor j=1:nif temp4(i,j)==0S(i,j)=0;H(i,j)=0;elseS(i,j)=1-3*temp3(i,j)/temp4(i,j);theta=acos(temp1(i,j)/(temp2(i,j)+eps)); %avoid temp2=0 H(i,j)=theta;endif b(i,j)>g(i,j)H(i,j)=2*pi-H(i,j);endendendH=H/(2*pi); %normalized to (0,1)I=(r+g+b)/(3*255); %normalized to (0,1)% Ihsi(:,:,1)=H;% Ihsi(:,:,2)=S;% Ihsi(:,:,3)=I;Ihsi=cat(3,H,S,I);%hsi逆变换代码:function Irgb=hsi2rgb(Ihsi)H=Ihsi(:,:,1)*2*pi;S=Ihsi(:,:,2);I=Ihsi(:,:,3);R=zeros(size(Ihsi,1),size(Ihsi,2));G=zeros(size(Ihsi,1),size(Ihsi,2));B=zeros(size(Ihsi,1),size(Ihsi,2));% RG sector (0<=H<2*pi/3).idx=find((0<=H)&(H<2*pi/3));B(idx)=I(idx).*(1-S(idx));R(idx)=I(idx).*(1+S(idx).*cos(H(idx))./cos(pi/3-H(idx)));G(idx)=3*I(idx)-(R(idx)+B(idx));%BG sector (2*pi/3<=H<4*pi/3).idx=find((2*pi/3<=H)&(H<4*pi/3));R(idx)=I(idx).*(1-S(idx));G(idx)=I(idx).*(1+S(idx).*cos(H(idx)-2*pi/3)./cos(pi-H(idx)));B(idx)=3*I(idx)-(R(idx)+G(idx));%BR sector.idx=find((4*pi/3<=H)&(H<=2*pi));G(idx)=I(idx).*(1-S(idx));B(idx)=I(idx).*(1+S(idx).*cos(H(idx)-4*pi/3)./cos(5*pi/3-H(idx))); R(idx)=3*I(idx)-(G(idx)+B(idx));Irgb=cat(3,R,G,B);Irgb=max(min(Irgb,1),0);%影像融合代码:function FMI=funsionhsi(PI,MI)MI=double(MI);TMI=rgb2hsi(MI);PI=double(PI)./255; %normalized to (0,1)FTMI(:,:,3)=PI;FTMI(:,:,1:2)=TMI(:,:,1:2);FMI=hsi2rgb(FTMI);FMI=uint8(FMI*255);(2)高通滤波●算法原理与流程:原理:全色影像有较高的空间分辨率,提供了更多的空间细节,因而可以通过高通滤波提取这些细节,再与全色影像的强度分量融合。
matlab二进小波变换
matlab二进小波变换Matlab二进小波变换(Binary Wavelet Transform)是一种用于信号处理和图像压缩的数学工具。
它结合了二进制数和小波变换的优势,可以对信号进行高效的表示和分析。
本文将介绍二进小波变换的基本概念、算法实现以及应用案例。
第一部分:二进小波变换的基本概念(300字)1.1 小波变换的基本原理小波变换是一种基于多尺度分析的信号处理方法。
它能够将信号分解成不同频率和时间尺度的小波分量,可以捕捉信号的短时特性和频率特性。
1.2 二进制数的基本概念二进制数是一种由0和1组成的数制系统。
在二进小波变换中,我们使用二进制数来表示小波系数的正负和大小。
第二部分:二进小波变换的算法实现(600字)2.1 信号的分解首先,对输入信号进行分解。
我们将信号分解成多个尺度的小波系数,每个尺度都对应着不同的频率范围。
这个分解过程可以通过级联地应用低通滤波器和高通滤波器来实现。
2.2 二进编码接下来,对每个小波系数进行二进编码。
根据小波系数的正负和大小,我们将其映射到二进制数上。
通常,正数用1表示,负数用0表示,并使用二进制数的绝对值来表示小波系数的大小。
2.3 二进小波重构最后,利用编码后的二进小波系数进行信号重构。
通过级联地应用低通滤波器和高通滤波器,我们可以将二进小波系数合成为原始信号的近似重构。
这个重构过程可以逆向地从最低尺度开始重构,直到最高尺度结束。
第三部分:二进小波变换的应用案例(600字)3.1 信号压缩二进小波变换可以通过对小波系数进行二进编码,从而实现信号的压缩。
由于二进编码可以用更少的比特数来表示小波系数,因此可以减小存储空间和传输带宽的需求。
3.2 图像处理除了信号处理,二进小波变换还可以应用于图像处理。
通过对图像的每个颜色通道进行二进小波变换和编码,可以实现图像的压缩和重构。
这对于图像传输和储存来说是非常有用的。
3.3 数据分析二进小波变换还可以应用于数据分析。
MATLAB2维小波变换经典程序
MATLAB2维小波变换经典程序% FWT_DB.M;% 此示意程序用DWT实现二维小波变换%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%clear;clc;T=256; % 图像维数SUB_T=T/2; % 子图维数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1.调原始图像矩阵load wbarb; % 下载图像f=X; % 原始图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2.进行二维小波分解l=wfilters('db10','l'); % db10(消失矩为10)低通分解滤波器冲击响应(长度为20)L=T-length(l);l_zeros=[l,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂h=wfilters('db10','h'); % db10(消失矩为10)高通分解滤波器冲击响应(长度为20)h_zeros=[h,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂for i=1:T; % 列变换row(1:SUB_T,i)=dyaddown( ifft( fft(l_zeros).*fft(f(:,i)') ) ).'; % 圆周卷积<->FFTrow(SUB_T+1:T,i)=dyaddown( ifft( fft(h_zeros).*fft(f(:,i)') ) ).'; % 圆周卷积<->FFT end;for j=1:T; % 行变换line(j,1:SUB_T)=dyaddown( ifft( fft(l_zeros).*fft(row(j,:)) ) ); % 圆周卷积<->FFT line(j,SUB_T+1:T)=dyaddown( ifft( fft(h_zeros).*fft(row(j,:)) ) ); % 圆周卷积<->FFT end;decompose_pic=line; % 分解矩阵% 图像分为四块lt_pic=decompose_pic(1:SUB_T,1:SUB_T); % 在矩阵左上方为低频分量--fi(x)*fi(y) rt_pic=decompose_pic(1:SUB_T,SUB_T+1:T); % 矩阵右上为--fi(x)*psi(y)lb_pic=decompose_pic(SUB_T+1:T,1:SUB_T); % 矩阵左下为--psi(x)*fi(y)rb_pic=decompose_pic(SUB_T+1:T,SUB_T+1:T); % 右下方为高频分量--psi(x)*psi(y)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.分解结果显示figure(1);colormap(map);subplot(2,1,1);image(f); % 原始图像title('original pic');subplot(2,1,2);image(abs(decompose_pic)); % 分解后图像title('decomposed pic');figure(2);colormap(map);subplot(2,2,1);image(abs(lt_pic)); % 左上方为低频分量--fi(x)*fi(y)title('\Phi(x)*\Phi(y)');subplot(2,2,2);image(abs(rt_pic)); % 矩阵右上为--fi(x)*psi(y)title('\Phi(x)*\Psi(y)');subplot(2,2,3);image(abs(lb_pic)); % 矩阵左下为--psi(x)*fi(y)title('\Psi(x)*\Phi(y)');subplot(2,2,4);image(abs(rb_pic)); % 右下方为高频分量--psi(x)*psi(y)title('\Psi(x)*\Psi(y)'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5.重构源图像及结果显示% construct_pic=decompose_matrix'*decompose_pic*decompose_matrix; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%l_re=l_zeros(end:-1:1); % 重构低通滤波l_r=circshift(l_re',1)'; % 位置调整h_re=h_zeros(end:-1:1); % 重构高通滤波h_r=circshift(h_re',1)'; % 位置调整%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%top_pic=[lt_pic,rt_pic]; % 图像上半部分t=0;for i=1:T; % 行插值低频if (mod(i,2)==0)topll(i,:)=top_pic(t,:); % 偶数行保持elset=t+1;topll(i,:)=zeros(1,T); % 奇数行为零endend;for i=1:T; % 列变换topcl_re(:,i)=ifft( fft(l_r).*fft(topll(:,i)') )'; % 圆周卷积<->FFTend;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%bottom_pic=[lb_pic,rb_pic]; % 图像下半部分t=0;for i=1:T; % 行插值高频if (mod(i,2)==0)bottomlh(i,:)=bottom_pic(t,:); % 偶数行保持elsebottomlh(i,:)=zeros(1,T); % 奇数行为零t=t+1;endend;for i=1:T; % 列变换bottomch_re(:,i)=ifft( fft(h_r).*fft(bottomlh(:,i)') )'; % 圆周卷积<->FFTend;construct1=bottomch_re+topcl_re; % 列变换重构完毕%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%left_pic=construct1(:,1:SUB_T); % 图像左半部分t=0;for i=1:T; % 列插值低频if (mod(i,2)==0)leftll(:,i)=left_pic(:,t); % 偶数列保持elset=t+1;leftll(:,i)=zeros(T,1); % 奇数列为零endend;for i=1:T; % 行变换leftcl_re(i,:)=ifft( fft(l_r).*fft(leftll(i,:)) ); % 圆周卷积<->FFTend;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%right_pic=construct1(:,SUB_T+1:T); % 图像右半部分t=0;for i=1:T; % 列插值高频if (mod(i,2)==0)rightlh(:,i)=right_pic(:,t); % 偶数列保持elserightlh(:,i)=zeros(T,1); % 奇数列为零t=t+1;endend;for i=1:T; % 行变换rightch_re(i,:)=ifft( fft(h_r).*fft(rightlh(i,:)) ); % 圆周卷积<->FFTend;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%construct_pic=rightch_re+leftcl_re; % 重建全部图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% 结果显示figure(3);colormap(map);subplot(2,1,1);image(f); % 源图像显示title('original pic');subplot(2,1,2);image(abs(construct_pic)); % 重构源图像显示title('reconstructed pic');error=abs(construct_pic-f); % 重构图形与原始图像误值figure(4);mesh(error); % 误差三维图像title('absolute error display');。
基于小波变换的一种改进融合规则的图像融合
摘 要: 针对 多聚 焦 图像 , 过 小波变换 和基 于窗 口的 系数 绝对值 和选 大融合 规 则 , 在 着对 噪声敏 感和 融合信 息 不完整等缺 通 存
点 。为 了克服这 些缺点 , 融合后 的 图像 包含尽 可能 多的源 图信 息, 出了一种 在融合 时 两幅 图像 的 系数都 选取 的融合规 则 。 使 提 通 过对 多聚焦 图像融合 的实验 结果 比较表 明, 出的融合规 则的融合 效果更优 , 提 可避免信 息损 失。 关键词 : 小波变换 ; 融合规 则; 图像融合 DO :03 7  ̄i n10 .3 1 0 11.5 文 章编号 :0 28 3 ( 0 1 1- 150 文献标识码 : 中图分类号 : P 9 I 1.7 8 .s. 2 83 . 1.1 2 s 0 2 0 10 -3 12 1 ) 10 8 -2 A T31
C m ue n ier ga dA p i t n 计算机工程与应用 o p t E gn ei n p l ai s r n c o
基于小 波变换 的一种改进 融合规 则 的图像 融合
朱 健 , 跃祥 石
ZHU i n, 潭大学 信 息工程学院 , 湖南 湘潭 4 10 11 5
Co lg f I f r t n E g n e i g, a g a i e st Xi n tn, n n 41 1 5 Ch n le e o n o mai n i e rn Xi n tn Un v ri o y, a g a Hu a 1 0 , i a
ZHU J a i n,S I H Yu x a gI a e u i n a e o i p o e f so r l s f wa e e t a s o m . m p t r e i n .m g f so b s d n m r v d u i n u e o v l t r n f r Co u e En i e rn gn e i g
小波函数及Matlab常用指令
小波包分析能够更全面地揭示信号的细节特征,对于非平稳信号的处理效果尤为突出。此 外,小波包分析还可以根据实际需求选择合适的小波基函数,从而更好地满足信号处理的 需求。
小波包分析的应用
小波包分析在信号处理、图像处理、语音识别等领域有着广泛的应用。例如,在信号处理 中,小波包分析可以用于信号去噪、特征提取、故障诊断等;在图像处理中,小波包分析 可以用于图像压缩、图像增强、图像恢复等。
信号的小波重构是将小波分解后的系数重新组合成原始信号的 过程。
02
在Matlab中,可以使用`waverec`函数对小波系数进行重构,该
函数可以根据小波分解的层次和系数重建原始信号。
小波重构的结果可以用于验证小波分解的正确性和完整性,以
03
及评估去噪等处理的效果。
信号的小波去噪
信号的小波去噪是一种利用小波 变换去除信号中噪声的方法。
小波函数及Matlab常用指 令
• 小波函数简介 • Matlab中小波函数的常用指令 • Matlab中信号的小波分析 • Matlab中小波变换的应用实例 • Matlab中小波函数的进阶使用
01
小波函数简介
小波函数的定义
小波函数是一种特殊的函数,其时间频率窗口均有限,具有良好的局部化 特性。
金融数据分类与聚类
利用小波变换的特征提取能力,可以对金融数据进行分类或聚类, 用于市场趋势预测等。
05
Matlab中小波函数的进阶使用
小波包分析
小波包分析
小波包分析是一种更为精细的信号分析方法,它不仅对信号进行频域分析,还对信号进行 时频分析。通过小波包分析,可以更准确地提取信号中的特征信息,为信号处理提供更全 面的数据支持。
THANKS
彩色图片matlab傅里叶小波变换
彩色图片傅里叶变换、小波变换傅里叶变换x=imread('1.jpg','jpg'); %读取1.jpg彩色图片,并赋值给xr(:,:)=x(:,:,1); %将三维矩阵中代表R的二维矩阵赋值给rg(:,:)=x(:,:,2); %将三维矩阵中代表G的二维矩阵赋值给gb(:,:)=x(:,:,3); %将三维矩阵中代表B的二维矩阵赋值给b对r、g、b二维矩阵进行傅里叶变换fftr=fft2(r); %二维离散傅立叶变换fftg=fft2(g); %二维离散傅立叶变换fftb=fft2(b); %二维离散傅立叶变换sfftr=fftshift(fftr); %直流分量移到频谱中心sfftg=fftshift(fftg); %直流分量移到频谱中心sfftb=fftshift(fftb); %直流分量移到频谱中心%计算频谱幅值A=sqrt(real(sfftr).^2+imag(sfftr).^2);B=sqrt(real(sfftg).^2+imag(sfftg).^2);C=sqrt(real(sfftb).^2+imag(sfftb).^2);%归一化,其中乘以225或255是为了在图灰度范围内显示频谱A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;B=(B-min(min(B)))/(max(max(B))-min(min(B)))*225;C=(C-min(min(C)))/(max(max(C))-min(min(C)))*225;figure(1); %设定窗口1imshow(A); %显示图像的频谱title('Rfft graphic') %添加标题figure(2); %设定窗口2imshow(B); %显示图像的频谱title('Bfft graphic'); %添加标题figure(3); %设定窗口3imshow(C); %显示图像的频谱title('Gfft graphic'); %添加标题jpg转为灰度图像的傅里叶变换dd=rgb2gray(x); %RGB转为灰度图像figure(4);sfftdd=fftshift(fft2(dd));DD=sqrt(real(sfftdd).^2+imag(sfftdd).^2);DD=(DD-min(min(DD)))/(max(max(DD))-min(min(DD)))*225; mshow(DD);title('jpg2gray fft graphic');小波变换,注释略x=imread('1.jpg','jpg'); %读取1.jpg彩色图片,并赋值给x r(:,:)=x(:,:,1); %将三维矩阵中代表R的二维矩阵赋值给r g(:,:)=x(:,:,2); %将三维矩阵中代表G的二维矩阵赋值给g b(:,:)=x(:,:,3); %将三维矩阵中代表B的二维矩阵赋值给b %对R进行小波变换重构[c,s]=wavedec2(r,2,'sym4');sizec=size(c);for i=1:sizec(2)if (c(i)>350)c(i)=2*c(i);elsec(i)=0.5*c(i);endendxx=waverec2(c,s,'sym4');%对G进行小波变换重构[c,s]=wavedec2(g,2,'sym4');sizec=size(c);for i=1:sizec(2)if (c(i)>350)c(i)=2*c(i);elsec(i)=0.5*c(i);endendyy=waverec2(c,s,'sym4');%对B进行小波变换重构[c,s]=wavedec2(b,2,'sym4'); sizec=size(c);for i=1:sizec(2)if (c(i)>350)c(i)=2*c(i);elsec(i)=0.5*c(i);endendzz=waverec2(c,s,'sym4');figure(2);image(r); title('origional R'); %设置窗口,绘制小波处理前的R图像figure(1);image(yy);title('enhanced G'); %设置窗口,绘制小波处理后的G 图像 figure(2);image(g);title('origional G'); %设置窗口,绘制小波处理前的G 图像figure(1);image(zz);title('enhanced B'); %设置窗口,绘制小波处理后的B 图像 figure(2);image(b); title('origional B');%设置窗口,绘制小波处理前的B 图像%将小波处理后的二维矩阵重新赋值给三维矩阵hh(1:size(xx,1),1:size(xx,2),1)=xx;hh(1:size(yy,1),1:size(yy,2),2)=yy;hh(1:size(zz,1),1:size(zz,2),3)=zz;%将hh double型三维矩阵转变为uint8型,以便绘制彩色图像HH=uint8(hh);figure(1);image(HH);title('enhanced jpg graphic');axis square;figure(2); image(x);title('original jpg graphic');axis square;。
matlab遥感影像brovey融合方法
matlab遥感影像brovey融合方法
基于Brovey变换的图像融合也称为色彩标准化的融合,主要应用在遥感图
像融合中。
以下是使用MATLAB进行基于Brovey变换的遥感影像融合的
基本步骤:
1. 读取高分辨率全色图像和低分辨率多光谱图像。
2. 对高分辨率全色图像和低分辨率多光谱图像进行RGB分解,得到R、G、B三个通道图像。
3. 将高分辨率全色图像的R、G、B三个通道图像分别做直方图均衡化,得
到三个增强后的通道图像。
4. 对增强后的高分辨率全色图像的每个通道图像进行高斯滤波。
5. 将滤波后的高分辨率全色图像的每个通道图像与低分辨率多光谱图像的对应通道进行加权平均,得到融合后的图像。
以上步骤仅供参考,建议查阅专业书籍或咨询专业人士以获取更准确的信息。
matlab小波变换滤波算法
matlab小波变换滤波算法Matlab小波变换滤波算法小波变换是一种信号处理的方法,它将信号分解成多个不同频率的子信号,可以用于信号去噪、特征提取和压缩等应用。
Matlab是一种常用的科学计算软件,提供了丰富的函数和工具箱,可以方便地实现小波变换滤波算法。
在Matlab中,可以使用wavelet toolbox工具箱来进行小波变换滤波。
首先,需要加载wavelet toolbox工具箱,然后使用wavelet函数指定所需的小波类型和尺度。
小波变换滤波算法的主要步骤如下:1. 信号预处理:将待处理的信号进行必要的预处理,例如去除噪声、降采样等。
可以使用Matlab提供的函数来实现信号预处理,如noise reduction和downsampling函数。
2. 小波变换:使用Matlab中的wavelet函数进行小波变换,指定所需的小波类型和尺度。
可以选择不同的小波类型和尺度,以适应不同的信号特性和应用需求。
3. 尺度分解:对小波变换后的系数进行尺度分解,将信号分解成多个不同频率的子信号。
可以使用Matlab提供的函数进行尺度分解,如decomposition函数。
4. 阈值处理:对尺度分解后的系数进行阈值处理,去除噪声和不需要的信号成分。
可以使用Matlab提供的函数进行阈值处理,如thresholding函数。
5. 重构信号:将经过阈值处理后的系数进行重构,得到滤波后的信号。
可以使用Matlab提供的函数进行重构,如reconstruction函数。
6. 信号后处理:对重构后的信号进行必要的后处理,例如去除伪像、插值等。
可以使用Matlab提供的函数来实现信号后处理,如artifact removal和interpolation函数。
小波变换滤波算法在信号处理中有广泛的应用。
例如,在语音信号处理中,可以使用小波变换滤波算法对语音信号进行去噪和特征提取,以提高语音识别的准确性。
在图像处理中,可以使用小波变换滤波算法对图像进行去噪和压缩,以提高图像质量和减少存储空间。
小波-matlab-代码
小波matlab 代码[x,map]=imread('MUCS_新建文件夹_32603.ptl_208.bmp');subplot(1,2,1);imshow(x);[c,s]=wavedec2(x,3,'sym4');Csize=size(c);for i=1:Csize(2)if(c(i)>100) %低频分量----s中第一维的长度c(i)=1*c(i);elsec(i)=0.9*c(i); %高频分量endendx1=waverec2(c,s,'sym4');im=uint8(x1);subplot(1,2,2);imshow(im);[c,s]=wavedec2(X,2,'bior3.7');%对图像用小波进行层分解cal=appcoef2(c,s,'bior3.7',1);%提取小波分解结构中的一层的低频系数和高频系数ch1=detcoef2('h',c,s,1);%水平方向cv1=detcoef2('v',c,s,1);%垂直方向cd1=detcoef2('d',c,s,1);%斜线方向a1=wrcoef2('a',c,s,'bior3.7',1);%各频率成份重构[c,s]=wavedec2(X,1,'sym4');a1=appcoef2(c,s,'sym4',1);%小波分解结构中的一层的低频系数,下面是3个高频系数a1=2*a1;h1=detcoef2('h',c,s,1);v1=detcoef2('v',c,s,1);d1=detcoef2('d',c,s,1);h1=0.5*h1;v1=0.5*v1;d1=0.5*d1;y=idwt2(a1,h1,v1,d1,'sym4');load wbarb;X1=X;map1=map;subplot(2,2,1);image(X1);colormap(map1);title('图像wbarb');load woman;X2=X;map2=map;subplot(2,2,2);image(X2);colormap(map2);title('图像woman');%===================================== %对上述二图像进行分解[c1,l1]=wavedec2(X1,2,'sym4');[c2,l2]=wavedec2(X2,2,'sym4');%对分解系数进行融合c=c1+c2;%===================================== %应用融合系数进行图像重构并显示XX=waverec2(c,l1,'sym4');subplot(2,2,3);image(XX);title('融合图像1');Csize1=size(c1);%=====================================%对图像进行增强处理for i=1:Csize1(2)c1(i)=1.2*c1(i);endCsize2=size(c2);for j=1:Csize2(2)c2(j)=0.8*c2(j);end%===================================== %通过减小融合系数以减小图像的亮度c=0.5*(c1+c2);%===================================== %对融合系数进行图像重构XXX=waverec2(c,l2,'sym4');%===================================== %显示重构结果subplot(2,2,4);image(XXX);title('融合图像2');%本程序实现下述功能:首先读入原始图像,并对它使用db3小波进行2层分解,%然后对分解系数进行处理突出所需,弱化不需要的部分%装载并显示原始图像clear all;clc;load flujet;subplot(1,2,1);image(X);colormap(map);title('原始图像');%=====================================%对图像X用小波db3进行2层分解[c,l]=wavedec2(X,2,'db3');Csize=size(c);%=====================================%对分解系数作处理以突出所需部分并弱化不需要部分for i=1:Csize(2)if(c(i)>300) %低频分量c(i)=2*c(i);elsec(i)=0.5*c(i); %高频分量endend%===================================== %重构图像并显示X1=waverec2(c,l,'db3');subplot(1,2,2);image(X1);colormap(map);title('增强图像');[c,s]=wavedec2(x,2,'sym4');Csize=size(c);for i=1:Csize(2)if(c(i)>169) %低频分量----s中第一维的长度c(i)=2*c(i);elsec(i)=0.3*c(i); %高频分量endendx1=waverec2(c,s,'sym4');im=uint8(x1);imshow(im);二维小波变换的Matlab 实现y j v z w %o u n\ { K*Y二维小波变换的函数a r T Q3Y r -------------------------------------------------5B Y0x!Z9a9] 函数名函数功能h$H9q ` \ ---------------------------------------------------'d3d t Be'x6gdwt2 二维离散小波变换!t2B!I9L5S;q:r X wavedec2 二维信号的多层小波分解!D o4B @2U Y,o!H#M l idwt2 二维离散小波反变换o l!R H N_ G4M waverec2 二维信号的多层小波重构z H!f6~)}-P _wrcoef2 由多层小波分解重构某一层的分解信号0E,\ |.o | D T2@2b2K$Uupcoef2 由多层小波分解重构近似分量或细节分量*^ Y4? T3R x(k3v detcoef2 提取二维信号小波分解的细节分量2~ U W L8V appcoef2 提取二维信号小波分解的近似分量0q l N7p a @ i Y C ] c b upwlev2 二维小波分解的单层重构2y W_ ] h-i~ m(~ dwtpet2 二维周期小波变换4Y/aN&G q ] E B"H)Widwtper2 二维周期小波反变换7h"| Iv e -------------------------------------------------------------9O d7D ` b y&lX { I g u s I `(1) wcodemat 函数` T f ?-[ c*e$M c d 功能:对数据矩阵进行伪彩色编码|4X C i5R$x6g 格式:Y=wcodemat(X,NB,OPT,ABSOL)'k#e C a I%HY=wcodemat(X,NB,OPT) i)E)p _!O-k j J ^Y=wcodemat(X,NB)A2z,q D'u'z*_.~/U Y=wcodemat(X)Z5D"^ e5i |L'^4` 说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵X 的编码矩阵Y ;NB 伪编码的最大值,即编码范围为0~NB,缺省值NB=16;@ N6C Y p Y E OPT 指定了编码的方式(缺省值为'mat'),即:r(o ? L j(y e f NOPT='row' ,按行编码-y q i H { o5e OPT='col' ,按列编码8X N*\.Z/c @ OPT='mat' ,按整个矩阵编码e j!l W b L ABSOL 是函数的控制参数(缺省值为'1'),即:i x"^:| ~5{ABSOL=0 时,返回编码矩阵2z x;^ l$q | _ Z ABSOL=1 时,返回数据矩阵的绝对值ABS(X)V l U1e r g3x'O%I9z&c,A ]!T%y d s \.s (2) dwt2 函数D J ~0D/m S:O S"I 功能:二维离散小波变换 B c t _)h O X I格式:[cA,cH,cV,cD]=dwt2(X,'wname')3A N _ W F[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)m(E j"[ _ @ 说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数'wname' 对二维信号X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分.g(R @ E E Y'n 量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器Lo_D 和Hi_D 分j4F2} ~ Q e W 解信号X 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%对图像进行放大算子的运算
PIC3 = conv2(conv2(Y, 2*fw, 'valid'),2*fw','valid');
%第i1级图像重构;
PIC1 = PIC3 + L{i};
%选取图像范围
PIC1 = PIC1(1:k1(i),1:k2(i));
% %end;
% %end;
% %%
% %for k=1:256,
% % p1(k)=p1(k)/(d);
% % p2(k)=p2(k)/(d);
% %end;
%
% %for i=1:256
% % for j=1:256
% % p3(i,j) =p3(i,j)/(d);
%图像隔行隔列插值扩展恢复到原尺寸图像
[c d] = size(Y4);
Y6 = zeros(2*c, 2*d);
Y6(1:2:2*c,1:2:2*d) = Y4;
Y7 = zeros(2*c, 2*d);
%PIC2 = X2;
X1 = PIC1;
X2 = PIC2;
%定义滤波窗口;
fw = 1/16.*[1 4 6 4 1];
z =3;
L = cell(1,z);
L1 = cell(1,z);
for i = 1:z % N1
G3 = conv2(conv2(Y3, fw, 'valid'),fw', 'valid');
%将图像进行隔行隔列减半
[a b] = size(G2);
Y4 = G2(1:2:a, 1:2:b);
Y5 = G3(1:2:a, 1:2:b);
% % for j=a:c,
% %if ( ( i>=432 & j>310 ) | ( 432>i>=128 & j>344 ) | ( 128>i>=123 & 580>j>=505 ) | ( 123>i>=120 & j>=580) ) % 480*640 disk1,disk2
% %if ( (i<=154 & j<224) | j>=224 )
Y(3:2+2*c,3+2*d:1:2*d+4) = Y10(:,2*d-1:-1:2*d-2);
Y(2:-1:1,3:2*d+2) = Y10(2:1:3,:);
Y(2+2*c+1:1:2*c+4,3:2*d+2) = Y10(2*c-1:-1:2*c-2,:);
% 计算,保存图像大小
[row column] = size(PIC1);
k1(i) = row;
k2(i) = column;
%检查是否需要扩展
if (floor(row/2) ~= row/2), w(1) = 1; else, w(1) = 0; end;
% % end;
% %end;
%
% %MI=0;
% %for i=1:256
% % for j=1:256
% % if (p1(i)*p2(j)~=0 & p3(i,j)~=0)
% % z= p3(i,j)/(p1(i)*p2(j));
% % MI =MI+p3(i,j)*log2(z);
PIC1 = add_rc(PIC1,w);
PIC2 = add_rc(PIC2,w);
end; % NN1
%
% %for k=1:256,
% % p1(k)=0;
% % p2(k)=0;
% %end;
%
% %for i=1:256
% % for j=1:256
% % p3(i,j) = 0;
% % end;
% %end;
% %%
% %for i=a:b,
end;
Y = PIC1;
% 得到最后的图像结果并进行数据转换
PIC = 1/255.*Y;
%显示图像
figure(5);
imshow(PIC);
% K = 0;
% %a = 20;
% %b = 460;
% %c = 620;
% %d = 440*600;
% a = 1;
%将原图像进行沿边界对称扩展
Y2 = add_side(PIC1,2);
Y3 = add_side(PIC2,2);
%对原图像进行低通滤波
G2 = conv2(conv2(Y2, fw, 'valid'),fw', 'valid');
X1 = imread('IR.bmp','bmp');
X2 = imread('VIS.bmp','bmp');
%figure(1);
%imshow(X1);
%g1 = 1/255.*X2;
%figure(2);
%imshow(X2);
PIC1 = double(X1);
PIC2 = double(X2);
%PIC1 = (1/3).*PIC1+(2/3).*PIC2;
for i = z:-1:1
%图像隔行隔列插值扩展恢复到原尺寸图像
[c d] = size(PIC1);
Y10 = zeros(2*c, 2*d);
PIC4 = conv2(conv2(Y9, 2*fw, 'valid'),2*fw', 'valid');
PIC5 = PIC1;
PIC6 = PIC2;
PIC5 = PIC5-PIC3;
PIC6 = PIC6-PIC4;
L1{i} = PIC5;
if (floor(column/2) ~= column/2), w(2) = 1; else, w(2) = 0; end;
% 完成图像的边界扩展;
if (any(w)) % NN1
% if (X1(i,j)==0)
% X1(i,j)=1;
% % K = K;
% end;
% %else
% K = K + (abs(X1(i,j) - Y(i,j)))/X1(i,j);
%else
% L{i}=(p).*PIC5+(1-p).*PIC6;
%end;
%高斯塔形图像
PIC1 = Y4;
PIC2 = Y5;
end;
PIC1 = (PIC1+PIC2)/2;
%PIC1 = PIC1;
% % p1(k1+1) = p1(k1+1)+1;
% % else
% % k1 = X1(i,j);
% % p1(k1+1) = p1(k1+1)+1;
% % end;
% % k2 = X(i,j);
% % p2(k2+1) = p2(k2+1)+1;
% % p3(k1+1,k2+1) = p3(k1+1,k2+1)+1;
Y7(1:2:2*c,1:2:2*d) = Y5;
%将图像进行沿边界对称扩展
Y8 = add_side(Y6,2);
Y9 = add_side(Y7,2);
%对图像进行放大算子运算
PIC3 = conv2(conv2(Y8, 2*fw, 'valid'),2*fw', 'valid');
% b = 512;
% c = 512;
% d = 512*512;
% for i = a:b
% for j = a:c
% %if ( ( i>=432 & j>310 ) | ( 432>i>=128 & j>344 ) | ( 128>i>=123 & 580>j>=505 ) | ( 123>i>=120 & j>=580) ) % 480*640 disk1,disk2
% % end;
% % end;
% %end; f ( (i<=154 & j<224) | j>=224 ) % 512*512 clock1,clock2
% %if ( (i<=96) | ( i>96 & i<=140 & 11j>16*i+1104 ) | ( i>140 & i<=352 &j>=304 ) | ( i>352 & i<=480 & 128*j>108*i+896 ) ) % 480*640 lab1,lab2
% % if ( (i<=96) | ( i>96 & i<=140 & 11j>16*i+1104 ) | ( i>140 & i<=352 &j>=304 ) | ( i>352 & i<=480 & 128*j>108*i+896 ) ) % 480*640 lab1,lab2