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

在这里插入图片描述

引言

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

传统图像增强方法

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

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

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

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()

总结

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA IBUFG

IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。 所以,IBUFG输入的不能直接接另外信号。 GTH transceiver primitives are called GTHE3_COMMON and GTHE3_CHANNEL in UltraScale FPGAs, an…

部署LVS+Keepalived高可用群集(抢占模式,非抢占模式,延迟模式)

目录 一、LVSKeepalived高可用群集 1、实验环境 2、 主和备keepalived的配置 2.1 yum安装ipvsadm和keepalived工具 2.2 添加ip_vs模块并开启ipvsadm 2.3 修改keepalived的配置文件 2.4 调整proc响应参数,关闭linux内核的重定向参数响应 2.5 将主服务器的kee…

SpringBoot整合Redis实现分布式锁

SpringBoot整合Redis实现分布式锁 分布式系统为什么要使用分布式锁? 首先,分布式系统是由多个独立节点组成的,这些节点可能运行在不同的物理或虚拟机器上,它们通过网络进行通信和协作。在这样的环境中,多个节点可能同…

群智能优化算法:巨型犰狳优化算法(GAO)求解23个基准函数(提供MATLAB代码)

一、巨型犰狳优化算法 巨型犰狳优化算法(Giant Armadillo Optimization,GAO)由Omar Alsayyed等人于2023年提出,该算法模仿了巨型犰狳在野外的自然行为。GAO设计的基本灵感来自巨型犰狳向猎物位置移动和挖掘白蚁丘的狩猎策略。GAO…

LLM 构建Data Muti-Agents 赋能数据分析平台的实践之①:数据采集

一、 概述 在推进产业数字化的过程中,数据作为最重要的资源是优化产业管控过程和提升产业数字化水平的基础一环,如何实现数据采集工作的便利化、高效化、智能化是降低数据分析体系运转成本以及推动数据价值挖掘体系的基础手段。随着数字化在产业端的推进…

电脑小问题:Windows更新后黑屏

Windows 更新后黑屏解决方法 在 Windows 更新后,伴随了一个小问题,电脑启动后出现了桌面黑屏。原因可能是火绒把 explorer.exe 当病毒处理了。 下面讲解 Windows 更新后黑屏的解决方法,步骤如下: 1. 按 ctrl alt delete 组合键…

JAVA实战开源项目:生活废品回收系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案,旨在鼓…

【操作系统概念】 第9章:虚拟内存管理

文章目录 0.前言9.1 背景9.2 按需调页9.2.1 基本概念9.2.2 按需调页的性能 9.3 写时复制9.4 页面置换9.4.1 基本页置换9.4.2 FIFO页置换9.4.3 最优(Optimal)置换9.4.4 LRU(Least Recently Used)页置换9.4.5 近似LRU页置换9.4.6 页缓冲算法 9.5 帧分配9.5…

遥遥领先!基于transformer变体的时间序列预测新SOTA!

目前,以CNN、RNN和 Transformer 模型为代表的深度学习算法已经超越了传统机器学习算法,成为了时间序列预测领域一个新的研究趋向。这其中,基于Transformer架构的模型在时间序列预测中取得了丰硕的成果。 Transformer模型因其强大的序列建模能…

JVM-垃圾收集器G1

G1垃圾回收器 概述: 是一款面向服务器的垃圾收集器,主要针对配备多个处理器及大容量内存的机器. 以极高效率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.G1保留了年轻代和老年代的概念,但不再是物理隔阂了,它们都是(可以不连…

Apache服务的搭建与配置

一、apache安装 systemctl stop firewalldsystemctl disable firewalldsetenforce 0yum -y install httpdsystemctl start httpdnetstat -ntlp | grep 80 二、认识主配置文件 # vim /etc/httpd/conf/httpd.conf ServerRoot "/etc/httpd" #定义工作目…

【linux驱动开发】IO模型之同步IO、异步IO、IO多路复用

文章目录 IO的概述IO模型的实现阻塞IO非阻塞IOIO多路复用信号驱动异步IO 编译与测试说明 IO的概述 io,英文名称为inoput与output,表示输入与输出。 在冯诺依曼结构计算机中,计算机由 运算器、控制器、存储器、输入、输出五部分组成&#xf…

华为云开年采购季Web及移动App上云体验,助力软件行业创新发展

随着云化、智能化浪潮的进一步深入,越来越多的应用软件开发商选择将核心产品从本地IDC机房搬迁到公有云上。但同时,软件开发商们也非常在意公有云厂商的可靠性与安全性,希望能够选择一家更加稳定可靠的云服务商,确保自身业务的连续…

MS2548,自动方向控制、半双工 RS-485 收发器,可替代MAX13487

产品简述 MS2548 是一个 5V 供电、半双工 RS-485 收发器。 芯片具有自动换向控制功能,可用于隔离 485 端口, 驱动器输入与使能信号一起配合控制芯片的状态, 驱动差分总线。 芯片内部集成热插拔保护和过温保护功能。接 收器输入阻抗为 1…

华为OD机试真题-测试用例执行计划

测试用例执行计划 题目描述: 某个产品当前迭代周期内有N个特性({F1,F2,...,FN})需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用例({T1,T2,...,TM}),每个用例对应了一个覆盖特…

网络工程师笔记9

动态路由 RIP路由协议 配置简单 易于维护 适用于小型网络 周期性是30s发一次

分享关于如何解决系统设计问题的逐步框架

公司广泛采用系统设计面试,因为在这些面试中测试的沟通和解决问题的技能与软件工程师日常工作所需的技能相似。面试官的评估基于她如何分析一个模糊的问题以及如何逐步解决问题。测试的能力还包括她如何解释这个想法,与他人讨论,以及评估和优…

主网NFT的发布合约

1.什么是nft? NFT:Non-fungible-token 非同质化货币 2.新建suimove项目 使用sui move new 项目名命令新建sui move项目 sui move new nft_qyx项目结构如下: 3.写nft合约 module qyx123::nft{use sui::object::{Self, UID};use sui::transfer;use sui::tx_context::{Sel…

C++11_右值引用与移动语义

目录 1、左值的定义 1.1 左值引用 2、右值的定义 2.1 右值引用 3、右值与左值的使用区别 4、右值引用的意义 4.1 左值引用的短板 5、移动语义 5.1 移动构造 5.2 移动赋值 6、万能引用 6.1 右值的别名-左值化 6.2 完美转发 前言: 在C11之前就有了引…

143.和弦是什么?和声是什么?三和弦

内容参考于: 三分钟音乐社 上一个内容:142.音程的构唱练习 和弦的定义: 一个音可以把它称为单音 两个音可以把它称为音程 更多的音,通俗的定义上,三个音或者三个以上的音构成的集体就可以叫做和弦,这些音…