Low-Light Image Enhancement via Self-Reinforced Retinex Projection Model 论文阅读笔记

在这里插入图片描述

  • 这是马龙博士2022年在TMM期刊发表的基于改进的retinex方法去做暗图增强(非深度学习)的一篇论文

  • 文章用一张图展示了其动机,第一行是估计的亮度层,第二列是通常的retinex方法会对估计的亮度层进行RTV约束优化,从而产生平滑的亮度层,然后原图除以亮度层产生照度层作为增强结果,但通常这样会导致过曝,所以会把亮度层调大一点,比如第三列用了Gamma校正把亮度层调大,这样产生的结果不会过曝。但是文章指出无论是第三列的Gamma校正还是第四列的LIME,其调整亮度层的方法都会改变亮度层的形状导致产生伪影或者过模糊,从第二行可以看到,第三四列的蓝线相比绿线形状是发生了改变的。
    在这里插入图片描述

  • 但我个人觉得,retinex模型加RTV损失生成的亮度层估计又不是圣经,改变了又如何,并不是说retinex加RTV损失生成的亮度层就是最好的,如果发生了改变就一定变差。不过从可视化的效果来看,确实第五列的效果是要比第三四列的效果好的,不过也不一定就是第五列不改变亮度层形状导致的。

  • 新的亮度层估计方法如下:
    在这里插入图片描述
    在这里插入图片描述

  • 这里D其实就是一个类似 2 × 2 2\times2 2×2的max pooling操作,将每个像素值置为邻域的最大值(不包含-1,只向右看,有点类似求梯度的感觉,这一操作增强了边缘信息,如下图所示),然后加上c使得I的估计增大一个常量(相比gamma校正,这是一个平移而非对数,不过我觉得这个c等优化完再加上也是等价的,也就是说把c加在公式1的最右边)。而 φ \varphi φ是简化的RTV loss,原先的RTV Loss的权重是要对增强结果算的,现在对输入的暗图算就行。公式1的寻优用的是这篇论文(“Fast global image smoothing based on weighted least squares”)提出的1D Fast Global Smoother方法

  • 在这里插入图片描述
    上面只给出了如何根据 R t R^t Rt估计 I t + 1 I^{t+1} It+1,要实现迭代还需要根据 I t + 1 I^{t+1} It+1估计 R t + 1 R^{t+1} Rt+1,如下:
    在这里插入图片描述
    其实就是直接用 L L L除以 I I I,然后送进一个优化函数,如果不做去噪其实就仅仅是剪切到0-1之间
    在这里插入图片描述

  • 实际上,为了抑制噪声,胡使用给一个去噪网络 CBDNet来对照度层去噪,而且用预训练好的模型即可,无需重新训练。由于前面公式中 c c c增量的引入,估计出来的 R R R直接可以当作增强结果,无需用gamma校正来调节 I I I再计算 R R R

  • 实验结果可以看到,指标和可视化效果都挺不错的,对过曝区域也能避免过增强:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 消融实验可以看到迭代次数是5就已经收敛了,用CBDNet进行denoising的效果也很好:
    在这里插入图片描述

在这里插入图片描述

  • 运行速度也很快:
    在这里插入图片描述
  • 甚至还能去雾:
    在这里插入图片描述
    在这里插入图片描述
  • limitation是blocking artifacts
    在这里插入图片描述
  • 这是篇各方面都很牛逼的论文,用非深度学习的方法把深度学习方法给比了下去,并且速度也不输。虽然还是依赖深度学习的CBDNet来去噪。但是文章提出用全局的增量而非gamma校正来进行亮度层的增加可以获得比原有基于gamma校正更好的结果让我有点惊讶,而由于全局增量导致的对比度增强不足问题,也通过一个照度层的max操作把边缘给突出出来。从实验结果看在很暗的图上的增强结果并没有想象中的出现对比度不足问题,后续可以再进一步实验看看,怀疑对比度这么容易就处理好了吗。

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

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

相关文章

ceph----应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1.1 服务端操作1.2 客户端操作 二、创建 Ceph 块存储系统 RBD 接口三、OSD 故障模拟与恢复四、创建 Ceph 对象存储系统 RGW 接口 一、创建 CephFS 文件系统 MDS 接口 1.1 服务端操作 1)在管理节点创建 mds 服务 cd /et…

Unity游戏源码分享-Third Person Controller - Shooter Template v1.3.1

Unity游戏源码分享-Third Person Controller - Shooter Template v1.3.1 功能非常齐全 AI格斗 2.5D 完整工程地址:https://download.csdn.net/download/Highning0007/88057824

node自主学习——fs文件操作模块

目录 读文件 读文件是否成功的判定 写文件 写文件是否成功的判定 备注:VsCode、node v18.17.0 读文件 fs.readFile(文件路径, 编码格式(可选), 回调函数)// 回调函数可以打印失败和成功的结果 // 若成功,err的值为null // 若…

Spring【AOP】

AOP-面向切面编程 AOP&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 SpringAop中&#xff0c;通过Advice定义横切逻辑&#xff0c;并支持5种类型的Advice&#xff1a; 导入依赖 <dependency><groupId>…

前端JavaScript入门-day06

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 作用域 局部作用域 全局作用域 作用域链 JS垃圾回收机制 1. 什么是垃圾回收机制 2.内存的生命周…

缕析条分Scroll属性 | 京东云技术团队

最近有项目需要使用js原生开发滑动组件&#xff0c;频繁要用到dom元素的各种属性&#xff0c;其中以各种类型的height和top属性居多&#xff0c;名字相近&#xff0c;含义也很容易搞混。因此特地总结归纳了一下常用的知识点&#xff0c;在文末我们来挑战实现一个简易的移动端Sc…

行为型模式 - 责任链模式

概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导能批准的天数不同&a…

无参数读文件和RCE总结

什么是无参数&#xff1f; 顾名思义&#xff0c;就是只使用函数&#xff0c;且函数不能带有参数&#xff0c;这里有种种限制&#xff1a;比如我们选择的函数必须能接受其括号内函数的返回值&#xff1b;使用的函数规定必须参数为空或者为一个参数等 接下来&#xff0c;从代码…

Redis : zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

In file included from adlist.c:34:0: zmalloc.h:50:31: 致命错误&#xff1a;jemalloc/jemalloc.h&#xff1a;没有那个文件或目录 #include <jemalloc/jemalloc.h> 解决 : 如上图使用命令 make MALLOClibc

linux之Ubuntu系列(三)远程管理指令☞Scp

cp scp cp 复制文件 是限制在本地操作 scp&#xff1a; 远程拷贝文件 cp [options] 源文件or 目录 目标文件or 目录 如果复制目录&#xff0c;要加 -r 选项 &#xff0c;同时如果目标目录不存在&#xff0c;会会创建 scp scp就是 secure copy&#xff0c;是一个在linux下用来…

122、仿真-基于51单片机的电量监测电压电流和温度报警系统设计(Proteus仿真+程序+流程图+配套资料等)

方案选择 单片机的选择 方案一&#xff1a;STM32系列单片机控制&#xff0c;该型号单片机为LQFP44封装&#xff0c;内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ&#xff0c;在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节…

vue3后台管理系统实现动态侧边导航菜单管理(ElementPlus组件)

记住 一级(el-sub-menu)的都是只是展示的 点击跳转的都是一级下的子级(el-menu-item) 完整展示 1:在登陆功能进行登陆 获取menu列表 注册路由表的时候 把文件进行创建好 因为注册的方法需要获取这个路径 整个router下的main product等等都要创建 //1:发送你的用户名和密码获…

Redis 从入门到精通【进阶篇】之Lua脚本详解

文章目录 0. 前言1. Redis Lua脚本简介1.1 Lua脚本介绍Lua语言概述&#xff1a;Lua脚本的特点&#xff1a; 1.2 Redis中为何选择LuaLua与Redis的结合优势Lua脚本在Redis中的应用场景 2. Redis Lua脚本的执行流程1. 加载脚本&#xff1a;1.1 脚本缓存机制&#xff1a;1.2 脚本加…

从MVC跨越到DDD微服务架构是如何演进的

微服务架构演进 领域模型中对象的层次从内到外依次是&#xff1a;值对象、实体、聚合和限界上下文。 实体或值对象的简单变更&#xff0c;一般不会让领域模型和微服务发生大变。但聚合的重组或拆分却可以。因为聚合内业务功能内聚&#xff0c;能独立完成特定业务。那聚合的重组…

TortoiseGit 入门指南12:创建标签

前面的文章不止一次的提到过 标签 &#xff08;Tag&#xff09;&#xff0c;我们在《TortoiseGit 入门指南08&#xff1a;浏览引用以及在引用间切换》一文中知道&#xff0c;标签 是一种 引用&#xff1b;还知道每个提交都对应着一个 SHA-1 值&#xff0c;而引用就是 SHA-1 的一…

Redis常见须知

介绍一下redis数据库 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符…

15 - 信号处理设计模式

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. Linux应用程序安全性讨论1.1 问题1.2 不同场景1.2.1 场景一&#xff1a;不需要处理信号1.2.2 场景二&#xff1a;需要处理信号 2. 场景…

python_day11_pymysql

SQL基础语法回忆 show DATABASES;use world;-- SELECT DATABASES();show TABLES;CREATE TABLE Student(id int,name VARCHAR(10),age int,gender VARCHAR(5&#xff09; );删除表 # 删除表 DROP TABLE Student;插入操作 insert into student(id) VALUES(1),(2),(3);insert i…

STM32使用高级定时器输出互补pwm波

STM32使用高级定时器输出互补pwm波 前言硬件和软件cubemx新建工程打开Debug模式配置时钟源六大时钟的作用选择Crystal/Ceramic Resonator&#xff0c;即使用外部晶振作为HSE的时钟源。 配置时钟配置高级定时器TIM8和通用定时器TIM3这里大概解释一下配置pwm输出用到的几个参数我…

ylb-接口4投资排行榜

总览&#xff1a; 1、使用Redis存储投资信息 2、Redis常量类 在common模块constants包&#xff0c;创建一个Redis常量类&#xff08;RedisKey&#xff09;&#xff1a; package com.bjpowernode.common.constants;public class RedisKey {/*投资排行榜*/public static fin…