资源简介
小波图像融合matlab实现源代码 ,利用小波实现了图像融合。含图片
代码片段和文件信息
function y=imfus(I1I2);
st=cputime; % 程序开始运行时的cpu时间
I1=imread(‘untitled3.jpg‘);
I2=imread(‘untitled4.jpg‘);
I1=I1(::1);I2=I2(::1); %读取彩色RGB图像的第一颜色分量
[r1c1]=size(I1); % 读取图像分解后的小波分解系数矩阵的大小
[r2c2]=size(I2);
if (r1~=r2)||(c1~=c2)
error(‘Images dimension mismatch.The image size must be the same!‘);
return;
end
dim=3;
figure; % 对模糊化后的两幅图像进行小波分解
y1=mywavedec2(I1dim);
figure;
y2=mywavedec2(I2dim);
[rc]=size(y1); % 根据低频融合算法进行图像融合
for i=1:r % 首先取两幅源图像相应的小波分解系数最大值作为融合图像的分解系数
for j=1:c
if ( abs(y1(ij)) >= abs(y2(ij)) )
y3(ij)=y1(ij);
elseif ( abs(y1(ij)) < abs(y2(ij)) )
y3(ij)=y2(ij);
end
end
end
LLa=y1(1:r/(2^dim)1:c/(2^dim)); % 调用lowfrefus函数对低频部分的小波分解系数进行融合
LLb=y2(1:r/(2^dim)1:c/(2^dim));
y3(1:r/(2^dim)1:c/(2^dim))=lowfrefus(LLaLLb);
yr=mywaverec2(y3dim); % 调用mywaverec2函数重构融合图像
et=cputime-st % 计算程序运行所用的时间
averEntropy1=averEntropy(I1)
averEntropy2=averEntropy(I2)
averEntropy3=averEntropy(yr)
aveGrad1 = avegrad(I1)
aveGrad2 = avegrad(I2)
aveGrad3 = avegrad(yr)
function y=upspl(x);
N=length(x); % 读取输入序列长度
M=2*N-1; % 输出序列的长度是输入序列长度的2倍再减一
for i=1:M % 输出序列的偶数位为0,奇数位按次序等于相应位置的输入序列元素
if mod(i2)
y(i)=x((i+1)/2);
else
y(i)=0;
end
end
function [smatmpnp] = submat(xplevel);
% 函数 submat 取输入矩阵中以点P为中心、阶数为(2*level+1)的方阵作为输出的子矩阵
[rowcol]=size(x);
m=p(1); n=p(2);
if (m>row)||(n>col)
error(‘Point p is out of matrix X !‘);
return;
end
if ((2*level+1)>row)||((2*level+1)>col)
error(‘Too large sample area level !‘);
return;
end
% 设置子矩阵的边界值
up=m-level; down=m+level;
left=n-level; right=n+level;
% 若子矩阵的某一边界值超出输入矩阵的相应边界,就进行边界处理,
% 即超出边界后往相反方向平移,使其恰好与边界重合
if left<1
right=right+1-left;
left=1;
end
if right>col
left=left+col-right;
right=col;
end
if up<1
down=down+1-up;
up=1;
end
if down>row
up=up+row-down;
down=row;
end
% 获取作为输出的子矩阵,并计算点p在输出的子矩阵中的位置
smat = x(up:downleft:right);
mp=m-up+1;np=n-left+1;
function y=mywaverec2(xdim)
xd=uint8(x); % 将输入矩阵的数据格式转换为适合显示图像的uint8格式
[mn]=size(x); % 求出输入矩阵的行列数
for i=1:dim % 对转换矩阵xd进行分界线处理
m=m-mod(m2);
n=n-mod(n2);
xd(m/21:n)=255;
xd(1:mn/2)=255;
m=m/2;n=n/2;
end
figure;
subplot(121);imshow(xd);title([ num2str(dim) ‘ 层小波分解图像‘]); % 画出带有分界线的分解图像
xr=double(x); % 将输入矩阵的数据格式转换回适合数值处理的double格式
[rowcol]=size(xr); % 求出转换矩阵xr的行列数
for i=dim:-1:1 % 重构次序是从内层往外层进行,所以先抽取矩阵 xr 的最内层分解矩阵进行重构
tmp=xr(1:floor(row/2^(i-1))1:floor(col/2^(i-1))); % 重构的内层矩阵的行列数均为矩阵xr的2^(i-1)
[rt1ct1]=size(tmp); % 读取待重构矩阵 tmp 的行列数
rt=rt1-mod(rt12);ct=ct1-mod(ct12);
rLL=tmp(1:rt/21:ct/2); % 将待重构矩阵 tmp 分解为四个部分
rHL=tmp(1:rt/2ct/2+1:ct);
rLH=tmp(rt/2+1:rt1:ct
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11700 2009-04-19 11:23 WaveletImageFusion.m
文件 725 2011-08-03 16:01 新建 文本文档 (3).txt
----------- --------- ---------- ----- ----
12425 2
相关资源
- MATLAB GUI 多界面图像处理
- 单轮abs控制 matlab仿真实现
- NSGA-II的matlab 仿真程序
- 感兴趣区域提取(ROI)matlab实现
- TDOA_AOA定位的扩展卡尔曼滤波算法MA
- 频域整形法构造1/f噪声
- 大时滞系统的模糊控制MATLAB仿真\\大时
- contourlet、小波去噪
- 能量检测matlab代码
- 将二进小波变换用于图像增强的MATL
- matlab基于遗传算法实现的高效排课系
- matlab中ICP点云匹配算法
- 贝叶斯辨识的matlab程序
- 直接序列扩频的MATLAB仿真,以及对应
- 《数字信号处理matlab版》代码
- matlab车牌图像分割
- 多相滤波数字信道化MATLAB源码
-
用GUI实时更改simuli
nk仿真参数 - 基于RBF神经网络的PID控制仿真代码
- RBF插值算法Matlab代码
- DCT基函数图像_MATLAB版本
- Matlab实现M/M/1排队模型
- A率PCM编码MATLAB程序
- matlab三相桥式整流电路仿真模型
- 偏微分图像处理MATLAB程序
- 图像预处理MATLAB代码包括图像去孔洞
- 信号包络提取
- matlab编写的有关图像识别分类方法的
- 穷举法求解0-1整数规划的matlab程序
- 注水定理的算法和matlab仿真
评论
共有 条评论