Opencv图像暗通道调优

news2025/1/22 3:01:49

    基于雾天退化模型的去雾算法,Opencv图像暗通道调优,(清华版代码)对普通相片也有较好的调优效果,相片更通透。

结合代码实际运行效果、算法理论模型、实际代码。我个人理解,实际效果是对图像的三个颜色通道做了数值调整,通过暗通道优化,实现去雾效果

一个是2009年优秀博士算法,相关链接:何凯明博士的暗通道去雾算法(CVPR 2009最佳论文)

暗通道先验:首先说在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值,也就是说该区域光强是一个很小的值。

色彩鲜艳的物体或表面,在RGB的三个通道中有些通道的值很低(比如绿色的草地/树/植物,红色或黄色的花朵/叶子,或者蓝色的水面)。

总之,自然景物中到处都是阴影或者彩色,这些景物的图像的暗原色总是很灰暗的

另一个作者来自清华大学: 相关链接:清华大学《基于单幅图像的快速去雾》

这两个链接里,都有各自的源代码,可以在opencv 4.8.0、QT6.5.2环境直接编译运行。

两家算法是基于相同的理论模型:

在计算机视觉领域,通常使用雾天图像退化模型来描述雾霾等恶劣天气条件对图像造成的影响,该模型是McCartney首先提出。该模型包括衰减模型和环境光模型两部分。
 H(x)=F(x)e^{-rd(x)}+A(1-e^{-rd(x)})

其中, x是图像像素的空间坐标,H是观察到的有雾图像, F是待恢复的无雾图像,r表示大气散射系数,d代表景物深度, A是全局大气光,通常情况下假设为全局常量,与空间坐标 x无关。
 

 e^{-r(dx)}表示坐标空间x处的透射率,使用 t(x)来表示。

H(x)=F(x)e^{-rd(x)}+A(1-t(x))
关键点:

所有基于雾天退化模型的去雾算法就是是根据已知的有雾图像 H ( x )求解出透射率t(x)和全局大气光 A

如何推导,更详细的算法分析,请参考:清华大学《基于单幅图像的快速去雾》
 

清华版运行效果如下:

去雾效果非常不错,普通相片经过处理后,也显得更通透。

2009年博士版,也有去雾效果,如下图所示:

但不适合普通相片调优。

有很大的改进空间。

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

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

相关文章

解决Clipping input data to the valid range for imshow with RGB data([0..1] ...)

解决 Clipping input data to the valid range for imshow with RGB data [0..1] for floats or [0..255] for integers 1. 问题描述2. 解决方法 1. 问题描述 在使用 python 显示 npz 文件中的图片时,使用如下代码: import numpy as np import matplot…

强大的思维导图库SimpleMindMap

本文软件是网友 Frank Yang 推荐的; 什么是 SimpleMindMap ? Simple Mind Map 是一个简单、强大的 Web 思维导图库,不依赖任何特定框架,可以帮助你快速开发思维导图产品。同时 Simple Mind Map 也是一个思维导图软件。无论你是开发…

IO面试题整理

1.同步/异步,阻塞/非阻塞是一样的概念吗? 不一样。 阻塞/非阻塞说的是调用者。调用者需要等待就是阻塞,不需要等待就是非阻塞。 同步/异步说的是被调者通知调用者的方式。被调者执行完成后再恢复调用者是同步。被调者立即告诉调用者收到求…

【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】

文章目录 “我的”界面修改效果界面实现界面整体代码 查看已发布商品界面效果商品数据表后端上架、下架商品ControllerMapper 界面整体代码back方法 编辑商品、商品发布、保存草稿后端商品校验方法Controller 页面整体代码 “我的”界面修改 效果 界面实现 界面的实现使用了一…

vue3 Table 分页保留选中状态

//指定id值,数据更新之后保留之前选中的数据 const getRowKeys (row) > {return row.siteId; }; // 这存的是选中的数据 const userSelectionChange (values) > {state.selectedData [...values]; }; // 两个数组对比,判断表格中的数据是否开启选中 cons…

【更新至2022年】1992-2022年全国31省金融业增加值数据(无缺失)

【更新至2022年】1992-2022年全国31省市金融业增加值数据(无缺失) 1、时间:1992-2022年 2、来源:国家统计J、各省TJNJ 3、指标:金融业增加值 4、范围:31省 5、缺失情况说明:无缺失 6、指标…

Google Services Framework 谷歌服务框架的安装以及遇到的常见问题

安装谷歌三件套: 1、Google 服务框架(Google Services Framework)下载地址: https://www.apkmirror.com/apk/google-inc/google-services-framework/ 注意一定要选择与自己手机对应的安卓系统版本的服务框架。 2、Google Play Se…

javaee spring aop 的五种通知方式

spring配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:aop"http://www.springframework.…

常见脉冲电路

在电子电路中&#xff0c;电源、放大、振荡和调制电路被称为模拟电子电路&#xff0c;因为它们加工和处理的是连续变化的模拟信号。电子电路中另一大类电路的数字电子电路。它加工和处理的对象是不连续变化的数字信号。数字电子电路又可分成脉冲电路和数字逻辑电路&#xff0c;…

day3 c++d对话框及事件处理机制

1.文本编辑器 2.自由移动的球

【深度学习】实验06 使用TensorFlow完成线性回归

文章目录 使用TensorFlow完成线性回归1. 导入TensorFlow库2. 构造数据集3. 定义基本模型4. 训练模型5. 线性回归图 使用TensorFlow完成线性回归 1. 导入TensorFlow库 # 导入相关库 %matplotlib inline import numpy as np import tensorflow as tf import matplotlib.pyplot …

HTML+JavaScript+CSS DIY 分隔条splitter

一、需求分析 现在电脑的屏幕越来越大&#xff0c;为了利用好宽屏&#xff0c;我们在设计系统UI时喜欢在左侧放个菜单或选项面板&#xff0c;在右边显示与菜单或选项对应的内容&#xff0c;两者之间用分隔条splitter来间隔&#xff0c;并可以通过拖动分隔条splitter来动态调研…

TuyaOS开发学习笔记(1)——NB-IoT开发搭建环境、编译烧写(MT2625)

一、搭建环境 1.1 官方资料 TuyaOS 1.2 安装VMware 官网下载&#xff1a;https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0 百度网盘&#xff1a;https://pan.baidu.com/s/1oN7H81GV0g6cD9zsydg6vg 提取…

【Redis从头学-完结】Redis全景思维导图一览!耗时半个月专为Redis初学者打造!

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

C语言入门 Day_12 一维数组0

目录 前言 1.创建一维数组 2.使用一维数组 3.易错点 4.思维导图 前言 存储一个数据的时候我们可以使用变量&#xff0c; 比如这里我们定义一个记录语文考试分数的变量chinese_score&#xff0c;并给它赋值一个浮点数&#xff08;float&#xff09;。 float chinese_scoe…

2023应届生java面试紧张失误之一:CAS口误说成开心锁-笑坏面试官

源于&#xff1a;XX网&#xff0c;如果冒犯&#xff0c;表示歉意 面试官&#xff1a;什么是CAS 我&#xff1a;这个简单&#xff0c;开心锁 面试官&#xff1a;WTF&#xff1f; 我&#xff1a;一脸自信&#xff0c;对&#xff0c;就是这个 面试官&#xff1a;哈哈大笑&#xff…

YOLOv7框架解析

YOLOv7概念 YOLOv7是基于YOLO系列的目标检测算法&#xff0c;由Ultra-Light-Fast-Detection&#xff08;ULFD&#xff09;和Scaled-YOLOv4两种算法结合而来。它是一种高效、准确的目标检测算法&#xff0c;具有以下特点&#xff1a; 1. 高效&#xff1a;YOLOv7在保持准确率的…

一个 MySQL 数据库死锁的案例和解决方案

本文介绍了一个 MySQL 数据库死锁的案例和解决方案。 场景 生产环境出了一个偶现的数据库死锁问题&#xff0c;导致少部分业务处理失败。 分析特征之后&#xff0c;发现是多个线程并发执行同一个方法&#xff0c;更新关联的数据时可能会出现&#xff0c;把场景简化概括一下&…

MySQL基础篇:数据库概述和部署

SQL 概述 SQL&#xff0c;一般发音为sequel&#xff0c;SQL的全称Structured Query Language)&#xff0c;SQL用来和数据库打交道&#xff0c;完成和数据库的通信&#xff0c;SQL是一套标准。但是每一个数据库都有自己的特性别的数据库没有,当使用这个数据库特性相关的功能,这…

CDH6.3.2集成Kerberos

CDH6.3.2集成Kerberos 一.参考doc CDH enable kerberos: Kerberos Security Artifacts Overview | 6.3.x | Cloudera Documentation CDH disable kerberos:https://www.sameerahmad.net/blog/disable-kerberos-on-CDH; https://community.cloudera.com/t5/Support-Questions…