关于A 全球大气光 atmosphere light 算法总结

2023-05-16

由于大气散色所用引起的光源的特性。随着距离的增大而增强。

A其实为无穷远处的一个大气光源,比如天空,这应该不是指天空中的云而是近地天空。

由于各种去雾算法不同对A的依赖可能也不相同。


我看到有几种方法对在去雾算法中应用,去估算A值。

1.基于物理模型的快速单幅图像去雾方法   禹 晶 李大鹏  廖庆敏

中提到的算法:

寻找天空并估计天空亮度。首先是天空特征:天空区域具有 3 个特性: 1) 亮度较
高; 2) 灰度平坦; 3) 位置偏上.

首先, 对彩色图像的最小颜色分量进行最小值
滤波, 也称为灰度腐蚀操作, 可表示为

式中, c 2 fR; G; Bg 分别表示 R、 G、 B 颜色通道;­ (x) 表示以像素 x 为中心的邻域, 其尺寸自适应地
与图像宽和高中的最小值成比例, 本文中取 0.025.然后, 采用 Canny 算子对彩色图像的灰度分量进行
边缘检测, 对边缘图像进行分块统计, 计算各图像块中边缘像素数所占的比例, 记为 Nedge( x). 同时

满足 Imin( x) > Tv 且 Nedge( x) < Tp 的像素集合指定为候选天空区域. 本文设定亮度阈值 Tv 为 Imin( x)
中最大值的 95 %, 平坦阈值 Tp 为 0.001. 图 2 (a) 为一幅雾天拍摄的图像, 在图 2 (b) 中候选天空区域用
青色标识.最后, 对候选天空区域标记连通分量. 利用天空区域位置的先验信息, 选取图像上方的一个连通分
量作为天空区域. 在原图像的对应区域中, 将最大像素值确定为天空亮度 A 的估计值。

个人认为算法复杂耗时较多。尤其是canny边缘检测及后面的计算天空区域的联通分量。


2.基于单幅图像的快速去雾算法

由于max(Mave(x))<A<max(max(H(x)))

其中Mave(x)=average(M(x)),M(x)=min(H(x))

H(x)为rgb各通道的值。


所以A可以表示为下式

A=e*max(maxH(x))+(1-e)max(Mave(x))

为了方便作者在这里取了e为0.5,可能是经验值,或者胡乱选择的。

这种方法既避免了直接选取输入图像中最亮点的灰度值作为大气光值的不合理,又兼顾了算法的快速性。


3.Optimized contrast enhancement for real-time image and video dehazing

A一般会用image里最亮的color来估计。但是如果有些物体本身比A亮会导致A的估计错误。

这里提供一种基于quad-tree subdivision 的方法。首先将输入图像四分,计算均值减去一个块内的标准值。

比较这个大小。选取结果最大的一个块,继续4分。知道分到一个事先定好的大小。

选取color vector 到 点(255,255,255)最小的值。作为A的估计值。


区间大小的选择应该需要比蓝天大,但是具体的选择大小可能需要在多附图中验证。


4.Fast Haze Remova Algorithm for Surveillance Video & .Single image haze removal using dark channel prior

上面两片文章用的方法是一样的。也是最简单的。方法如下

 For universal usage consideration, dark
channel is used to estimateAin our previous dehazing algorithm [9]. We first pick
the top 0.1% brightest pixels in the dark channel.

采用从暗通道图中按照亮度的大小取前0.1%的像素作为A


个人认为从速度上 4 和2算法较快但不一定准确3的算法速度回慢一些但会比较准确,1的算法最慢而且实现复杂。本文就实现以下比较后面三个文章的A计算值 。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于A 全球大气光 atmosphere light 算法总结 的相关文章

  • 如何修复烧写镜像文件失败的SD卡

    前言 使用某些软件 xff08 比如 win32 Disk Imager xff09 向SD卡烧写镜像文件时 xff0c 很有可能出现烧写失败的情况 xff0c 通常如果烧写失败 xff0c 系统会弹出请求格式化SD卡的提示框 此时不要点格
  • FreeRTOS学习笔记(一)基础篇

    我的FreeRTOS学习 xff0c 是从朱工的FreeRTOS系列博客开始的 xff0c 感谢朱工的悉心整理 xff0c 文章很不错 xff0c 适合学习 根据朱工的博客 xff0c 按照我自己的习惯和思路 xff0c 把最关键的信息抓取
  • 程序员要不要懂底层原理

    我在做编程的时候 xff0c 还是一个地道的门外汉 xff0c 就像一个刚出生的孩子 xff0c 跟着大人咿呀呀的学语 xff0c 也不知道是什么 xff0c 做什么用的 xff0c 也不知道能不能换种方式实现 xff0c 总结起来就是一问
  • Z变换零点极点

    在Z变换里 xff0c 零点的位置表示系统的 谷 xff0c 极点的位置表示系统的 峰 xff0c 我们把有峰的地方看做信号可以通过的地方 xff0c 而有谷的地方看做信号被截止的地方 并且我们选择单位圆为频域的一个周期 xff0c 那么可
  • ubuntu16.04下ROS Kinetic详细安装过程

    参考网址 xff1a 点击打开链接 参考文献 xff1a ROS机器人编程 配置环境 xff1a ubuntu 16 04 LTS 43 ROS Kinetic 一 安装ROS 1 设置镜像源 为了保证安装速度 xff0c 需要选择国内的镜
  • vscode环境中配置git

    1 建立project空目录用于存放electron基本环境这个环境中得文件不能加入git项目中否则每次更新文件太大github不支持大于100M得文件上传 2 使用vscode打开project目录 3 打开终端运行npm install
  • idea 主题 代码颜色 代码区背景 行号背景 注释颜色修改

    最近写代码眼睛总是看的不舒服 xff0c 想着换一个主题 xff0c 但是换了主题 xff0c 代码的颜色显示和之前又不一样了 xff0c 接下来就是修改主题 xff0c 但是代码颜色仍然保持 Darcula 主题的颜色 目录 1 修改主题
  • RTT之SysTick做了什么

    经过好几天的摸索 xff0c 终于正常驱动了一个串口设备 xff0c 并成功移植到雅特力的板子上 xff01 当然 xff0c 还得继续努力把RTT的内核搞清楚 xff0c 这样才会构建整个项目程序 xff0c 毕竟项目是有时间限制的 因为
  • realSense 安装 经验整理

    安装 RealSense SDK 以ros 参考1 参考二 主要看参考三 标定 标定 以上内容安装失败 Realense sdk和ros对应关系 jetson jetson 一键安装sdk 官方安装 jetson4 4 xavier nx
  • 吴恩达machine learning yearning读书笔记1

    在 setting up development set and test set 这一章中 xff0c 作者提到了一个很重要的问题 训练集和测试集分布不一致导致的机器学习模型泛化能力有限 xff1a 在训练集上表现比较好 xff0c 但是
  • 图像畸变与去畸变

    本文主要介绍图像畸变产生的原因 xff0c 广角镜头的一般畸变模型和去畸变的方法 1 图像畸变 图像畸变是由于透镜制造精度以及组装工艺的偏差会引入畸变 xff0c 导致原始图像失真 镜头的畸变分为径向畸变和切向畸变两类 1 1 径向畸变与畸
  • Linux C编程问题:symbol lookup error: xxx undefined symbol xxx

    程序代码在编译的时候没问题 xff0c 但是在运行的时候报错 xff1a bin symbol lookup error bin undefined symbol xxx 百度了一下 xff0c 貌似是程序运行时使用的动态库和编译时make
  • Docker自动从Harbor下更新镜像

    JAVA开发Docker容器下自动更新镜像仓库的工具 前段时间在做一套分布式多租户系统 xff0c 它包括控制平台和应用服务器两部分 xff0c 应用服务器为企业客户服务 xff0c 系统会为每家企业建立一个应用服务器实例 xff0c 它存
  • C++中的exit函数

    描述 xff1a 用来立即中止当前程序的执行 xff0c 并将一个整数返回给系统 xff0c 该整数的作用与 由mian函数返回的整数 相同 xff0c 如果是0表示程序正常退出 xff1b 如果非0表示程序异常退出 头文件 span cl
  • 将uint8_t类型的16进制字符转化转换为string字符串

    碰到一个需求 xff0c 需要把硬件读到的uint8 t类型的16进制数据转化为string类型的字符串 例如 xff0c 如果读到到的数据是一个uint8 t类型的数组uint8 t code 61 5 61 0XAA 0X01 0XE3
  • C++解析json文件

    文章目录 1 JSON文件简介 1 1 1 JSON文件的语法规则1 2 JSON值的类型 2 JSON文件解析 1 JSON文件简介 1 一个项目在设计时会存在很多参数 xff0c 比如data文件路径 外设名称与相关参数 文件储存路径等
  • YOLO-YOLOV5算法原理及网络结构整理

    文章目录 零 参考链接一 前言1 1 YOLO vs Faster R CNN 二 YOLOv1 xff08 448 448 xff09 2 1实现方法2 2 损失函数2 3 leak RELU激活函数2 4总结 三 YOLOV23 1 Y
  • ubuntu 20.04.5安装python3.9缺少ffi.h文件问题

    ubuntu 20 04 5安装python3 9缺少ffi h文件问题 OK 解决
  • 视觉SLAM基础

    文章目录 零 参考链接一 视觉SLAM面试相关问题1 李群与李代数的映射关系2 李群与李代数的扰动模型3 SIFT与SURF特征的区别4 相似变换 仿射变换 射影变换的区别5 Homograph Essential Fundamental
  • 在ubuntu18.04系统上使用ROS跑ORB-SLAM3时遇到的问题总结

    1 跑TUM VI数据集dataset corridor4 512时 xff0c 从tum vi example sh中复制对应的运行命令 xff0c 输入命令后提示找不到对应的TUM 512 yaml文件 xff0c 查找对应路径发现只有

随机推荐

  • ubuntu1804系统安装Realsense SDK驱动和ROS Wrapper

    文章目录 1 软件安装1 1 安装realsense SDK1 2 安装Ros Wrapper 2 打开双目的开关3关闭结构光方法1 xff1a 通过可视窗口关闭方法2 xff1a 通过修改launch文件关闭 4查看相机参数 说明 xff
  • 在使用evo进行orb-slam2轨迹评估时提示时间戳没有对齐的问题

    最近使用一个orb slam2修改版跑euroc数据集 在使用evo评估绝对轨迹误差时出现下面的报错 found no matching timestamps between CameraTrajectory txt and gt MH01
  • ORB-SLAM2论文翻译

    文章转载至泡泡机器人 转载链接 链接 摘要 ORB SLAM2是基于单目 xff0c 双目和RGB D相机的一套完整的SLAM方案 它能够实现地图重用 xff0c 回环检测和重新定位的功能 无论是在室内的小型手持设备 xff0c 还是到工厂
  • ROS使用命令行查看图像消息的宽和高

    备忘 xff1a ROS在终端使用命令行查看图像消息的宽和高 span class token comment 查看图像的宽 span rostopic span class token builtin class name echo sp
  • C++读取指定目录下的所有文件

    简介 xff1a 代码备忘 xff0c 使用C 43 43 读取指定目录下的所有文件名 xff0c 并存入vector向量 需要的头文件 span class token macro property span class token di
  • ubuntu1804进行vins-fusion算法环境搭建遇到的问题汇总

    简介 xff1a 在ubuntu1804系统搭建vins fusion环境并基于euroc数据集进行测试 xff0c 对遇到的编译报错和解决办法进行汇总 1 vins fusion算法环境搭建 报错1 Chessboard cc 20 38
  • ubuntu1804搭建svo2.0环境并跑euroc数据集

    0说明 整个SVO2 0环境搭建过程按照官网的说明进行 链接 xff1a https github com uzh rpg rpg svo pro open 开发环境是ubuntu18 04 43 ROS Melodic 1工具安装 Ins
  • 使用ceres库时报错:undefined reference to `ceres::Problem::Problem()‘

    编译cmake项目链接ceres库时名称没有写对导致报错 myCeres cpp span class token punctuation span text startup 43 0x247 span class token punctu
  • qt.qpa.plugin: Could not load the Qt platform plugin “xcb“

    运行环境 ubuntu 20 04 5 使用python3 9 由于使用qt5的同时使用了opencv导致如下报错 应该是由于调用环境不兼容导致的 需要加入如下代码问题解决 import os os environ pop 34 QT QP
  • 【Ubuntu】触摸屏旋转配置

    1 主要参考这篇文章编写配置脚本 Ubuntu18 04双屏显示触屏设置 xff0c 解决触摸点和响应位置不一致的问题 iShare 123的博客 CSDN博客 ubuntu触摸屏设置 Ubuntu18 04双屏 https blog cs
  • 红外视频——行人识别

    最近在做关于红外视频的项目 xff0c 主要是对区域入侵检测 xff0c 主要是能够对行人进行识别 xff0c 又到了瓶颈期 xff0c 所以看看论文找些灵感 xff0c 下面也主要是对看到的论文的思想及实现步骤进行总结 1 Thermal
  • Ardupilot任务调度的理解

    Ardupilot通过定时器定时调度一系列任务实现任务调度 由于Ardupilot固件有基于arduino的APM发展而来 xff0c 因此程序与arduino的形式类似 xff0c 包含一个setup xff08 xff09 函数与一个l
  • 最详细的Gmapping代码详解!详细到每一行!

    无处不在的小土 gmapping的ROS封装 gaoyichao com
  • 【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解

    棋盘格法是摄像机标定中常用的一种方法 xff0c 在使用该方法时需要对棋盘格的角点进行检测 opencv中封装了一个专门用于棋盘格角点检测的函数即cv findChessboardCorners xff0c 同时 xff0c 也提供了一个专
  • 网络编程和并发编程面试题

    网络编程和并发编程面试题 1 简述 OSI 七层协议 一 应用层 与其它计算机进行通讯的一个应用 xff0c 它是对应应用程序的通信服务的 例如 xff0c 一个没有通信功能的字处理程序就不能执行通信的代码 xff0c 从事字处理工作的程序
  • 树莓派利用串口进行通信

    树莓派串口通信 我用的是树莓派3b 43 型号 xff0c 网上各种各样的修改方式来使得树莓派的串口可以工作 xff0c 过于混乱 xff0c 还有的教程甚至会被树莓派系统搞崩溃 xff0c 尤其是树莓派实验室那里的中文教程 xff0c 是
  • Android系统学习(六)------裁剪Android系统

    你好 xff01 这里是风筝的博客 xff0c 欢迎和我一起交流 经过前面几篇博客的编译步骤 xff0c 成功的编出了Android系统 xff0c 但是发现编出来的system img有点大了 xff0c 有差不多1 7G xff0c 怎
  • 用postman批量执行post请求数据

    今天接到一个任务 xff0c 需要在同一个url中执行83次不同的post请求 xff0c 而且需要连续执行3次 xff0c 如果一个一个点击 xff0c 岂不是不符合 xff0c 摸鱼大王的风格 xff0c 思考片刻之后 xff0c 决定
  • 使用python批量发送post请求

    usr bin env python import requests url 61 34 http 192 168 26 xxx 34 header 61 39 Connection 39 39 close 39 39 Accept 39
  • 关于A 全球大气光 atmosphere light 算法总结

    由于大气散色所用引起的光源的特性 随着距离的增大而增强 A其实为无穷远处的一个大气光源 xff0c 比如天空 xff0c 这应该不是指天空中的云而是近地天空 由于各种去雾算法不同对A的依赖可能也不相同 我看到有几种方法对在去雾算法中应用 x