基于小波变换的图像融合程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

set(handles.text4,'visible','on')

pause(1)

[X,map]=imread('C:\Users\Administrator\Desktop\matlab\image1.jpg') ;

%map是色谱,map每一行分别代表R、G、B,涵盖了图像中出现的所有颜色组合。

%X是像素颜色值,数据矩阵X的值指向map的某一行。

X1=X;

map1=map;

subplot(2,2,1);

image(X1);

colormap(map1);%指当前显示的figure窗口色图按照指定map1进行搭配,用MAP矩阵映射当前图形的色图title('原始图像1')

axis square

[X,map]=imread('C:\Users\Administrator\Desktop\matlab\image2.jpg') ;

X2=X;

map2=map;

subplot(2,2,2);

image(X2);

colormap(map2);

title('原始图像2');

axis square

if ndims(X1)==3 %表示三位矩阵

X3=rgb2gray(X1);%满足这个条件时,把X1转换成灰度图赋值给X3

else

X3=X1;%·否则直接赋值

end

if ndims(X2)==3

X4=rgb2gray(X2);%满足这个条件时,把X2转成灰度图赋值给X4

else

X4=X2;

end

X3=double(X3);%转换成双精度数据

X4=double(X4);

%matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算,如果不转换,计算会产生溢出

%%进行小波变换

[C1,L1]=wavedec2(X3,2,'sym4');%小波变换

[C2,L2]=wavedec2(X4,2,'sym4');%小波变换

%wavedec2:二维信号的多层小波分解

%2:就是小波包的层数,小波分解可以按照树形结构一层一层的往下分解,分解到多细,主要看你想分析的频段是什么,如果是2层小波包分解的话,就是把频率分成了4等分,显示出每个频段的小波系数

&sym4:是小波的名字,小波分解不同于傅里叶分解,他可以自己选取“基”,这里就是选取sym4小波作为函数空间的基。这个不是重点,对于一般的函数,选不同的基差别不大。只有一些比较极端的函数,需要特殊的基来分析。

%%融合

C=(C1+C2)*0.5;%给C赋值

X=waverec2(C,L1,'sym4');%调用函数waverec2

% waverec2:二维信号的多层小波重构

X=uint8(X);%把矩阵转化成uint8类型,uint8(8位无符号整数),

subplot(223)%画2行2列第3个图

title('基于小波变换的图像融合');

imshow(X);%画图

set(handles.text4,'visible','off')

set(handles.pushbutton1,'visible','off')

相关文档
最新文档