Python图像处理——基于Retinex算法的低光照图像增强系统

news2025/7/17 4:12:01

1.项目内容

(1)算法介绍

①MSRCR (Multi-Scale Retinex with Color Restoration)

MSRCR 是多尺度 Retinex 算法(MSR)的扩展版,引入了色彩恢复机制以进一步提升图像增强质量。MSR 能有效地压缩图像动态范围,但在增强图像细节时常引入色彩失真,而 MSRCR 则通过引入颜色恢复因子,调节图像色彩比例,从而克服这一缺陷。

核心思路:利用多个尺度的高斯核对原图做 SSR 操作(即多尺度 SSR 加权平均)。增加一个颜色恢复模块,提升图像色彩一致性,抑制颜色失真。对增强结果进行非线性调节及像素值范围归一化处理。

步骤流程:首先使用高斯函数对原始图像进行低通滤波,抑制图像中的高频信息;随后将原始图像与滤波后的图像转换到对数域后做差,得到去除低频成分的对数域反射图像。接着,采用多尺度策略重复上述滤波与差分操作,在像素层面将各尺度反射图像进行求和,得到多尺度Retinex(MSR)结果。在此基础上,为增强图像颜色,先在通道层面对原始图像进行求和,作为归一化因子,用以生成归一化的权重矩阵,并转换至对数域以获得图像颜色增益,再将MSR结果与该颜色增益矩阵进行连乘组合,实现颜色恢复。最后,通过乘以增益系数、加上偏移量以及自动色阶调整,完成图像的最终恢复和增强处理。

②AutoMSRCR(Automatic Multi-Scale Retinex with Color Restoration)

AutoMSRCR 是对 MSRCR 的进一步改进,主要目标是实现参数的自适应调节,即根据不同图像自动调整高斯尺度参数、权重、颜色恢复系数等,避免手动调参的繁琐,提高算法的实用性与通用性。

核心思路:采用图像特征自动估计方法选择 MSRCR 所需的各项参数。使用色彩增益调节和图像直方图均衡提升亮度分布均衡性。保持 MSRCR 的基本结构框架,增强其适应不同图像内容的能力。

步骤流程:首先对图像应用SMR(Single-scale Retinex)算法,生成一个三维像素值数组作为初始处理结果。接着,对每个通道的像素值进行去重、排序,并统计不同像素值的数量,从中筛选出最小值、最大值以及像素值等于0的数量。然后,为了增强图像对比度,对每个通道的像素值范围进行缩放处理:通过统计小于0和大于0像素值的分布情况,确定每个通道的下限和上限——其中下限为像素值小于0且出现次数不超过0值像素数十分之一的最大值,上限为像素值大于0且出现次数不超过0值像素数十分之一的最小值。在此基础上,将所有超出上下限范围的像素值分别替换为上下限值,并对每个通道的像素值进行线性拉伸至0~255范围,最终取整后用于图像的可视化显示。

③MSRCP (Multi-Scale Retinex with Chromaticity Preservation)

MSRCP 是为了解决 MSRCR 在某些图像中出现“偏色”问题而提出的改进算法,适用于原始图像色调较自然时。其核心思想是:仅对图像亮度(Intensity)分量进行 MSR 操作,而不直接干预颜色信息(即 Hue 和 Saturation)。

核心思路:首先将彩色图像转换为亮度图,使用 MSR 对亮度分量进行增强。然后按照原图 RGB 各通道的比例,对增强后的亮度图进行映射,实现增强同时保留原有色彩分布。

步骤流程:首先对图像的每个像素点进行RGB分量求均值处理,作为亮度信息基础,然后对原始图像使用高斯函数进行低通滤波,以提取图像的低频成分。接着,将原始图像与滤波结果一同转换到对数域后做差,得到去除低频后的对数域反射图像。随后,在像素层面对该反射图像进行多尺度求和,完成多尺度Retinex(MSR)处理,并结合线性调节与自动色阶平衡提升图像视觉效果。最后,根据原始图像RGB通道的比例,将增强后的亮度信息映射回各个颜色通道,实现图像的颜色还原与增强,输出最终结果图像。

④R2RNet(Real-low to Real-normal Network)

一种全新的基于 Retinex 理论的真实低光到真实正常光图像增强网络(R2RNet),该网络由三个子网组成:Decom-Net、Denoise-Net 和 Relight-Net,分别用于图像的分解、去噪、对比度增强与细节保留。R2RNet 不仅充分利用图像的空间信息以提升对比度,还融合频域信息以更好地保留细节,从而在多种退化类型的图像上都表现出更强的鲁棒性。

图片

(2)系统演示

①数据集

使用LOL (LOw-Light dataset)进行训练测试,LOL 数据集由 500 个低光和法光图像对组成,分为 485 个训练对和 15 个测试对。低光图像包含照片拍摄过程中产生的噪点。大多数图像是室内场景。所有图像的分辨率均为 400×600。

图片

②本文设计的界面

基于gradio设计的交互界面实现上述MSRCR、AutoMSRCR、MSRCP和R2RNet四种模型的测试对比,并输出MSE、PSNR和SSIM。

演示视频:Python图像处理——基于Retinex算法的低光照图像增强系统

最后:

小编会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

 

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

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

相关文章

如何在JDK17项目中改成1.8

1.调整 Spring Boot 版本 由于 Spring Boot 3.x 最低要求 JDK 17&#xff0c;所以如果要使用 JDK 8&#xff0c;需要把 spring-boot-starter-parent 的版本降低到 2.7.x 系列&#xff0c;这个系列是支持 JDK 8 的。示例如下&#xff1a; <parent><groupId>org.sp…

【不同名字的yolo的yaml文件名是什么意思】

以下是这些 YOLO 系列配置文件的详细解析&#xff0c;按版本和功能分类说明&#xff1a; 一、YOLOv3 系列 文件名核心特性适用场景yolov3.yaml原始 YOLOv3 结构&#xff0c;3 尺度预测&#xff08;13x13,26x26,52x52&#xff09;通用目标检测yolov3-spp.yaml增加 SPP&#xff…

Zephyr kernel Build System (CMake)介绍

目录 概述 1. 结构介绍 2 构建和配置阶段 2.1 配置阶段 2.2 Cmake编译 3 Zephy项目目录结构 3.1 文件架构 3.2 文件content 概述 本文主要介绍Zephyr kernel Build System CMake的功能&#xff0c;以及使用该工具构建项目&#xff0c;并详细介绍了每个目录以及目录下文…

相对论大师-记录型正负性质BFS/图论-链表/数据结构

看到这一题我的第一个思路就是双向bfs 起点是a&#xff0c;终点还是a&#xff0c;但是flag是相反的&#xff08;“越”的方向&#xff09; tip1.可以用字典vis来存储flag 刚开始初始化时vissta,visend一个对应0、1 要求两个队列相…

Jenkins流水线管理工具

文章目录 前言&#xff1a; DevOps时代的自动化核心 —Jenkins一、Jenkins是什么&#xff1f;二、Linux安装Jenkinswar包方式安装依赖环境下载 Jenkins WAR 包启动 Jenkins 服务启动日志验证配置插件镜像源 docker镜像方式安装依赖环境拉取 Jenkins 镜像运行 Jenkins 容器获取初…

嵌入式开发:基础知识介绍

一、嵌入式系统 1、介绍 以提高对象体系智能性、控制力和人机交互能力为目的&#xff0c;通过相互作用和内在指标评价的&#xff0c;嵌入到对象体系中的专用计算机系统。 2、分类 按其形态的差异&#xff0c;一般可将嵌入式系统分为&#xff1a;芯片级&#xff08;MCU、SoC&am…

el-table中el-input的autofocus无法自动聚焦的解决方案

需求 有一个表格展示了一些进度信息&#xff0c;进度信息可以修改&#xff0c;需要点击进度信息旁边的编辑按钮时&#xff0c;把进度变为输入框且自动聚焦&#xff0c;当鼠标失去焦点时自动请求更新接口。 注&#xff1a;本例以vue2 element UI为例 分析 这个需求看着挺简单…

一文了解智慧教育顶刊TLT的研究热点

本文聚焦于IEEE Transactions on Learning Technologies&#xff08;TLT&#xff09;期刊&#xff0c;通过图文结合的方式&#xff0c;梳理了2025年第18卷的研究热点&#xff0c;帮助读者把握教育技术与人工智能交叉领域的研究进展&#xff0c;深入了解智能学习系统、自适应学习…

统计术语学习

基期、现期 作为对比参照的时期称为基期&#xff0c;而相对于基期的称为现期。 描述具体数值时我们称之为基期量和现期量。 【例 1】2017 年比 2016 年第三产业 GDP 增长 6.8%&#xff0c; &#xff08;2016&#xff09;为基期&#xff0c;&#xff08;2017&#xff09; 为现…

飞机会员日

各航空公司会员日日期 主要航空公司会员日整理如下&#xff08;数据截至2025年3月最新信息&#xff09;&#xff1a;‌ 1 2 ‌中国国际航空&#xff08;国航&#xff09;‌ 每月"同月同日"&#xff08;如1月1日、2月2日类推&#xff09; ‌中国南方航空&#xff08…

论分布式事务及其解决方案 架构师论文范文(考试笔记)

请围绕“论分布式事务及其解决方案”论题&#xff0c;依次从以下三个方面进行论述。 1、概要叙述你参与分析设计的软件项目以及你在其中所承担的主要工作。 2、请介绍4种分布式事务的解决方案及简单说明。 3、具体阐述你参与的软件项目是如何做到分布式事务的&#xff0c;过程中…

ROS 快速入门教程04

12.激光雷达工作原理 激光雷达的作用是探照周围障碍物的距离&#xff0c;按照测量维度可以分为单线雷达和多线雷达。 按照测量原理可以分为三角测距雷达和TOF雷达。按照工作方式可以分为固态雷达和机械旋转雷达。 本次讲解以TOF雷达为例&#xff0c;雷达发射器发射激光遇到障碍…

2025 年导游证报考条件新政策解读与应对策略

2025 年导游证报考政策有了不少新变化&#xff0c;这些变化会对报考者产生哪些影响&#xff1f;我们又该如何应对&#xff1f;下面就为大家详细解读新政策&#xff0c;并提供实用的应对策略。 最引人注目的变化当属中职旅游类专业学生的报考政策。以往&#xff0c;中专学历报考…

vscode切换Python环境

跑深度学习项目通常需要切换python环境&#xff0c;下面介绍如何在vscode切换python环境&#xff1a; 1.点击vscode界面左上角 2.在弹出框选择对应kernel

Spark-Streaming(三)

一. kafka和flume的整合 任务需求一:利用flume监控某目录中新生成的文件&#xff0c;将监控到的变更数据发送给kafka&#xff0c;kafka将收到的数据打印到控制台 1. 在flume/conf/目录下添加flume-kafka.conf文件 配置文件如下 2. 启动flume和kafka消费者 3. 传入数据 查看fl…

SQLite 是什么?

&#x1f4cc; 一、SQLite 是什么&#xff1f; SQLite 是一个轻量级、嵌入式数据库&#xff0c;意思是它直接集成在你的 App 内部&#xff0c;不需要单独安装数据库服务端。 ✅ 特点&#xff1a; 特点说明本地使用所有数据保存在手机内部存储文件形式数据以 .db 文件形式存储…

海之淀攻略

家长要做的功课 家长可根据孩子情况&#xff0c;需要做好以下功课&#xff1a; 未读小学的家长&#xff1a;了解小学小升初派位初中校额到校在读小学的家长&#xff1a;了解小升初派位初中校额到校在读初中的家长&#xff1a;了解初中校额到校 越是高年级的家长&#xff0c;…

PCIe具体解释分析

参考文章 PCIe总线详解_STATEABC-GitCode 开源社区 https://zhuanlan.zhihu.com/p/652808759 PCI总线学习(一)&#xff1a;PCI总线结构-CSDN博客 PCI——第1章——PCI总线的基本知识-CSDN博客 计算机中register、cache、memory的区别 - Lines Blog 什么是内存管理单元&#xff…

Golang | 迭代器模式

迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供了一种顺序访问聚合对象&#xff08;如列表、树等集合结构&#xff09;中元素的方法&#xff0c;而无需暴露其底层实现细节。通过将遍历逻辑与集合本身解耦&#xff0c;迭代器模式使…

使用命令行加密混淆C#程序

C#作为托管语言编译生成的IL中间代码极易被反编译工具还原源码。据统计&#xff0c;超过83%的商业软件曾遭遇过代码逆向风险&#xff0c;导致核心算法泄露、授权被跳过. 因此对于C#语言开发的程序来说, 在发布前进行混淆和加密非常有必要. 本文主要介绍如何使用恒盾C#混淆加密…