当前位置: 首页 > news >正文

[C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强

【算法介绍】

提升夜间雾霾图像可见度的技术研究:引导APSF与梯度自适应卷积的应用

随着城市化的快速发展,雾霾现象日益严重,尤其是在夜间,雾霾对图像的可见度造成了极大的影响。因此,提升夜间雾霾图像的可见度成为了图像处理领域的研究热点。在ACM International Conference on Multimedia 2023(ACMMM2023)上,一篇题为“Enhancing Visibility in Nighttime Haze Images Using Guided APSF and Gradient Adaptive Convolution”的论文,为我们提供了一种全新的解决方案。

该论文提出了一种结合引导APSF(Adaptive Point Spread Function)和梯度自适应卷积的方法来增强夜间雾霾图像的可见度。引导APSF是一种能够模拟雾霾天气下光线散射现象的技术,它可以有效地估计和补偿图像中的雾霾效应。而梯度自适应卷积则能够根据图像的局部特征自适应地调整卷积核,从而更好地保留图像的细节和边缘信息。

通过结合这两种技术,该论文的方法能够在去除雾霾的同时,保留图像的细节和色彩信息,从而显著提高夜间雾霾图像的可见度。这一方法不仅在理论上具有创新性,而且在实验中也取得了显著的效果。实验结果表明,与传统的图像去雾方法相比,该方法在提升图像可见度、保留图像细节和色彩信息等方面都具有明显的优势。

总之,该论文的研究为我们提供了一种新的思路和方法来增强夜间雾霾图像的可见度。这一方法不仅具有重要的理论价值,而且在实际应用中也有着广阔的前景。随着技术的不断进步和应用场景的不断拓展,相信这一方法将在未来的图像处理领域中发挥更加重要的作用。

【框架地址】 

https://github.com/jinyeying/nighttime_dehaze

【效果展示】

【实现部分代码】 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;namespace FIRC
{public partial class Form1 : Form{Mat src = null;NighttimeNet detector = new NighttimeNet();public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";openFileDialog.RestoreDirectory = true;openFileDialog.Multiselect = false;if (openFileDialog.ShowDialog() == DialogResult.OK){src = Cv2.ImRead(openFileDialog.FileName);pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);}}private void button2_Click(object sender, EventArgs e){if(pictureBox1.Image==null){return;}var result = detector.Inference(src);pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(result);}private void Form1_Load(object sender, EventArgs e){detector.LoadWeights(Application.StartupPath+ "\\weights\\nighttime_dehaze_realnight_1x3x512x512.onnx", 512,512);}private void button3_Click(object sender, EventArgs e){VideoCapture capture = new VideoCapture(0);if (!capture.IsOpened()){Console.WriteLine("video not open!");return;}Mat frame = new Mat();var sw = new Stopwatch();int fps = 0;while (true){capture.Read(frame);if (frame.Empty()){Console.WriteLine("data is empty!");break;}sw.Start();var result = detector.Inference(frame);sw.Stop();fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);sw.Reset();Cv2.PutText(result, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);//显示结果Cv2.ImShow("Result", result);int key = Cv2.WaitKey(10);if (key == 27)break;}capture.Release();}}
}

【视频演示】

https://www.bilibili.com/video/BV1B6421M78e/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

【源码下载】

https://download.csdn.net/download/FL1623863129/88860837

【测试环境】

vs2019,netframework4.7.2,opencvsharp4.8.0,onnxruntime1.16

相关文章:

  • PotPlayer+Alist挂载并播放网盘视频
  • mplfinance 使用make_addplot做复杂股票走势图
  • dell r740服务器黄灯闪烁维修现场解决
  • 167基于matlab的根据《液体动静压轴承》编写的有回油槽径向静压轴承的程序
  • vant-search确定按钮变成了“换行”文字
  • 05.STLvector、list、stack、queue
  • (done) 两个矩阵 “相似” 是什么意思?
  • 多维时序 | Matlab实现基于VMD-DBO-LSTM、VMD-LSTM、LSTM的多变量时间序列预测
  • Rust ?运算符 Rust读写txt文件
  • ChatGPT高效提问—prompt实践(白领助手)
  • Unity3D xLua开发环境搭建详解
  • 玩转网络抓包利器:Wireshark常用协议分析讲解
  • 物联网和人工智能的融合
  • 【鸿蒙系统学习笔记】TypeScript开发语言
  • go-zero/grpc的rpc服务间传递额外数据
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Android框架之Volley
  • C++类中的特殊成员函数
  • CentOS6 编译安装 redis-3.2.3
  • golang中接口赋值与方法集
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS数组方法汇总
  • node学习系列之简单文件上传
  • Redis中的lru算法实现
  • Theano - 导数
  • XForms - 更强大的Form
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 入门到放弃node系列之Hello Word篇
  • 试着探索高并发下的系统架构面貌
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 与 ConTeXt MkIV 官方文档的接驳
  • 怎么把视频里的音乐提取出来
  • hi-nginx-1.3.4编译安装
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (七)Knockout 创建自定义绑定
  • (算法)Travel Information Center
  • (转)大型网站架构演变和知识体系
  • ***测试-HTTP方法
  • ***检测工具之RKHunter AIDE
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core 项目指定SDK版本
  • .NET程序员迈向卓越的必由之路
  • .NET的微型Web框架 Nancy
  • .net反编译工具
  • .net专家(张羿专栏)
  • @RestControllerAdvice异常统一处理类失效原因
  • [100天算法】-不同路径 III(day 73)
  • [Angular 基础] - 自定义指令,深入学习 directive