参考:
https://blog.csdn.net/liu_guanzhang/article/details/42120861
https://wenku.baidu.com/view/a4cfe4c36137ee06eff918c0.html
本文旨在利用小波变换实现一个很简单的融合算法,对小波变换的应用有个粗略的认识。当然本文的算法其实是很简陋的,仅是作为一个例子,不具有广泛应用的实际。
在下面的程序中,我们基于这样一个简单的融合规则,即对2幅图像的低频部分采取均值,而对2幅图像的高频部分,我们留下对应位置最大的那个频率信息。
算法的流程图如下图所示:

融合程序

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% % 使用小波变换对2幅图像进行融合,仅适用灰度图
% % % % % %参数说明:
%    M1     - 输入图像 A
%    M2     - 输入图像 B
%    wtype  - 指定使用的小波基
%    Y      - 融合结果图像
% %
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % clc;
clear;
close all;
% % ===============================================
%   读入要进行融合的图像
% % ===============================================
imA = imread('pan.tif');
% 这里转化成double类型,否则使用小波变换输出的会有大量大于1的存在,会导致图像显示有问题
M1 = double(imA) / 256;   % 【问题1】
imB = imread('LR.tif');
imB = imresize(imB,4);
imB = rgb2gray(imB);
M2 = double(imB) / 256;zt = 4;           % 设置小波分解的层数
wtype = 'haar';  % 设置小波基% % ===============================================================
% 这里的融合规则是:在高频系数中,取2幅图像绝对值大的小波系数,
% 在低频系数中,取2幅图像的平均值。
% % ================================================================% % ==============================================
% 对2幅图像分别进行小波分解
% % ==============================================
[c0,s0] = wavedec2(M1, zt, wtype);
[c1,s1] = wavedec2(M2, zt, wtype); KK = size(c1);
Coef_Fusion = zeros(1,KK(2));  % 生成同系数矩阵c一样大的矩阵作为结果存储单元Coef_Fusion(1:s1(1,1)*s1(1,2)) = (c0(1:s1(1,1)*s1(1,2))+c1(1:s1(1,1)*s1(1,2)))/2;% % =============================================
% % 处理高频系数
% % =============================================
MM1 = c0(s1(1,1)*s1(1,2)+1:KK(2));
MM2 = c1(s1(1,1)*s1(1,2)+1:KK(2));
mm = (abs(MM1)) > (abs(MM2));
Y  = (mm.*MM1) + ((~mm).*MM2);
Coef_Fusion(s1(1,1)*s1(1,2)+1:KK(2)) = Y;% % =============================================
% 重构
% % 这里我们已经生成新的系数矩阵了,并利用新的系数矩
% % 阵,进行小波逆变换
% % =============================================
Y = waverec2(Coef_Fusion,s0,wtype);% % =============================================
% 显示图像
% % =============================================
subplot(2,2,1);imshow(M1);title('pan');
subplot(2,2,2);imshow(M2);title('LR');
subplot(223);imshow(Y,[]);title('融合图像');

结果

为什么要有这句代码M1 = double(imA) / 256

需要注意的是,为什么要将图像放缩到0-1?我们看下面一段程序就知道原因了。即不加这句代码,会造成图像显示为“全白”的现象。

clc;
clear;
close all;x=imread('lena_color_512.tif');  %读取原图像
x = double(x)/256; % 注释掉这段代码,再看现象
figure(1);imshow(x);title('原始图像');
x=double(x);
[c,s ]=wavedec2(x,1,'db8'); %作小波变换,形成小波系数矩阵
r = waverec2(c,s,'db8');%还原图像文件
figure;imshow(r);title('重构之后的图像');

使用小波变换进行灰度图像的融合相关推荐

  1. 【图像融合】基于matlab双树复小波变换像素级图像融合【含Matlab源码 2024期】

    ⛄一.双树复小波变换简介 1999年, Kingsbury提出了双树复小波变换.随后, 2005年, Seles nick等设计出了双树复小波变换的分解重构算法,这一算法的提出,使得双树复小波变换能够 ...

  2. 【图像融合】基于平移不变剪切波小波变换实现CT图像融合matlab代码

    1 简介 传统的基于剪切波变换的融合方法在融合图像的奇异处易产生伪吉布斯现象. 为此,文中提出了一种基于平移不变剪切波变换的医学图像融合新方法. 该方法利用平移不变剪切波变换将待融合的医学图像分解成低 ...

  3. 金字塔图像融合方法总结(一)

    一.高斯金字塔和下采样 为了获取层级为 G_i+1 的金字塔图像,我们采用如下方法: <1>对图像G_i进行高斯内核卷积 <2>将所有偶数行和列去除 得到的图像即为G_i+1的 ...

  4. 图像融合(Image Fusion)

    图像融合(Image Fusion) 是用特定的算法将两幅或多幅图像综合成一幅新的图像.融合结果由于能利用两幅(或多幅) 图像在时空上的相关性及信息上的互补性,并使得融合后得到的图像对场景有更全面.清 ...

  5. 【MATLAB图像融合】[2]像素加权融合及图像融合的主观性

    一.像素加权融合 原理        在上一篇文章中提过,在MATLAB中,图像会以矩阵的形式读入.存入程序,对像素级的操作就是对矩阵中每个元素的操作.因此,如果想实现带权的操作,那么对像素点赋予权值 ...

  6. 小波的秘密10_图像处理应用:图像增强

    1.前言: 图像融合是信息融合的一个重要分支,广泛地用于目标识别.机器视觉.智能系统.医学图像处理等领域.传统图像融合方法方法主要是在时间域通过算术运算实现融合,具有算法简单直观,适合实时处理等优点, ...

  7. 综述:视频和图像去雾算法以及相关的图像恢复和增强研究

    综述:视频和图像去雾算法以及相关的图像恢复和增强研究 翻译自IEEE的一篇文章<Review of Video and Image Defogging Algorithms and Relate ...

  8. DenseFuse: A Fusion Approach to Infrared and Visible Images 阅读笔记

    DenseFuse: A Fusion Approach to Infrared and Visible Images 阅读笔记 摘要 介绍 相关工作 融合方法 编码器 解码器 融合层 训练 网络结构 ...

  9. 成像系统类毕业论文文献有哪些?

    本文是为大家整理的成像系统主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为成像系统选题相关人员撰写毕业论文提供参考. 1.[期刊论文]小动物成像系统与荧光显微成像系统的蒿草组织切片荧光 ...

  10. 层析成像类毕业论文文献都有哪些?

    本文是为大家整理的层析成像主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为层析成像选题相关人员撰写毕业论文提供参考. 1.[期刊论文]应用光学相干层析成像的增强深部成像技术测量健康成人 ...

最新文章

  1. Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求
  2. idl结果显示窗口如何缩小_科学网—IDL 创建窗口 - 钱磊的博文
  3. 面向大数据处理应用的广域存算协同调度系统
  4. Weblogic的classpath设置
  5. ssd1306 OLED 初始化流程
  6. HTTPS反向代理嗅探
  7. MSSql与MYSQL比较
  8. 同济大学高等数学下册第十章重积分以及每日一题
  9. RH850 F1L freeRTOS 任务栈的切换
  10. python生成图文并茂的pdf--财务报表(三)--页面布局和排版
  11. plm系统服务器,SIPM/PLM
  12. 计算机不能引导硬盘,联想电脑win10改win7后不能引导bios中找不到硬盘的解决教程...
  13. Effective C++ item 6
  14. ajax 后面接什么,什么是AJAX?
  15. Unity【Bounds Vector3 Cross】- 如何判断一个物体是否在一个凸边体三维区域内
  16. 两块同步FIFO实现乒乓操作
  17. 求一元多项式 P(x) = a0 + a1x + a2x^2 + ... + anx^n 的值P(x0)。
  18. 驱动VS1003要注意的事项
  19. 基于OpenCV的视频场景切割神器
  20. 华为手机摄影从入门到精通_华为手机拍照技巧从入门到精通

热门文章

  1. 创建者模式 --- 工厂模式
  2. mysql安装 linux rpm_linux MySQL5.7 rpm安装
  3. 广西中专机器人应用与维护_2020年广西职业院校技能大赛中职组 智能家居安装与维护和机器人技术应用在柳州市一职校落幕...
  4. python代码段_python代码段有哪些
  5. Jetbrains:设置ctrl+鼠标滚动控制代码字体大小
  6. Javascript:js借助jQuery和fileSave将表格存储到world
  7. C#:DataTable判断是否存在某列
  8. mysql temp table_新特性解读 | MySQL 8.0 Temptable 引擎介绍
  9. cmd for语句的用法
  10. 认真,respect!