基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】

在这里插入图片描述

@


研究背景

  人们在用相机拍照时,由于相机景深问题,难以确保每个细节都清晰。相机不能将镜头内所有景物拍摄清楚,导致拍摄出的照片不能完全满足需求。为此,多焦点图像融合技术应运而生。它巧妙地将两张在同一取景地但聚焦位置不同的源图像融合,得到一张整体聚焦的融合图,从而巧妙地突破了传统技术景深限制,为摄影艺术带来新的可能性。这样的融合图像不仅更符合人类的视觉感知习惯,而且也便于后续的数字图像处理,提高了处理效率。此外,多聚焦图像融合技术还有助于提高图像的细节保留和清晰度,使得图像在视觉上更加美观,同时也能更好地满足各种计算分析的需求。
  信息融合技术已发展四十余年,成为许多学者研究的热门领域。到目前,它已成为众多图像系统中不可缺少的关键预处理技术。信息融合技术的很多方面都用到图像融合技术,该技术能有效地将不同传感器获得的两个或多个图像融合在一起,生成内容更丰富、更符合人类视觉感知的图像[1][2]。在军事应用中,图像融合助力整合不同传感器(如红外、可见光、雷达等)的图像信息,提高对战场环境的感知能力,实现目标检测、跟踪、识别等功能,增强部队的作战效能。在医疗领域,CT(计算机断层扫描)技术能够精确展示骨骼结构,而MRI(磁共振成像)则擅长清晰地描绘软组织。通过融合这两种不同模态的医学图像,可以获得更为全面的医疗影像资料。在遥感领域,多光谱图像因其蕴含丰富的光谱信息而备受重视,尽管其空间分辨率通常不如全色图像。相比之下,全色图像在空间分辨率上表现更佳,但光谱信息则较为有限。为发挥这两种图像各自优势,通过融合生成一张高空间分辨率且富含光谱信息的图像,可更精确地解读所观测场景。这种融合技术不仅能够提高图像的清晰度,还能够增强对地物细节的识别能力,从而在遥感分析和应用中发挥重要作用。此外,图像融合技术也用于增强现实、图像编辑、视频合成等应用,丰富了人们的视觉体验。
  在军事领域,无人机经常用于执行敌方侦察任务。作为一种先进的军事技术装备,无人机通常会搭载多种传感器,如重力传感器、红外线探测器、激光雷达(Lidar)以及可见光摄像头等。集成了这些传感器后,无人机能够在战场多变环境中收集和利用大量信息,提高执行任务效率。为了实现这些传感器捕获数据的最大化利用,关键在于采用图像融合技术来综合处理和整合这些多元信息。图1-1展示了可见光与红外图像的组合。在可见光图像中,由于人物与背景颜色接近,难以迅速辨识人物,但场景细节清晰。而在红外图像中,人物轮廓突出,但场景细节模糊。通过融合这两种图像的显著信息,对无人机执行精确的目标检测和识别任务极具助益。

代码下载链接

源码获取:https://mbd.pub/o/bread/mbd-ZpyXkptx


一、效果演示

  本文构建的基于深度学习的多焦点图像融合系统基于PyQt5构建。

1.1 界面设计

在这里插入图片描述

1.2 图像融合演示1

在这里插入图片描述

1.3 图像融合演示2

在这里插入图片描述

1.4 图像融合演示3

在这里插入图片描述

二、技术原理

2.1 引言

  在过去的几年里,深度卷积网络(CNN)在图像处理方面取得了显著的成就。Yu Liu率先将CNN应用于多焦点图像融合[16]。Ram Prabhakar提出了一种无监督的深度学习方法,称为DeepFuse,用于解决曝光融合问题[23]。该算法通过加速融合图像的构建,并采用12种人工设计的掩模来构建数据集。算法中包括对决策图的后处理步骤。训练图像包含了聚焦和散焦的部分,但由于使用了人工设计的掩模,与真实的多聚焦图像数据存在差异。此外,还提出了一种基于深度学习的算法,用于处理不同类型的图像融合任务[24]。H. Li提出了DenseFuse方法,用于融合红外和可见光图像[25]。该方法采用编码器-解码器无监督策略来提取有用特征,并利用L1范数将这些特征融合。在红外图像中,由于热辐射物体的存在,其像素强度通常高于可见光图像。该算法强调的是像素强度而非像素梯度,因为L1范数更适合于红外和可见光图像的融合。当热辐射物体较大时,红外图像中的相应区域可能全白,而可见光图像中的对应区域可能全黑,这会导致两者在梯度上的相似性。在这种情况下,基于梯度的指标(如空间频率)可能会引入检测误差,因此不适用。
  在本文中,利用基于编码器-解码器网络架构的无监督学习框架训练模型。编码器负责从输入图像抽取关键特征,而解码器则负责从抽象特征集中重新捕获原始图像。通过这种方式,能够学习到图像中的关键特征,并利用这些特征进行后续处理。为了生成源图像的模糊度和对应掩码图,利用处理模糊度作为融合规则。这一方法的核心假设是,只有位于景深内的物体才会呈现出清晰的外观。一些研究人员对此进行了改进,并提出了将深度学习和梯度信息结合的新思路,这有望进一步提升多聚焦图像融合的性能。韩旭提出了一种基于梯度和连通区域的融合方法(GCF)[26],该方法利用编码器-解码器结构生成梯度关系图来创建决策图,并利用深度学习模型隐式计算梯度信息。与此相比,本文直接使用编码器-解码器输出原始图像,并通过模糊度显式计算深层特征中的梯度信息来生成掩码图。本文推测,相较于隐式解码器映射,本文的方法可能更为稳健。

2.2 融合策略

  本节将详细阐述本文所提出的融合策略。经过在海量数据上的训练,CNN模型成功萃取了图像中多种特征,如边缘轮廓、边角细节以及纹理结构等。这些特征在图像聚焦状态或散焦程度的评估中扮演着关键角色。本文所提出的多焦点图像融合方法,如图3-1所示,其核心在于利用无监督的深度特征提取技术,先对源图像进行特征解码,接着利用基于梯度的方法对模糊度进行评估,初步生成融合掩码图后,为调整和修改掩码图本文使用去噪与平滑策略进行修整,最后实现多源图像信息的有效整合。
在训练阶段提取了高维特征。在推理阶段,利用编码器的深层特征来计算图像模糊度,并最终生成掩码图以融合两个多聚焦的源图像。本文的算法专门设计用于融合两个源图像。对于多图像融合,它可以直接将多个图像依次串联进行融合。
在这里插入图片描述

在这里插入图片描述

2.3 深度特征的提取

  本文使用编码器和解码器架构来重建原始输入图像并在训练阶段丢弃融合操作。在网络完成训练且参数固定后,推理阶段采用模糊度的处理来评估编码器提取的深层特征活跃度。该架构如图3-2所示,编码器由四个级联的卷积层组成,各层输出相互连接,这种设计不仅增强了特征传播,还实现了参数的高效利用,在特征图的上方或下方标注了其内核编号。为了更精确地重建图像,移除了池化层。本研究引入了挤压和激励(SE)机制,如下图所示,该机制在图像识别和分割任务中展现出卓越性能。
在这里插入图片描述
  SE模块通过自适应微调通道或空间特征响应,显著提高了空间特征编码的保真度[27]。如图3-2所示,本文使用SE模块来增强深层特征的鲁棒性和代表性。本文使用三个版本的SE模块,空间挤压和通道激励(sSE),通道挤压和空间激励(cSE),以及并发空间和通道挤压和通道激励(scSE),这种架构为网络提供了学习更具意义和表达力的空间及通道特征图的机会[28]。具体而言,sSE利用配备1x1卷积核的层来产生投影张量,这个张量中的每个元素都封装了在不同空间位置的所有通道C的信息合成,随后利用这些信息对空间域中的原始特征图进行细化,sSE在单个通道的粒度级别上对特征映射进行重新校准。scSE则是sSE和cSE的逐元素相加,它能够同时优化输入的空间和通道级信息。损失函数L与像素损失L_p和结构相似性(SSIM)损失L_ssim有关:
在这里插入图片描述

L被最小化来训练编码器和解码器。λ是权重常数,用来平衡两个损失的重要性。像素损耗L_p是输出(O)和输入(I)之间的欧氏距离:
在这里插入图片描述

SSIM损失L_ssim是O和I之间的结构差异,
在这里插入图片描述
其中:
在这里插入图片描述
SSIM表示结构相似性操作。亮度、对比度和结构相似度的表达式在公式的右边,μ是平均值,σ是标准差,C1、C2和C3是常数[29]。

2.4 融合策略

  在推理阶段,从编码器中获得了图像的两个深度特征。通过利用模糊度的计算生成初始掩码图,使用传统的去噪与平滑技术对其进行细化,以减少较小差异。该改进的方法最终生成了一个复合掩码图,该图无缝地集成了来自两个多焦点源图像的基本特征。

2.4.1 利用深度特征计算模糊度

  在本文中采用了与DenseFuse不同的方法来计算模糊度。与DenseFuse中使用的L1-范数不同,本文使用特征梯度而不是特征强度来计算模糊度。特征梯度能够反映图像中特征的变化率,从而更好地指示哪些部分是清晰的。为了执行这一任务,本文利用编码器为图像中的每个像素产生多维深度特征。然而,传统的空间频率计算是为单通道灰度图像量身定制的,这意味着直接将深度特征应用于空间频率计算是不太准确的。作为回应,创新了一种计算这些深层特征模糊度的方法。设F是由编码器块输出的深度特征,F_((x,y))表示一个特征向量,(x, y)是这些向量的位置,通过以下公式计算模糊度(BF)。
在这里插入图片描述

2.4.2 去噪与平滑

  尽管基于深度特征构建的掩码图展现出了显著的鲁棒性,能够准确地指出图像中的聚焦区域,在掩码流程中,图像自身的不稳定性或成像系统引入的噪声可能会导致误差的产生。例如,成像过程中可能会随机出现高斯噪声或椒盐噪声,这些噪声会对模糊度的精确计算产生干扰,特别是椒盐噪声,它对模糊度的测量有着显著的影响。为了弥补这一缺陷,本文使用一种去噪与平滑策略。通过形态学操作,如开运算和闭运算,以及移除小区域的方法,可以有效清除掩码图中的错误聚焦像素,从而提高掩码图的准确性。
为了精细调整和修正掩码图,本算法采用了形态学运算(开运算和闭运算),作为后处理步骤,开运算对应去噪而闭运算对应平滑,并使用了小磁盘形状的结构元素[30]。这种结构元素的半径与模糊度核的半径相匹配,能够有效地识别和修正错误,同时确保相邻区域之间的正确连接。针对二元掩码图的每个通道,本文实施了一项小区域移除策略,以消除那些小于特定区域阈值(0.01 * H * W,其中H和W分别代表原始输入图像的高度和宽度)[16]的区域,从而逆转错误掩码图。
  为了削弱边界附近的伪影,本文运用引导滤波器来优化聚焦与散焦区域的过渡[31][30]这一高效的边缘保留滤波技术。在图像融合过程中,引导滤波器(Guided Filter)采用初始融合图像作为其计算的引导图,以实现对后续掩码图的优化。引导滤波器通过将初始融合图像作为引导,可以更准确地调整融合图像中的细节,提高图像的整体质量。引导滤波器(Guided Filter)中,经过一系列实验测试和优化,确定了窗口半径r为4和正则化参数ε为0.1的参数设置,以实现最佳的处理效果。这些参数的选择对滤波器的性能有重要影响,通过实验确定这些参数值,可以确保滤波器在处理图像时能够达到预期的效果。

2.4.3 图像融合

  通过采用像素级加权融合规则,得到最终融合图像F。输入图像Imgk表示已完成预注册的源图像,
在这里插入图片描述
在这里插入图片描述

三、实验分析

3.1实验设置

3.1.1 硬件环境

  1. CPU:Intel Core i7
  2. GPU:NVIDIA GeForce RTX 2060

3.1.2 软件环境

  1. 操作系统:Windows 10
  2. Python版本:3.8
  3. 深度学习框架:PyTorch 1.9.0
  4. 其他依赖库:torch、opencv-python、numpy、skimage
  5. 编程环境:Anaconda Powershell Prompt(Miniconda3)

  新人安装Anaconda环境可以参考博主写的文章Anaconda3与PyCharm安装配置保姆教程

  新人安装PyTorch GPU版本可以参考博主写的文章基于conda的PyTorch深度学习框架GPU安装教程

3.1.3 数据集

  本文使用公开的300多对公开的多焦点图像作为评估的测试集。由于本文采用无监督策略,首先使用MS-COCO来训练编码器-解码器网络[32],以其中100对图像作为训练集,并用其中的部分图像来验证每个时期的重建能力。接下来借助OpenCV库提前对数据进行处理,如缩放、裁剪、旋转等操作。
在这里插入图片描述

3.1.4 系统设计与实现

  1. 创建界面
      通过编写Python代码以创建GUI界面。利用QMainWindow类提供的框架,构建多焦点图像融合系统界面。
class MyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        # 调用父类构造函数,创建窗体
        super().__init__(parent)
        # 创建UI对象
        self.ui = Ui_MainWindow()
        # 构造UI界面
        self.ui.setupUi(self)

        self.set_centre()
        self.image1_file_path = None
        self.image2_file_path = None

        self.ui.pushButton_select_image_1.clicked.connect(self.image_select_1_slot)
        self.ui.pushButton_select_image_2.clicked.connect(self.image_select_2_slot)
        self.ui.pushButton_image_fusion.clicked.connect(self.pushButton_image_fusion_slot)


    def pushButton_image_fusion_slot(self):
        image_fusion(self.image1_file_path, self.image2_file_path)

        self.show_image(image_read_from_chinese_path('out.png'), self.ui.label_imageRes)

    def set_centre(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2))

    def image_select_1_slot(self):

        self.ui.label_imageRes.clear()
        self.ui.label_image1.clear()
        self.ui.label_image2.clear()

        self.image1_file_path, ret = QFileDialog.getOpenFileName(None, '选择图像', "./data/multi_focus",
                                                                "图像文件 (*.jpg *.png)")

        if self.image1_file_path:
            self.show_image(image_read_from_chinese_path(self.image1_file_path), self.ui.label_image1)

    def image_select_2_slot(self):

        self.image2_file_path, ret = QFileDialog.getOpenFileName(None, '选择图像', "./data/multi_focus",
                                                                "图像文件 (*.jpg *.png)")

        if self.image2_file_path:
            self.show_image(image_read_from_chinese_path(self.image2_file_path), self.ui.label_image2)

    @staticmethod
    def show_image(img_src, label):
        try:
            ih, iw, _ = img_src.shape
            w = label.geometry().width()
            h = label.geometry().height()
            # 保持纵横比
            # 找出长边
            if iw > ih:
                scal = w / iw
                nw = w
                nh = int(scal * ih)
                img_src_ = cv2.resize(img_src, (nw, nh))

            else:
                scal = h / ih
                nw = int(scal * iw)
                nh = h
                img_src_ = cv2.resize(img_src, (nw, nh))

            frame = cv2.cvtColor(img_src_, cv2.COLOR_BGR2RGB)
            img = QImage(frame.data, frame.shape[1], frame.shape[0], frame.shape[2] * frame.shape[1],
                         QImage.Format_RGB888)
            label.setPixmap(QPixmap.fromImage(img))

        except Exception as e:
            print(repr(e))
  1. 集成模型
      用torch包中的model = torch.load('path_to_model.pth')加载已训练好的模型,并用库提供的函数对数据进行预处理。
  2. 信号与槽函数绑定
      在PyQT5中,信号与槽函数的关系类似报文段的发送关系,控件发出信号通知,槽函数接受信号并作出相应。绑定二者是实现GUI响应性的关键,比如,用户点击界面的按钮时,会触发对应信号,从而调用与之绑定的槽函数。
    在这里插入图片描述

3.1.5 主界面

在这里插入图片描述

3.1.6 融合效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码下载链接

源码获取:https://mbd.pub/o/bread/mbd-ZpyXkptx

视频介绍:https://www.bilibili.com/video/BV19taDeBEKt/?spm_id_from=333.999.0.0&vd_source=0bfccc45d8303cee561cd4a90452a69a

  若您想获得博文中涉及的实现完整全部程序文件(包括系统UI设计文件,测试数据集、py文件,模型权重文件,调试说明等),代码获取与技术指导,具体见可参考博客与视频,已将所有涉及的文件同时打包到里面,软件安装调试有具体说明
在这里插入图片描述

参考文献

[1] Chen Y, Guan J, Cham W K. Robust multi-focus image fusion using edge model and multi-matting[J]. IEEE Transactions on Image Processing,2018,27(3):1526-1541.
[2] Liu Y, Chen X, Wang Z, et al. Deep learning for pixel-level image fusion: Recent advances and future prospects[J]. Information Fusion,2018,42:158-173.
[3] Liu Z, Tsukada K, Hanasaki K, et al. Image fusion by using steerable pyramid[J]. Pattern Recognition Letters,2001,22(9):929-939.
[4] Hill P, Al-Mualla M E, Bull D. Perceptual image fusion using wavelets[J]. IEEE Transactions on Image Processing,2017,26(3):1076-1088.
[5] Mu N, Xu X, Zhang X, et al. Discrete stationary wavelet transform based saliency information fusion from frequency and spatial domain in low contrast images[J]. Pattern Recognition Letters,2018,000:1-8.
[6] Zhang Q, Guo B L. Multifocus image fusion using the nonsubsampled contourlet transform[J]. Signal Processing,2009,89(7):1334-1346.
[7] Burt P J, Adelson E H. The laplacian pyramid as a compact image code[J]. Readings in Computer Vision,1987,31(4):671-679.
[8] Li H, Manjunath B S, Mitra S K. Multi-Sensor image fusion using the wavelet transform[C]// image processing, 1994. Proceedings. ICIP-94. IEEE International Conference. IEEE,1994.
[9] Chandana, M., S. Amutha, and N. Kumar, A hybrid multi-focus medical image fusion based on wavelet transform. International Journal of Research & Reviews in Computer Science,2011.
[10] Zhang Q, Fu Y, Li H, et al. Dictionary learning method for joint sparse representation-based image fusion[J]. Optical Engineering,2013,52(5):057006.
[11] Li Q, Du J, Song F, et al. Region-based multi-focus image fusion using the local spatial frequency[C]. In 2013 25th Chinese control and decision conference(CCDC),2013:3792–3796.
[12] Yang B, Guo L. Superpixel based fusion and demosaicing for multi-focus Bayer images[J]. Optik,2015,126(23):4460–4468.
[13] Liu Y, Liu S, Wang Z. Multi-focus image fusion with dense SIFT[J]. Information Fusion,2015,23:139–155.
[14] Li S, Kang X, Hu J, et al. Image matting for fusion of multi-focus images in dynamic scenes[J]. Information Fusion,2013,14(2):147–162.
[15] Zhang X, Li X, Liu Z, et al. Multi-focus image fusion using image-partition-based focus detection[J]. Signal Processing,2014,102:64–76.
[16] Liu Y, Chen X, Peng H, et al. Multi-focus image fusion with a deep convolutional neural network[J]. Information Fusion, 2017, 36:191-207.
[17] Du C, Gao S. Image segmentation-based multi-focus image fusion through multi-scale convolutional neural network[J]. IEEE access,2017,5:15750-15761.
[18] Tang H, Li W, et al. Pixel convolutional neural network for multi-focus image fusion[J]. Information Sciences,2018,433:125-141.
[19] LeCun Y, Bengio Y, Hinton G. Deep learning[J].nature,2015,521(7553): 436.
[20] Han J, Moraga C. The influence of the sigmoid function parameters on the speed of backpropagation learning[C]//International Workshop on Artificial Neural Networks. Springer, Berlin, Heidelberg,1995:195-201.
[21] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems.2012:1097-1105.
[22] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition.2016:770-778.
[23] Prabhakar R (2017) Deepfuse: A deep unsupervised approach for exposure fusion with extreme exposure image pairs. In: The IEEE international conference on computer vision (ICCV).
[24] Zhang Y, Liu Y, Sun P, Yan H, Zhao X, Zhang L (2020) IFCNN: a general image fusion framework based on convolutional neural network. Inf Fusion 54:99-118.
[25] Li H, Wu X (2019) Densefuse: A fusion approach to infrared and visible images. IEEE Trans Image Process 28(5):2614-2623.https://doi.org/10.1109/TIP.2018.2887342.
[26] Xu H, Fan F, Zhang H, Le Z, Huang J(2020) A deep model for multi-focus image fusion based on gradients and connected regions. IEEE Access 8:26316-26327.
[27] Hu J, Shen L, Sun G (2018)Squeeze-and-excitation networks. In: The IEEE conference on computer vision and pattern recognition(CVPR).
[28] Roy AG, Navab N, Wachinger C (2018) Concurrent spatial and channel squeeze and excitation in fully convolutional networks. In: International conference on medical image computing and computer-assisted intervention. Springer, pp 421-429.
[29] Wang Z, Bovik AC, Sheikh HR, Simoncelli EP (2004) Image quality assessment: from error visibility to structural similarity. IEEE Trans Image Process 13(4):600-612.
[30] De I, Chanda B, Chattopadhyay B (2006) Enhancing effective depth-of-field by image fusion using mathematical morphology. Image Vision Comput 24(12):1278-1287. https://doi.org/10.1016/j.imavis.2006.04.005.
[31] He K, Sun J, Tang X (2013) Guided image filtering. IEEE Trans Pattern Anal Mach Intell 35(6):1397-1409. https://doi.org/10.1109/TPAMI.2012.213.
[32] Lin TY, Maire M, Belongie S, Hays J, Perona P, Ramanan D, Dollar P, Zitnick CL(2014) Microsoft coco: common objects in context. In: Fleet D, Pajdla T, Schiele B, Tuytelaars T (eds) Computer vision-ECCV 2014.Springer, Cham, pp 740-755.
[33] Ellmauthaler A, Pagliari C L, da Silva E A B. Multiscale image fusion using the undecimated wavelet transform with spectral factorization and nonorthogonal filter banks[J]. IEEE Transactions on Image Processing,2013, 22(3):1005-1017.

结束语

   由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

posted @ 2024-10-09 21:16  小蜜蜂视觉  阅读(41)  评论(0编辑  收藏  举报