GTF:通过梯度转移和总变异最小化红外和可见图像融合

2023-10-14 08:20

本文主要是介绍GTF:通过梯度转移和总变异最小化红外和可见图像融合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 📝论文下载地址
  • 🔨代码下载地址
  • 👨‍🎓论文作者
  • 📦模型讲解
    • [论文解读]
        • [目标函数]
        • [总变化最小进行优化]
        • [广义GTF算法]
        • [伪代码]

📝论文下载地址

  [论文地址]

🔨代码下载地址

  [GitHub-official]

👨‍🎓论文作者

Jiayi Ma,Chen Chen,Chang Li,Jun Huang

📦模型讲解

[论文解读]

  作者首先介绍基于梯度传递的融合公式,然后提供使用总变化最小化的优化方法。

[目标函数]

  如果给定一组融合的可见光图像和红外图像,需要生成的图像要从两张图像获得辐射信息和细节信息。假设可见光和红外图像以及融合图像均为 m × n m×n m×n的灰度图像,表示为 v 、 u 、 x v、u、x vux
  首先,红外图像的像素值是由热辐射决定,所以目标与背景的亮度差异巨大,更容易在红外图像中发现目标。这对这一特点,作者将融合图像的亮度更接近与红外图像的亮度,也就i是像素值的大小。例如,可以设定一些 L p \mathcal L^p Lp范数来衡量两者的差异:
L 1 ( x ) = 1 p ∣ ∣ x − u ∣ ∣ p p L_1(x)=\frac{1}{p}||x−u||^p_p L1(x)=p1xupp
  另外,为了获得更详细的外观信息,融合图像的像素值大小同样需要与可见光图像相似。但是,一些情况下可见光图像与红外图像的亮度会有很大的差异,同时优化以下公式往往生成的融合图像 x x x效果并不好。
L 1 ( x ) = 1 p ∣ ∣ x − u ∣ ∣ p p L 2 ( x ) = 1 q ∣ ∣ x − v ∣ ∣ q q L_1(x)=\frac{1}{p}||x−u||^p_p\\L_2(x)=\frac{1}{q}||x−v||^q_q L1(x)=p1xuppL2(x)=q1xvqq
  图像的细节信息更多的体现在纹理上,也就是图像的梯度。可见光图像相对于红外图像有更丰富的纹理梯度信息,所以生成的融合图像的梯度可以继承于了见光图像的梯度:
L 2 ( x ) = 1 q ∣ ∣ ∇ x − ∇ v ∣ ∣ q q L_2(x)=\frac{1}{q}||\nabla x−\nabla v||^q_q L2(x)=q1xvqq
其中 ∇ \nabla 表示求梯度。在 q = 0 q=0 q=0的情况下,就是求 ∇ x − ∇ v \nabla x-\nabla v xv的非零项个数。
  那么如果结合两部分公式,得到:
L ( x ) = L 1 ( x ) + L 2 ( x ) = 1 p ∣ ∣ x − u ∣ ∣ p p + λ 1 q ∣ ∣ ∇ x − ∇ v ∣ ∣ q q L(x)=L_1(x)+L_2(x)\\=\frac{1}{p}||x-u||^p_p+\lambda\frac{1}{q}||\nabla x-\nabla v||_q^q L(x)=L1(x)+L2(x)=p1xupp+λq1xvqq
其中第一项是约束融合图像在亮度上接近于红外图像,第二项是约束融合图像在梯度上接近于可见光图像的梯度, λ \lambda λ是平衡两项的参数。

[总变化最小进行优化]

  接下来作者分析了 p 、 q p、q pq的选择。
  首先,对于 p p p。如果融合图像x和红外u之间的差异为高斯时 p = 2 p=2 p=2,如果是拉普拉斯或者脉冲的情况下 p = 1 p=1 p=1。期望融合图像最大程度继承红外图像,那么 L 1 L_1 L1就要尽可能为0,也就是融合图像的像素值与红外图像尽可能一样,而不同的像素值可能是可见光梯度,也就是第二项 L 2 L_2 L2造成的。因此,作者认为融合图像x和红外u之间的差异为拉普拉斯或者脉冲而不是高斯,所以 p = 1 p=1 p=1。另外,对于 q q q。作者通过几篇相关文献确定 q = 1 q=1 q=1
L ( x ) = L 1 ( x ) + L 2 ( x ) = ∣ x − u ∣ + λ ∣ ∇ x − ∇ v ∣ L(x)=L_1(x)+L_2(x)\\=|x-u|+\lambda|\nabla x-\nabla v| L(x)=L1(x)+L2(x)=xu+λxv
  如果定义 y = x − v y=x-v y=xv,那么目标函数可以写为:
y ∗ = arg ⁡ min ⁡ y { ∑ i = 1 m n ∣ y i − ( u i − v i ) + λ J ( y ) ∣ } J ( y ) = ∑ i = 1 m n ∣ ∇ i y ∣ = ∑ i = 1 m n ( ∇ i h y ) 2 + ( ∇ i v y ) 2 y*=\arg\min_y\{\sum_{i=1}^{mn}|y_i-(u_i-v_i)+\lambda J(y)|\}\\ J(y)=\sum_{i=1}^{mn}|\nabla_iy|=\sum_{i=1}^{mn}\sqrt{(\nabla_i^hy)^2+(\nabla_i^vy)^2} y=argymin{i=1mnyi(uivi)+λJ(y)}J(y)=i=1mniy=i=1mn(ihy)2+(ivy)2
其中假如 x = ( x 1 , x 2 ) ∈ R 2 x=(x_1,x_2)\in \mathbb R^2 x=(x1,x2)R2,那么 ∣ x ∣ = x 1 2 + x 2 2 |x|=\sqrt{x_1^2+x_2^2} x=x12+x22 ∇ i = ( ∇ i h , ∇ i h ) \nabla _i=(\nabla^h_i,\nabla_i^h) i=(ih,ih) ∇ i h \nabla_i^h ih ∇ i v \nabla_i^v iv表示纵向和横向的梯度,即:
∇ i h x = x i − x r ( i ) ∇ i v x = x i − x b ( i ) \nabla_i^hx=x_i-x_{r(i)}\\\nabla_i^vx=x_i-x_{b(i)} ihx=xixr(i)ivx=xixb(i)
其中 r ( i ) 、 b ( i ) r(i)、b(i) r(i)b(i)表示 i i i的右边和下边相邻的像素。对于最后一行或者最后一列, r ( i ) 、 b ( i ) r(i)、b(i) r(i)b(i)都取 i i i。目标函数是凸优化问题,GTF算法简单有效。最后融合结果是 x = y + v x=y+v x=y+v

[广义GTF算法]

  作者使用 T \mathcal T T表示对可见光图像的空间变换,是可见光图像 v ( T ) v(\mathcal T) v(T)与红外图像 u u u对齐。目标函数可以转换为:
L ( x , T ) = ∣ ∣ x − u ∣ ∣ 1 + λ ∣ ∣ ∇ x − ∇ v ( T ) ∣ ∣ 1 L(x,\mathcal T)=||x-u||_1+\lambda||\nabla x-\nabla v(\mathcal T)||_1 L(x,T)=xu1+λxv(T)1
  目标函数中有两个未知量,分别是融合图像 u u u与空间变换 T \mathcal T T。当解决一个变量时在另一个变量信息未知情况下是困难的。但是当确定了一个变量解决另一个会相对容易。可以通过固定一个变量收敛另一个来不断迭代来解决问题。例如,可以通过固定 T \mathcal T T来解决获得 x x x。让 y = x − v ( T ) y=x-v(\mathcal T) y=xv(T)
y ∗ = arg ⁡ min ⁡ y { 1 2 ∣ ∣ y − ( u − v ( T ) ) ∣ ∣ 1 + λ J ( y ) } y*=\arg\min_y\{\frac{1}{2}||y-(u-v(\mathcal T))||_1+\lambda J(y)\} y=argymin{21y(uv(T))1+λJ(y)}
  固定 x x x解决 T \mathcal T T
L ( T ) = ∣ ∣ ∇ x − ∇ v ( T ) ∣ ∣ 1 = ∑ i = 1 m n ( ∇ i h x − ∇ i h v ( T ) ) 2 + ( ∇ i v x − ∇ i v v ( T ) ) 2 L(\mathcal T)=||\nabla x-\nabla v(\mathcal T)||_1\\=\sum_{i=1}^{mn}\sqrt{(\nabla_i^hx-\nabla_i^hv(\mathcal T))^2+(\nabla_i^vx-\nabla_i^vv(\mathcal T))^2} L(T)=xv(T)1=i=1mn(ihxihv(T))2+(ivxivv(T))2
  计算目标函数及梯度时:
r = ( ∇ h x − ∇ h v ( T ) , ∇ v x − ∇ v v ( T ) ) s = ( ∇ h v ( T ) , ∇ v v ( T ) ) L = t r ( ( r r T ) 1 / 2 ) ∇ L = − 1 2 ( r r T ) − 1 / 2 r ∇ s ∂ T ∂ θ r=(\nabla ^hx-\nabla^hv(\mathcal T),\nabla ^vx-\nabla^vv(\mathcal T))\\s=(\nabla^hv(\mathcal T),\nabla^vv(\mathcal T))\\L=tr((rr^T)^{1/2})\\\nabla L=-\frac{1}{2}(rr^T)^{-1/2}r\nabla s\frac{\partial\mathcal T}{\partial\theta} r=(hxhv(T),vxvv(T))s=(hv(T),vv(T))L=tr((rrT)1/2)L=21(rrT)1/2rsθT
其中 r 、 s r、s rs m n × 2 mn×2 mn×2的矩阵, t r ( . ) tr(.) tr(.)表示迹, ∇ s \nabla s s可以从水平梯度 ∇ h v ( T ) \nabla ^hv(\mathcal T) hv(T)和垂直梯度 ∇ v v ( T ) \nabla ^vv(\mathcal T) vv(T)得到, θ \theta θ表示仿射变换的参数。

[伪代码]
算法 1:没有预对齐的GTF算法
输入: 红外图像 u u u,可见光图像 v v v,参数 λ \lambda λ
输出: 融合图像 u u u
1 提取 u 、 v u、v uv的Canny边缘图,并使用采样方法离散化。
2 使用仿射模型的CPD算法对齐两个点集并相应的初始化 T \mathcal T T
3 重复
4   通过提出的算法优化目标函数( T \mathcal T T固定优化 y y y的目标函数)计算 y y y
5   设置融合图像 x ← y + v ( T ) x←y+v(\mathcal T) xy+v(T)
6   使用牛顿法优化慕白哦函数( y y y固定优化 T \mathcal T T的目标函数)以及其梯度计算的公式计算 T \mathcal T T
7 直至 停止准则
8 通过 x = y + v ( T ) x=y+v(\mathcal T) x=y+v(T)计算融合图像 x x x

这篇关于GTF:通过梯度转移和总变异最小化红外和可见图像融合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_36449741/article/details/105585347
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/209267

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

PyCharm如何从C盘转移到D盘

《PyCharm如何从C盘转移到D盘》:本文主要介绍PyCharm如何从C盘转移到D盘的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm从C盘转移到D盘找到在C盘的pycharm,复制整个文件夹到D盘指定位置创建新的快捷方式转移C盘中Pych

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像