【图像融合】基于小波变换的图像融合
小波变换
传统的信号理论,是建立在Fourier分析基础上的,而Fourier变换作为一种全局性的变化,其有一定的局限性,如不具备局部化分析能力、不能分析非平稳信号等。在实际应用中人们开始对Fourier变换进行各种改进,以改善这种局限性,如STFT(短时傅立叶变换)。由于STFT采用的的滑动窗函数一经选定就固定不变,故决定了其时频分辨率固定不变,不具备自适应能力。
小波分析很好的解决了这个问题。小波直接把傅里叶变换的基给换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间了。
常见小波函数:Haar、Daubechies、Biorthogonal、Coiflets、Symlets、Morlet、Mexican Hat、Meyer、Gaus、Dmeyer、ReverseBior、Cgau、Cmor、Fbsp、Shan.
小波基函数参考链接:http://blog.csdn.net/jbb0523/article/details/42586749
代码示例
function y=wtfusion(x1,x2,N,wname)%函数功能:
% 函数x=wtfusion(x1,x2,N,wname)将两幅原图像x1,x2进行基于小波变换的图像融合,得到融合后的图像y
% 近似分量采用加权平均的融合规则,各细节分量采用基于区域特性量测的融合规则
%输入参数:
% x1----输入原图像1
% x2----输入原图像2
% N----小波分解的层数
% wname----小波基函数
%输出参数:
% y----原图像融合后得到的图像
%-----------------------------------------------------------------%x1=double(x1); %将uint8的图像数据类型转换成double型进行数据处理
x2=double(x2);%将原图像x1,x2分别进行N层小波分解,wname为小波基函数,%C为各层分解系数,S为各层分解系数长度,也就是大小.%C的结构:c=[A(N)|H(N)|V(N)|D(N)|H(N-1)|V(N-1)|D(N-1)|H(N-2)|V(N-2)|D(N-2)|...|H(1)|V(1)|D(1)]%A(N)代表第N层低频系数,H(N)|V(N)|D(N)代表第N层高频系数,分别是水平,垂直,对角高频%S(N+2行2列)的结构是储存各层分解系数长度的,即第一行是A(N)的长度(其实是A(N)的原矩阵的行数和列数),%第二行是H(N)|V(N)|D(N)|的长度,第三行是H(N-1)|V(N-1)|D(N-1)的长度,%倒数第二行是H(1)|V(1)|D(1)长度,最后一行是X的长度(大小)[C1,S1]=wavedec2(x1,N,wname);
[C2,S2]=wavedec2(x2,N,wname); A1=appcoef2(C1,S1,wname,N); %提取出小波分解的近似分量
A2=appcoef2(C2,S2,wname,N);
A=0.5*A1+0.5*A2; %近似分量的融合规则采用加权平均的方法%仿照matlab中近似分量和细节分量的存储方式,把融合后的近似分量和细节分量转成行向量,然后存入向量C中
%这样做是为了方便重构原图像a=reshape(A,1,S1(1,1)*S1(1,2)); %将A转换成行向量
C=a;for i=N:-1:1 %循环从第N层到第1层 [H1,V1,D1]=detcoef2('all',C1,S1,i); %提取出小波分解的各层细节分量[H2,V2,D2]=detcoef2('all',C2,S2,i);H=f(H1,H2); %各层细节分量的融合规则采用基于区域特性量测的融合规则V=f(V1,V2);D=f(D1,D2);h=reshape(H,1,S1(N+2-i,1)*S1(N+2-i,2));%分别将融合后的细节分量转成行向量,并存入行向量C中v=reshape(V,1,S1(N+2-i,1)*S1(N+2-i,2));d=reshape(D,1,S1(N+2-i,1)*S1(N+2-i,2));C=[C,h,v,d];
endS=S1;
y=waverec2(C,S,wname); %重构原图像
figure(1);imshow(uint8(y));title('基于小波变换的融合图像')
endfunction y=f(x1,x2)%函数功能:
% y=f(x1,x2)将两幅原图像x1和x2基于区域特性量测的融合规则进行融合,得到融合后的图像y
% 首先计算两幅图像的匹配度,若匹配度大于阈值,说明两幅图像对应局部能量较接近,
% 因此采用加权平均的融合方法;若匹配度小于阈值,说明两幅图像对应局部能量相差较大,
% 因此选取局部区域能量较大的小波系数作为融合图像的小波系数
%输入参数:
% x1----输入原图像1
% x2----输入原图像2
%输出参数:
% y----融合后的图像
%------------------------------------------------------------%w=1/16*[1 2 1;2 4 2;1 2 1]; %权系数
E1=conv2(x1.^2,w,'same'); %分别计算两幅图像相应分解层上对应局部区域的“能量”
E2=conv2(x2.^2,w,'same');
M=2*conv2(x1.*x2,w,'same')./(E1+E2);%计算两幅图像对应局部区域的匹配度
T=0.7; %定义匹配阈值
Wmin=1/2-1/2*((1-M)/(1-T));
Wmax=1-Wmin;
[m,n]=size(M);for i=1:mfor j=1:nif M(i,j)<T %如果匹配度小于匹配阈值,说明两幅图像对应局部区域能量距离较远;if E1(i,j)>=E2(i,j) %那么就直接选取区域能量较大的小波系数y(i,j)=x1(i,j);elsey(i,j)=x2(i,j);endelse %如果匹配度大于匹配阈值,说明两幅图像对应局部区域能量比较接近;if E1(i,j)>=E2(i,j) %那么就采用加权的融合算法y(i,j)=Wmax(i,j)*x1(i,j)+Wmin(i,j)*x2(i,j);elsey(i,j)=Wmin(i,j)*x1(i,j)+Wmax(i,j)*x2(i,j);endendend
endend
函数调用
x1 = imread('lena1.jpg');
x2 = imread('lena2.jpg');
out = wtfusion(x1,x2,2,'db1');subplot(1,3,1);imshow(x1);title('左模糊');
subplot(1,3,2);imshow(x2);title('右模糊');
subplot(1,3,3);imshow(uint8(out));title('基于小波变换的图像融合');
运行结果
【图像融合】基于小波变换的图像融合相关推荐
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 加权平均法融合图像matlab,基于MATLAB的图像融合算法
内容介绍 原文档由会员 小甜甜 发布 基于MATLAB的图像融合算法 1.9万字 34页 摘要 图像融合能够将不同类型传感器获取的同一对象的图像数据进行空间配准.并且采用一定的算法将各图像数据所含的信 ...
- 基于小波变换的图像边缘检测(matlab祖传代码注释)
基于小波变换的图像边缘提取应用展示 上图为针对png格式无背景原图的边缘检测,对比各种边缘检测算子,小波变化的优势体现并不明显. 上图为针对含背景图片的边缘检测,小波变化的优势这里体现的比较明显. m ...
- 小波变换去雾matlab代码,一种基于小波变换的图像去雾方法
一种基于小波变换的图像去雾方法 摘要:为获得雾天 关键词:小波变换;Mallat算法;单尺度Retinex;同态滤波 中图分类号:TN957.52文献标识码:A 文章编号:1009-3044(2020 ...
- matlab小波变换图像融合,MATLAB小波变换的图像融合算法的研究与实现+代码
摘 要:随着科技的不断进步,图像融合由于其能够去除环境中的部分干扰以及加强原图像的有效信息等优点逐渐成为人们的研究热点之一.本文详细分析了小波变换和图像融合的相关理论,将小波变换的多分辨率分析的特点 ...
- 基于小波变换的图像压缩算法SPIHT算法
SPHIT 编码 图像在经过小波变换和量化后,还未实现真正意义上的数据量的压缩.因此,需要通过 SPHIT 编码算法对小波系数进行编码压缩.对图像的编码方式有很多,这些编码包括:游程编码.huffma ...
- 基于小波变换到图像融合
<span style="font-size:18px;">%导入待融合图像1load bust X1=X; map1=map; subplot(131);image( ...
- 基于小波变换的图像解压缩
仿真结果如下 部分核心程序如下: clc; clear all; close all; orimg=imread('lena.bmp'); imshow(orimg); title('原始图象'); ...
- java 实现画函数图像_函数图像生成器 [基于JAVA的图像生成器设计与实现]
摘要:Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java技术具有卓越的通用性.高效性.平台移植性和安全性.该文基于JAVA语言,在介绍JAVA概念的基础上,实现了图像生成器的简单设 ...
最新文章
- 皮一皮:论圈子的重要性!
- UltraEdit如何删除指定字符后的内容
- [原创]浅谈在创业公司对PMF的理解
- 一张图看懂华为计算全联接2020
- 英语笔记:作文:What elective to choose
- mycat核心配置详解(schema.xml配置)
- python批量提取哔哩哔哩bilibili视频
- SAP-如何学好SAP BASIS
- 概要设计文档和详细设计文档的关系
- 基于深度学习的图像修复—心中无码
- react报错:Uncaught Error: Element type is invalid: expected a string (for built-in components) or a ..
- OSChina 周六乱弹 ——什么是村支书不可推卸的责任!
- Ubuntu14.10 更新源,现在很多源已经停用了建议使用ubuntu15以上
- 华为手机设置页面黑色_华为手机简单设置一下,来电直接显示对方照片视频,个性又炫酷...
- 微信公众号支付问题 - 当前页面的URL未注册
- 纸上得来终觉浅(experience is the best teacher)
- mysql8.0 安装与卸载
- ROC曲线,AUC,和P-R曲线的关系
- 对DataFrame各行列累乘:prod()函数
- #BDA#笔记#业务知识:常见行业业务模式指标4在线教育行业