昏暗场景增强-低照度增强-弱光增强(附代码)

news2024/10/23 2:43:46

在这里插入图片描述

引言

  • 随着现代科技的发展,图像采集设备已经渗透到生活的方方面面,然而在昏暗场景、低照度或弱光条件下,图像的质量往往受到严重影响,表现为亮度不足、对比度低下、色彩失真以及细节丢失等问题。
  • 这类图像对于人眼识别和计算机视觉算法的准确性和稳定性都构成了巨大挑战。因此,低照度图像增强技术的研究与应用日益受到关注,旨在提高图像的视觉质量和有效信息含量。

传统图像增强方法

  • 早期的低照度图像增强方法主要包括直方图均衡化、伽马校正、对比度拉伸等

  • 其中,直方图均衡化通过对像素灰度值分布进行重新分配,提高了图像的整体亮度和动态范围

  • 伽马校正则利用非线性变换调整图像的亮度曲线;而对比度拉伸则是通过改变图像的灰度级分布,增强图像的明暗对比。

Retinex理论及其应用

Retinex理论作为一种模拟人类视觉系统的图像增强方法,通过分离图像的反射分量和光照分量,有效地消除了光照变化对图像色彩和纹理的影响。其衍生出的单尺度Retinex、多尺度Retinex等算法在低照度图像增强方面取得了一定成效,但也存在噪声放大、边缘模糊等问题。

深度学习在低照度图像增强中的突破

近年来,深度学习在低照度图像增强领域的应用取得了显著成果。基于卷积神经网络(CNN)的端到端学习框架,可以从大量训练样本中学习低照度图像与正常光照条件下的映射关系。如Deep Retinex Network (DRN)、Low-Light Image Enhancement using Deep Learning (LLNet)、Zero-DCE等深度学习模型,不仅能够提升图像的整体亮度,还能较好地保留和恢复图像的细节信息以及色彩真实感。

未来趋势与挑战

虽然深度学习在低照度图像增强方面的表现已取得长足进步,但仍面临一些挑战,如过度增强导致的噪声放大、如何更好地结合先验知识以及实时性需求等。此外,考虑到低照度图像增强在无人驾驶、安防监控、医疗影像等诸多领域的广泛应用前景,未来的研究应继续探索更为高效、鲁棒且适用于嵌入式系统的轻量化模型。

图像增强流程

以下是一个简化的Retinex算法流程概述:

图像处理

对输入图像进行多尺度的高斯模糊处理。

光照估计

计算每个尺度下模糊图像与原图像的比率或者对数差分,以估算各个尺度下的光照强度。

反射分量恢复

通过去除光照分量的影响,得出图像的反射分量,该分量能更好地反映物体本身的固有色和纹理。

图像增强

对得到的反射分量进行适当的调整和量化,以增强图像的对比度和颜色饱和度,同时保持图像整体的平衡和自然。

输出增强图像

将处理后的反射分量图像作为最终增强后的输出

代码

ata_path = 'data'
img_list = os.listdir(data_path)
if len(img_list) == 0:
    print('Data directory is empty.')
    exit()

with open('config.json', 'r') as f:
    config = json.load(f)

for img_name in img_list:
    if img_name == '.gitkeep':
        continue
    
    img = cv2.imread(os.path.join(data_path, img_name))

    img_msrcr = retinex.MSRCR(
        img,
        config['sigma_list'],
        config['G'],
        config['b'],
        config['alpha'],
        config['beta'],
        config['low_clip'],
        config['high_clip']
    )
   
    img_amsrcr = retinex.automatedMSRCR(
        img,
        config['sigma_list']
    )

    img_msrcp = retinex.MSRCP(
        img,
        config['sigma_list'],
        config['low_clip'],
        config['high_clip']        
    )    

    shape = img.shape
    cv2.imshow('Image', img)
    cv2.imshow('retinex', img_msrcr)
    cv2.imshow('Automated retinex', img_amsrcr)
    cv2.imshow('MSRCP', img_msrcp)
    cv2.waitKey()

总结

总结而言,昏暗场景、低照度及弱光环境下的图像增强是一个持续发展的研究领域,它融合了传统图像处理技术与深度学习方法,致力于在各种光照条件下提供高质量的图像,以满足日益增长的实际应用需求。随着算法和技术的不断演进,我们期待未来的低照度图像增强技术能够带来更加卓越的图像质量提升效果。

在这里插入图片描述
最后,见主页左下方推广,👇👇

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

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

相关文章

大数据冷热分离方案

数据冷热分离方案 1、背景 ​ 随着业务的发展,在线表中的数据会逐渐增加。常规业务都有冷热数据现象明显的特性(需要访问的都是近期产生的热数据;时间久远的冷数据出于备份、备案溯源等诉求会进行在线保留)。在业务表数据 量可控…

自动化测试之web自动化(Selenium)

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

基础小白快速入门并行计算------>我们为什么要学习并行计算

什么是并行计算? 随着计算机的不断发展,我们处理的数据不断变多,需要更大得到处理能力、我们希望计算机有着更大更强壮的计算能力,由于cpu的运行能力有限,我们便想到了将多个cpu进行串联计算问题,这也就是我…

第五十二回 戴宗二取公孙胜 李逵独劈罗真人-飞桨AI框架安装和使用示例

吴用说只有公孙胜可以破法术,于是宋江请戴宗和李逵去蓟州。两人听说公孙胜的师傅罗真人在九宫县二仙山讲经,于是到了二仙山,并在山下找到了公孙胜的家。 两人请公孙胜去帮助打高唐州,公孙胜说听师傅的。罗真人说出家人不管闲事&a…

接口测试,后端接口还没开发完,如何测?解决看这一篇就够了......

前言 在测试的时候经常会碰到后端开发工程师的接口还没有开发完成,但是测试任务已经分配过来。没有接口怎么测试呢? 测试人员可以通过 mock server 自己去造一个接口来访问。mock server 可用于模拟真实的接口。收到请求时,它会根据配置返回…

【24春招/简历】如果技术和学历不行,如何包装自己在春招中占得先机?突出你的亮点!

面试讲什么 学历: 行情 要美化(吹牛) 面试很好 技术能力 让面试官知道你会哪些技术,尽量细节 “熟悉spring” > ioc流程,Bean的生命周期,循环依赖,常见注解 熟悉redis > 缓存穿透&…

2024年AI辅助研发:科技遇上创意,无限可能的绽放

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 随着人工智能技术的持续突破与深度融合,2024年AI辅助研发正以前所未有的速度和规模,引领着科技界和工业界…

【开源】JAVA+Vue.js实现创意工坊双创管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、系统展示四、核心代码4.1 查询项目4.2 移动端新增团队4.3 查询讲座4.4 讲座收藏4.5 小程序登录 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的创意工坊双创管理…

个人项目介绍4:三维园区篇

个人项目介绍: 地图铁路线路篇 地球卫星篇 火车站篇 三维园区篇 项目需求: 1.按比例全景显示三维园区 2.精确显示园区内设备设施 3.实时显示设备报警信息 4.显示园区内摄像监控设备,并可点击显示监控视频流 5.显示园区内的重大危险源和风险分布 …

Ansible 基础入门

2)Ansible 介绍 Ansible 基本概念 Ansible 是一种自动化运维工具,基于 Paramiko 开发的,并且基于模块化工作,Ansible 是一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,它是基于 Python 语言&#xf…

tomcat搭建个人博客 实现动静分离

jar包相关 .war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如jsp,html,配置文件等 .jar:EJB类文件的打包压缩类zip格式文件,,包括很多的class文件, 网景公司发明 .rar:资源适配器类打包文件,目前已不常…

6个维度分析实时渲染和Webgl技术异同

在日常交流中,对Webgl技术熟悉的合作伙伴,在初次了解实时渲染技术时,都会问二者之间的异同。目前很多要求B/S架构的项目,很多在用webgl技术路线,而且这个方案在行业里比较普,业主方对这个也比较熟悉&#x…

T01类加载机制

类加载机制 类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM public class Math {public static final int initData 666;public static User user new User();public int compute() {int a 1;int b …

泛型 --java学习笔记

什么是泛型 定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型 可以理解为扑克牌中的癞子&#xff0c;给它什么类型它就是什么类型 如…

1.BOM-获取元素(获取元素、修改属性)

web Api基本认知 作用&#xff1a;通过JS去操作html页面和浏览器(实现浏览器中的某些功能) 分类&#xff1a; DOM(网页)&#xff1a;Document Object Model(文档对象模型) BOM(浏览器)&#xff1a;Borwser Object Model(浏览器对象模型) DOM DOM树 将网页中标签的关系以树状…

Java定时调度:Timer类和TimerTask类

Java提供了多种方式来执行定时任务&#xff0c;其中使用Timer类和TimerTask类是一种简单而有效的方法。这篇教程将介绍如何使用Java的Timer类和TimerTask类来实现定时调度。 1. Timer类 Timer类用于安排指定的任务按指定的时间执行。它可以执行一次性任务&#xff0c;也可以按…

详解事件循环机制

浏览器最主要的进程 &#xff1a; 渲染主线程 如何理解JS的异步 任务没有优先级&#xff0c;但消息队列有优先级 阐述一下JS的事件循环

25考研资料PDF汇总

资料V馊public号ZL研知己 V馊public号ZL研知己 25考研资料PDF汇总

008-跨域

跨域 什么是跨域&#xff1f;非同源限制跨域解决方案CORSJSONP服务器进行第三方代理webscoketwindow.postMessage 什么是跨域&#xff1f; 同源策略&#xff1a;协议相同、域名相同、端口号相同 的两个页面被认为是同源。 由一个页面的 js 访问不同源的页面内容&#xff0c;被…

电磁兼容EMC:单、双面板的均匀传输线

目录 1 传输线 2 均匀传输线 3 特征阻抗 4 应用案例 为何要讲单、双面板的均匀传输线&#xff1f;因为均匀传输线能保证信号质量&#xff0c;减少EMC问题&#xff0c;而单双面板没有完整的地和电源平面&#xff0c;很难实现均匀传输线的布线&#xff0c;所以更需要知道如何在…