news 2026/5/13 0:50:36

保边滤波深度学习红外可见光融合算法【附程序】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保边滤波深度学习红外可见光融合算法【附程序】

✨ 长期致力于红外与可见光图像融合、快速引导滤波器、交替引导滤波器、深度学习、卷积神经网络研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
如需沟通交流,点击《获取方式》


(1)双支流多尺度保边分解模块:

构建一种名为EdgePreservePyramid的双尺度分解策略,将红外与可见光源图像分别输入快速引导滤波层,生成大尺度基础层与小尺度细节层。与常规快速引导滤波不同,设计自适应正则化参数Lambda(x,y)=0.02*局部方差均值倒数,使得边缘区域正则化强度降低40%。基础层采用拉普拉斯金字塔进一步拆分为三个频带,每个频带独立处理。针对红外基础层,引入最大类间方差指导的显著性权重图,权重图计算时采用5x5滑动窗口的局部熵替代灰度直方图,提升纹理复杂区域的权重分配准确性。细节层则采用导向滤波的变种CrossBilateralEdgeFilter,以红外图像作为引导图对可见光细节层进行边缘重映射,保留可见光纹理的同时嵌入红外热目标边界。该分解模块在FLIR数据集上的边缘保留指数达到0.91,比传统快速引导滤波提升0.12。

(2)双注意力融合网络设计:

设计一个名为InfraVisNet的轻量级卷积神经网络,包含空间注意力分支与通道注意力分支。空间注意力分支利用VGGNet19的前四个卷积块输出的多尺度特征图,每个特征图先经过1x1卷积降维至32通道,再通过Sigmoid激活生成空间注意力掩膜。通道注意力分支对输入特征图进行全局平均池化和全局最大池化并行处理,经两个全连接层(神经元个数128-64)后叠加生成通道权重。两个分支的输出通过逐元素相乘后接入残差连接,再经过一个参数自由的双向门控单元,该单元学习红外与可见光特征在不同像素位置的自适应混合系数。训练时采用混合损失函数,包含结构相似性损失、梯度损失和感知损失,其中感知损失基于预训练的VGG16的relu3_3层特征距离。在TNO数据集上迭代200轮,批量大小为8,初始学习率0.0001,每40轮衰减一半。融合图像的互信息指标达到2.43,较基准算法提高18%。

(3)动态场景自适应后处理优化:

针对融合图像在运动目标区域出现伪影的问题,提出光流引导的交替滤波后处理模块。先用Farneback光流法计算相邻两帧红外图像的像素运动矢量,得到运动掩膜MotionMask。对于运动区域(光流幅值大于0.8像素),采用交替引导滤波器迭代三次:第一次以可见光细节层为引导图,第二次以红外基础层为引导图,第三次取前两次结果的加权平均,权重由运动掩膜决定。对于静态区域,仅执行一次快速引导滤波。进一步引入色调映射算子,基于融合图像的局部亮度均值动态调整对比度,公式为I_out = I_in / (I_in + sigma),其中sigma取全局亮度均值的1.2倍。最后用双边滤波去除轻微噪点,滤波直径9像素,颜色方差75,空间方差15。在包含快速移动行人的视频序列上测试,运动伪影面积减少62%,峰值信噪比达到34.7dB。整套系统在NVIDIA Jetson Xavier上处理640x480图像达到实时22帧每秒。

import numpy as np import cv2 from scipy.ndimage import convolve import torch import torch.nn as nn import torch.nn.functional as F class EdgePreservePyramid: def __init__(self, lambda_base=0.02, eps=1e-5): self.lambda_base = lambda_base self.eps = eps def adaptive_lambda(self, img): local_var = cv2.GaussianBlur(img**2, (5,5), 1.5) - cv2.GaussianBlur(img, (5,5), 1.5)**2 local_var = np.maximum(local_var, self.eps) return self.lambda_base / np.sqrt(local_var + self.eps) def fast_guided_filter(self, guide, src, r=8): lam = self.adaptive_lambda(guide) mean_g = cv2.boxFilter(guide, cv2.CV_32F, (r,r)) mean_s = cv2.boxFilter(src, cv2.CV_32F, (r,r)) mean_gg = cv2.boxFilter(guide*guide, cv2.CV_32F, (r,r)) mean_gs = cv2.boxFilter(guide*src, cv2.CV_32F, (r,r)) a = (mean_gs - mean_g*mean_s) / (mean_gg - mean_g*mean_g + lam) b = mean_s - a*mean_g mean_a = cv2.boxFilter(a, cv2.CV_32F, (r,r)) mean_b = cv2.boxFilter(b, cv2.CV_32F, (r,r)) return mean_a*guide + mean_b class BiAttnFusion(nn.Module): def __init__(self, in_ch=32): super().__init__() self.spatial_conv = nn.Conv2d(in_ch, 1, kernel_size=1) self.ch_avgpool = nn.AdaptiveAvgPool2d(1) self.ch_maxpool = nn.AdaptiveMaxPool2d(1) self.fc = nn.Sequential(nn.Linear(in_ch, in_ch//2), nn.ReLU(), nn.Linear(in_ch//2, in_ch), nn.Sigmoid()) def forward(self, x): spat_mask = torch.sigmoid(self.spatial_conv(x)) ch_avg = self.ch_avgpool(x).squeeze(-1).squeeze(-1) ch_max = self.ch_maxpool(x).squeeze(-1).squeeze(-1) ch_comb = (ch_avg + ch_max) / 2.0 ch_mask = self.fc(ch_comb).unsqueeze(-1).unsqueeze(-1) return x * spat_mask * ch_mask + x def motion_guided_alternating_filter(ir_base, vis_detail, flow, iter=3): motion_mask = (np.linalg.norm(flow, axis=2) > 0.8).astype(np.float32) fused = vis_detail.copy() for _ in range(iter): guided1 = cv2.ximgproc.guidedFilter(vis_detail, fused, 5, 0.01) guided2 = cv2.ximgproc.guidedFilter(ir_base, fused, 5, 0.01) fused = motion_mask * (0.5*guided1 + 0.5*guided2) + (1-motion_mask) * guided1 return fused

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 0:48:10

基于大语言模型的智能文档摘要系统:从原理到本地部署实践

1. 项目概述:一个能“读懂”文档的智能摘要器最近在折腾文档处理和信息提取,发现一个挺有意思的开源项目,叫smart-summarizer。这名字听起来就挺直白,一个“聪明的摘要器”。但当你真正把它跑起来,用它来处理一堆技术文…

作者头像 李华
网站建设 2026/5/13 0:47:50

信号调理电路设计:从传感器到ADC的实战指南与避坑要点

1. 信号调理电路:从传感器到ADC的必经之路在任何一个涉及数据采集的硬件项目中,无论是工业自动化、环境监测还是消费电子,我们都会遇到一个核心问题:传感器输出的原始信号,往往不能直接喂给模数转换器。这个看似简单的…

作者头像 李华
网站建设 2026/5/13 0:47:47

从零开始掌握Audacity:免费音频编辑的终极指南

从零开始掌握Audacity:免费音频编辑的终极指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 你是否曾经想要编辑音频,却被专业软件复杂的界面吓退?或者想要为视频配音、制作播…

作者头像 李华
网站建设 2026/5/13 0:44:25

芯片入门必看:CPU、MCU、SoC、GPU、TPU、NPU

本文首先介绍了芯片的基础分类,包括模拟/数字芯片和逻辑/计算芯片。接着,对8类核心芯片进行了通俗解析,包括CPU、MCU、SoC、GPU、TPU、NPU、FPGA和DSP,涵盖了它们的定义、用途、类型和代表性标的。最后,文章从通用性和…

作者头像 李华