Rethinking the Image Fusion(PMGI)

news2024/11/16 13:39:46

1.摘要

本文提出了一种基于梯度和强度比例维护(PMGI)的快速统一图像融合网络,可以端到端实现各种图像融合任务,包括红外和可见图像融合、多曝光图像融合、医学图像融合、多焦点图像融合和全色增强。我们将图像融合问题统一为源图像的纹理和强度比例维护问题。一方面,网络被分为梯度路径强度路径进行信息提取。我们在同一路径中进行特征重用,以避免由于卷积导致的信息丢失。同时,我们引入路径传输块在不同路径之间交换信息,它不仅可以预先融合梯度信息和强度信息,而且还可以增强后续要处理的信息。另一方面,我们根据这两种信息定义了一种统一的损失函数形式,可以适应不同的融合任务。在公开可用的数据集上的实验表明,我们的 PMGI 在各种融合任务中的视觉效果和定量指标上均优于现有技术水平。此外,我们的方法比现有技术更快。

2.引言

图像融合旨在从不同传感器获取的图像中提取最有意义的信息,并将信息合并生成一个单一的图像,该图像包含更丰富的信息,更有利于后续应用。常见的图像融合包括红外和可见图像融合、多曝光图像融合、多焦距图像融合、医学图像融合和遥感图像融合(也称为全色增强)。它们被用于目标检测、高清晰度电视、医学诊断等领域(Ma、Ma和Li 2019;Ma等2017;Xing等2018)。

现有的图像融合方法虽然在相应的融合任务中可以取得良好的结果,但仍有几个方面需要改进。首先,现有的方法通常需要手动设计活动级别测量和融合规则。考虑到源图像的多样性,这将变得越来越复杂。其次,大多数方法仅适用于特定的融合任务,而不能通用。从图像融合的本质出发设计一种通用方法是非常重要的。第三,由于计算复杂度和大量参数数量,现有的融合方法在时间上往往不太具有竞争力。

为了解决这些挑战,我们提出了一种基于梯度和强度比例维护(PMGI)的快速统一图像融合网络,可以高效地端到端实现各种类型的图像融合任务。首先,PMGI是一个端到端模型,源图像为输入,融合图像为输出,中间没有任何手动干预。其次,我们将融合问题转化为梯度和强度信息的维护。强度信息使融合图像具有与源图像类似的直方图分布,而梯度信息则提供更精细的纹理细节。因此,我们为多图像融合任务定义了统一的形式的损失函数。为了使网络适应不同的图像融合任务,我们可以通过调整每个损失项的权重,选择更有效和有趣的信息以在融合结果中保留。最后,我们将网络分为梯度路径强度路径,分别提取源图像中对应的信息。为了最小化卷积引起的信息损失,同一提取路径中每层的特征被重复使用。我们还介绍了两个路径之间的路径传递模块。一方面,它可以预先融合梯度和强度信息。另一方面,它可以增强后续处理的信息。值得注意的是,由于使用了1×1卷积核并控制了特征通道数量,我们网络中的参数数量限制在一定范围内。因此,我们的方法可以以较高的速度实现融合。

我们的工作贡献包括以下三个方面:

  • 我们提出了一种新的端到端图像融合网络,可以统一实现各种图像融合任务。提出的PMGI可以很好地融合红外和可见图像、多曝光图像、医学图像、多焦距图像和遥感图像。

  • 我们设计了一个特定的损失函数,适用于几乎所有的图像融合任务,并可以通过调整每个损失项的权重来达到预期的结果。

  • 我们的方法可以在多个融合任务中以更高的效率执行图像融合。代码可在以下网址获得:https://github.com/HaoZhang1018/PMGI ↗ AAAI2020。

3.方法

图像融合的本质是将源图像中最重要的信息结合起来,生成一个具有更丰富信息和更好视觉效果的单张图像。在不同的图像融合任务中,源图像的属性存在很大的差异,因此不适合采用相同的处理方式。然而,在大多数情况下,两种类型的源图像之间存在一种潜在的关联性,因为它们都描述着同一场景,源图像中包含了互补的信息。因此,我们尝试通过合理的网络架构和损失函数设计来以统一的方式解决不同种类的融合任务。

由于图像最基本的元素是像素,像素的强度可以表示图像的直方图分布,像素之间的差异构成了梯度,可以表示图像的纹理细节。因此,我们从这两方面的信息来描述整个图像:梯度和像素强度。这体现在网络架构和损失函数中。

我们将网络分为两个信息提取路径:梯度路径和强度路径。对于梯度路径,它负责提取纹理信息,即高频特征。同样地,对于强度路径,它负责提取强度信息。由于需要同时从两种类型的源图像中提取和保留梯度信息和强度信息,因此每个信息提取路径的输入由沿通道维度连接的不同源图像组成,以保留潜在相关性。我们将这两个源图像的连接比例设为β。此外,我们还进行特征重用和信息交换操作。

首先,信息在卷积过程中的损失是不可避免的。特征重用可以在一定程度上减少信息损失并增加特征利用率。不同类型的信息之间的交换可以预先融合梯度和强度信息,并且也是下一次提取之前信息的增强。

除了上述的通用网络结构,我们还根据图像的性质设计了一种形式统一的损失函数。我们将图像融合问题转化为梯度和像素强度信息的比例维护问题。我们的损失函数由两种类型的损失项组成:梯度损失和强度损失。它们都是为两种源图像构建的。分别来说,强度约束可以提供粗略的像素分布,而梯度约束可以增强纹理细节。它们的联合约束可以实现合理的像素强度分布和丰富的纹理细节。由于融合图像不能保留源图像的所有信息,我们必须在强度分布和纹理细节之间进行权衡,以保留更重要的梯度和强度信息。因此,我们可以调整每个损失项的权重,以改变各种类型信息的比例,使其适应不同的图像融合任务。

3.1 Network Architecture

提出的PMGI是一个非常快速的卷积神经网络。如图1所示,我们将网络分为梯度路径和强度路径,以进行相应的信息提取。梯度和强度信息通过路径传输块进行通信。值得注意的是,在多次尝试之后,输入中两个源图像的连接比例β被确定为1:2。

在两个路径中,我们使用四个卷积层进行特征提取。参考DenseNet的思想,在同一路径中进行密集连接以实现特征重用。此外,路径传输块用于在这两个路径之间传递信息,因此第三和第四个卷积层的输入不仅取决于所有先前卷积层的输出,还取决于另一个路径中卷积层的输出。第一层使用5×5的卷积核,后三层使用3×3的卷积核,并结合批归一化和Leaky ReLU激活函数。路径传输块的结构也显示在图1右下角。它使用1×1的卷积核,结合批归一化和Leaky ReLU激活函数。

然后,我们使用连接和卷积的策略来融合从两个路径提取的特征。我们沿通道连接两个特征映射。值得注意的是,这里仍然使用特征重用的思想。涉及连接的八个特征映射来自两个路径的总共八个卷积层。最后一个卷积层的卷积核大小为1×1,激活函数为tanh。在所有卷积层中,填充设置为SAME,步幅设置为1。因此,这些卷积层都不改变特征映射的大小。

3.2 损失函数

损失函数决定了提取的信息类型和不同类型信息之间的比例关系。我们网络的损失函数由两种类型的损失项组成,即强度损失梯度损失。强度损失用于约束融合图像保持与源图像类似的强度分布,而梯度损失则强制融合图像包含丰富的纹理细节。需要注意的是,我们为每个源图像构造这两种类型的损失项。因此,损失函数包含四个项,表示为:

L P M G I = λ A i n t L A i n t + λ A g r a d L A g r a d + λ B i n t L B i n t + λ B g r a d L B g r a d ( 1 ) L_{PMGI} = \lambda_{Aint} L_{Aint} + \lambda_{Agrad} L_{Agrad} + \lambda_{Bint} L_{Bint} + \lambda_{Bgrad} L_{Bgrad} \qquad (1) LPMGI=λAintLAint+λAgradLAgrad+λBintLBint+λBgradLBgrad(1)

其中 A A A B B B分别是两个源图像, L i n t L_{int} Lint表示一个源图像的强度损失项, L g r a d L_{grad} Lgrad表示相应的梯度约束项, λ \lambda λ是每个损失项的权重。

强度损失定义为:

L A i n t = 1 H W ∥ I f u s e d − I A ∥ 2 2 , L B i n t = 1 H W ∥ I f u s e d − I B ∥ 2 2 ( 2 ) L_{Aint} = \frac{1}{HW} \left\lVert I_{fused} - I_A \right\rVert_2^2, \qquad L_{Bint} = \frac{1}{HW} \left\lVert I_{fused} - I_B \right\rVert_2^2 \qquad (2) LAint=HW1IfusedIA22,LBint=HW1IfusedIB22(2)

其中 I f u s e d I_{fused} Ifused是由PMGI生成的融合图像, I A I_A IA I B I_B IB是两个源图像, H H H W W W分别是图像的高度和宽度。

同样地,用 ∇ \nabla 表示梯度操作符,梯度损失的定义如下:

L A g r a d = 1 H W ∥ ∇ I f u s e d − ∇ I A ∥ 2 2 , L B g r a d = 1 H W ∥ ∇ I f u s e d − ∇ I B ∥ 2 2 ( 3 ) L_{Agrad} = \frac{1}{HW} \left\lVert \nabla I_{fused} - \nabla I_A \right\rVert_2^2, \qquad L_{Bgrad} = \frac{1}{HW} \left\lVert \nabla I_{fused} - \nabla I_B \right\rVert_2^2 \qquad (3) LAgrad=HW1IfusedIA22,LBgrad=HW1IfusedIB22(3)

需要注意的是,公式(1)中的 λ \lambda λ可以调整,以改变融合图像中不同类型信息的比例,以适应不同的任务。具体任务对应的参数设置规则如下所述。

对于红外和可见光图像融合,我们希望可见光图像的梯度信息和红外图像的强度信息主要保留在融合结果中,而可见光图像的强度信息和红外图像的梯度信息次要。因此,参数 λ \lambda λ应满足以下设置规则:

λ i r i n t > λ v i s i n t , λ i r g r a d < λ v i s g r a d ( 4 ) \lambda_{irint} > \lambda_{visint}, \qquad \lambda_{irgrad} < \lambda_{visgrad} \qquad (4) λirint>λvisint,λirgrad<λvisgrad(4)

对于多曝光图像融合,过曝光和欠曝光图像都包含相等的纹理细节,但它们的强度太强或太弱。因此,我们设置相同的权重来平衡它们,以获得适当的强度和丰富的纹理细节,可以形式化为:

λ o v e r i n t = λ u n d e r i n t , λ o v e r g r a d = λ u n d e r g r a d ( 5 ) \lambda_{overint} = \lambda_{underint}, \qquad \lambda_{overgrad} = \lambda_{undergrad} \qquad (5) λoverint=λunderint,λovergrad=λundergrad(5)

对于多焦点图像融合,两个源图像的两种信息(梯度和强度)同等重要。这是因为我们希望同时保留两个源图像的强度和纹理信息,而另一个源图像中的聚焦(清晰)区域可以补充失焦(模糊)区域。因此,也需要设置相应的参数保持一致:

λ f o c u s 1 i n t = λ f o c u s 2 i n t , λ f o c u s 1 g r a d = λ f o c u s 2 g r a d ( 6 ) \lambda_{focus1int} = \lambda_{focus2int}, \qquad \lambda_{focus1grad} = \lambda_{focus2grad} \qquad (6) λfocus1int=λfocus2int,λfocus1grad=λfocus2grad(6)

类似地,对于医学图像融合,结构性医学图像反映了器官的纹理信息,而功能性医学图像则表示功能信息,例如代谢强度。我们以MRI和PET图像作为结构图像和功能图像的示例,从MRI图像获取主要纹理信息,从PET图像获取主要强度信息。但是,考虑到PET图像的I分量的像素强度远高于MRI,如果主要约束PET图像的像素强度,则融合图像的过度强度会掩盖纹理。因此,为了平衡纹理和强度,我们使PET和MRI的像素强度受到相同的约束。因此, λ \lambda λ应设置为:

λ P E T i n t = λ M R I i n t , λ P E T g r a d < λ M R I g r a d ( 7 ) \lambda_{PETint} = \lambda_{MRIint}, \qquad \lambda_{PETgrad} < \lambda_{MRIgrad} \qquad (7) λPETint=λMRIint,λPETgrad<λMRIgrad(7)

最后,对于全色增强,全色图像具有高空间分辨率(丰富的纹理细节),而多光谱图像包含丰富的色彩信息。目的是在保持光谱不失真的同时提高清晰度。因此,我们只约束全色图像的纹理信息,而不约束强度,以避免光谱失真,可以形式化为:

λ P A N i n t = 0 , λ P A N g r a d > λ M S g r a d ( 8 ) \lambda_{PANint} = 0, \qquad \lambda_{PANgrad} > \lambda_{MSgrad} \qquad (8) λPANint=0,λPANgrad>λMSgrad(8)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/804839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++信号量与共享内存实现进程间通信

关于信号量和共享内存的相关知识可参考下面链接&#xff1a; 进程间通信方式介绍_夜雨听萧瑟的博客-CSDN博客 C 创建共享内存_c共享内存_夜雨听萧瑟的博客-CSDN博客 信号量SytemV与Posix信号量的介绍与用法_夜雨听萧瑟的博客-CSDN博客 直接上代码&#xff0c;代码如下&#…

蓝桥杯单片机第十二届国赛 真题+代码

iic.c /* # I2C代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行编写相关代码或以该代码为基础&#xff0c;根据所选单片机类型、运行速度和试题中对单片机时钟频率的要求&#xff0c;进行代码调试和修改。 */ #include <STC1…

golang文件锁,目录锁,syscall包的使用

先说结论 1. golang提供了syscall包来实现文件/目录的加锁&#xff0c;解锁 2. syscall包属于文件锁&#xff0c;是比较底层的技术&#xff0c;并不能在所有操作系统上完全实现&#xff0c;linux上实现了&#xff0c;windows下面就没有 3. 加锁时调用syscall.Flock(fd&#…

安全学习DAY09_加密逆向,特征识别

算法逆向&加密算法分类&#xff0c;特征识别 文章目录 算法逆向&加密算法分类&#xff0c;特征识别算法概念&#xff0c;分类单向散列加密 - MD5对称加密 - AES非对称加密 - RSA 常见加密算法识别特征&#xff0c;解密特点MD5密文特点BASE64编码特点AES、DES特点RSA密文…

leaftjs实现全国温度降水气压风速等值面风场洋流效果

实现内容 数据爬取、地图marker聚合、鼠标移动显示pop&#xff0c;风场&#xff0c;洋流&#xff0c;温度等值面、降水等值面、气压等值面、风速等值面&#xff0c;洋流方向、洋流流速展示、风场方向、风场风速展示&#xff0c;后期扩展小时预报&#xff0c;分钟预报、7天预报…

Modbus RTU协议 + 调试工具 + java工具类

春风若有怜花意&#xff0c;可否容我再少年 Modbus RTU通信协议指令学习 Modbus RTU协议是一种紧凑的&#xff0c;采用二进制表示数据的方式&#xff0c;带有循环冗余校验的校验和。 读取指令格式 使用过程中03功能码比较常用&#xff0c;所以以03读取为例 读请求&#xff…

Java的代理模式

java有三种代理模式 静态代理 jdk动态代理 cglib实现动态代理 代理模式的定义&#xff1a; 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合或者不能直接引用另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的…

打包出现ProjectBuildingException异常原因之一

一次正常打包操作突然出现 原因是同事不小心在集合模块里面添加了重复的模块引入

Github 上 爆火,标星 103K的 Spring Security 手册及源码笔记,YYDS

Spring Security 是一个基于 Spring AOP 和 Servlet 过滤器的安全框架&#xff0c;它提供了安全性方面的解决方案 Spring Security 作为非常强大的框架&#xff0c;作为程序员是非常热爱的&#xff0c;我这里整理了四份 Spring Security 手写笔记及实战手册原文档见文末 目录…

FANUC机器人实现2个RO输出信号互锁关联(互补)的具体方法

FANUC机器人实现2个RO输出信号互锁关联(互补)的具体方法 一般情况下,为了方便用户控制工装夹具上的电磁阀等控制工具,FANUC机器人出厂时给我们提供了8个RO输出信号,如下图所示,这8个RO信号可以各自单独使用。 那么,如果为了安全控制,需要将2个RO信号成对的进行安全互锁…

【C语言进阶篇】回调函数都学了吧!那么用冒泡排序实现qsort函数你会嘛?

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; qsort 和 冒泡排序的区别&#x1f4d1; qsort 的特点&#x1f4d1; 冒泡排序 …

干货 | 常见电路板GND与外壳GND之间接一个电阻一个电容,为什么?

干货 | 常见电路板GND与外壳GND之间接一个电阻一个电容&#xff0c;为什么&#xff1f; 外壳是金属的&#xff0c;中间是一个螺丝孔&#xff0c;也就是跟大地连接起来了。这里通过一个1M的电阻跟一个0.1uF的电容并联&#xff0c;跟电路板的地连接在一起&#xff0c;这样有什么好…

Michael.W基于Foundry精读Openzeppelin第14期——SafeMath.sol

Michael.W基于Foundry精读Openzeppelin第14期——SafeMath.sol 0. 版本0.1 SafeMath.sol 1. 目标合约2. 代码精读2.1 tryAdd(uint256 a, uint256 b) && trySub(uint256 a, uint256 b) && tryMul(uint256 a, uint256 b) && tryDiv(uint256 a, uint256 b…

CSS鼠标样式(cursor)

CSS cursor 属性值 属性值示意图描述auto默认值&#xff0c;由浏览器根据当前上下文确定要显示的光标样式default 默认光标&#xff0c;不考虑上下文&#xff0c;通常是一个箭头none不显示光标initial将此属性设置为其默认值inherit从父元素基础 cursor 属性的值context-menu…

JVM理论(七)性能监控与调优

概述 性能优化的步骤 性能监控&#xff1a;就是通过以非强行或入侵方式收集或查看应用程序运行状态,包括如下问题 GC频繁CPU过载过高OOM内存泄漏死锁程序响应时间较长性能分析&#xff1a;通常在系统测试环境或者开发环境进行分析 通过查看程序日志以及GC日志,或者运用命令行工…

simulink与遗传算法结合求解TSP问题

前言&#xff1a;刚开始入门学习simulink&#xff0c;了解了基本的模块功能后想尝试从自己熟悉的领域入手&#xff0c;自己出题使用simulink搭建模型。选择的是TSP问题的遗传算法&#xff0c;考虑如何用simulink建模思想来实现一个简单TSP问题的遗传算法。 TSP问题描述 一个配…

注解和反射04--类加载

类加载 Java内存分析了解类的加载过程类的加载与ClassLoader的理解什么时候会发生类的初始化 类加载器类加载器的作用 Java内存分析 了解类的加载过程 当程序主动使用某个类是&#xff0c;如果该类害未被加载到内存中&#xff0c;啧系统会通过下面三个步骤来对该类进行初始化 …

数字信号处理中的基本运算——加法运算

1. 一位全加器 2. 二进制加法原理 两个N位二进制补码相加&#xff0c;为防止溢出时导致计算结果错误&#xff0c;可将这两个加数先进行符号位扩展&#xff0c;变为N1位二进制数&#xff0c;然后相加&#xff0c;结果亦取N1位&#xff0c;可保证运算结果正确。 根据多位加法器…

互联网医院申办|线上问诊系统|互联网医院系统功能

随着互联网的快速发展&#xff0c;各行各业都在积极探索如何将互联网与自身服务相结合&#xff0c;实现数字化转型。互联网医院建设分院内与院外建设&#xff0c;院内建设是业务流程的优化过程&#xff0c;是系统改造的过程&#xff0c;是医院精细化运营的一部分&#xff0c;也…