matlab使用小波变换进行图像融合

clc;
clear all;
X1=imread('cs1.jpg');
X1=double(X1)/256;     %这里转化成double类型,否则使用小波变换输出的会有大量大于1的存在,会导致图像显示有问题
% X1=rgb2gray(X1);  %原本以为小波变换只能使用一维的,看来可以使用3维
figure;
imshow(X1),title('左焦距');
axis square;
 X2=imread('cs2.jpg');
X2=double(X2)/256;
%  X2=rgb2gray(X2);
 figure;
 imshow(X2),title('右焦距');
 axis square;

[c1,s1]=wavedec2(X1,2,'sym4');  %将x1进行2维,使用‘sym4’进行变换

sizec1=size(c1);
for I=1:sizec1(2);
    c1(I)=1.2*c1(I); 将分解后的值都扩大1.2倍
end
[c2,s2]=wavedec2(X2,2,'sym4');
c=c1+c2;     %计算平均值
c=0.5*c;
s=s1+s2;
s=0.5*s;
xx=waverec2(c,s,'sym4');  %进行重构
figure;
imshow(xx),title('融合后的');   

axis square;

matlab使用小波变换进行图像融合_第1张图片matlab使用小波变换进行图像融合_第2张图片matlab使用小波变换进行图像融合_第3张图片

结论:这里没有对图像进行特别的处理所以效果不是太好,只是演示小波融合图像的方法。

【c,s】wavedec2(x, n,'name')函数的使用

C是分解的各个系数,这里分两层,C中存的是【ABBCCC】的数据是按行存的,s中是存的的是:【A的行数,A的列数;B的行数,B的列数;C的行数,C的列数;原图的行数,原图的列数】。L层就有3L+1个小图。

matlab使用小波变换进行图像融合_第4张图片

你可能感兴趣的:(matlab图像学习入门)