局部直方图均衡化去雾算法

目录

1. 引言

2. 算法流程

3. 代码

4. 去雾效果


1. 引言

        局部直方图算法是一种基于块的图像去雾方法,它将图像分割为若干个块,并在每个块内计算块的局部直方图。通过对各个块的直方图进行分析和处理,该算法能够更好地适应图像中不同区域的光度差异和雾霾密度变化,从而提高去雾效果。然而,局部直方图算法在处理边缘区域和细节丰富的区域时存在一定的挑战,容易导致边缘锐化和细节损失。

        局部直方图算法是在全局直方图算法的基础上进行改进而成的。该算法通过将图像划分为多个局部区域,并对每个局部区域进行直方图分析,从而实现对图像的局部去雾处理。与全局直方图算法相比,局部直方图算法更能够保留图像的细节信息,并在复杂场景下取得更好的去雾效果。但该算法的计算复杂度相对较高,对计算资源的要求也较大。

2. 算法流程

        1.首先,将原始图像划分为多个重春的滑动窗口,窗口的尺寸可以根据需要进行选择。

        2.对于每个窗口,分别对其RGB通道进行直方图均衡化,通过增加像素值的分布范围来增强图像的对比度。

        3.将经过局部直方图均衡化处理后的每个窗口重新整合到新的图像中,得到一张经过局部直方图均衡化去雾处理后的图像。

3. 代码

import cv2
import numpy as npdef clahe_dehaze(img, clip_limit=2.0, tile_grid_size=(8, 8)):# 转换为YCrCb色彩空间ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)# 分离通道channels = list(cv2.split(ycrcb))# 创建CLAHE对象clahe = cv2.createCLAHE(clipLimit=clip_limit, tileGridSize=tile_grid_size)# 对Y通道进行CLAHEchannels[0] = clahe.apply(channels[0])# 合并通道ycrcb = cv2.merge(channels)# 转换回BGR色彩空间result = cv2.cvtColor(ycrcb, cv2.COLOR_YCrCb2BGR)return result# 读取图像
im = cv2.imread('xue_foggy.png')
if im is None:raise FileNotFoundError("The image file was not found. Please check the path.")# 使用CLAHE进行图像去雾
eq = clahe_dehaze(im)# 显示原始图像和处理后的图像
cv2.imshow('Original Image', im)
cv2.imshow('CLAHE Dehazed Image', eq)
cv2.waitKey(0)
cv2.destroyAllWindows()# 保存处理后的图像
cv2.imwrite('img_clahe_dehazed.png', eq)

4. 去雾效果

        从效果对比图看出局部直方图均衡化算法可以显著改善雾天图像的对比度,提升视觉效果。通过对图像的局部区域应用直方图均衡化,能够有效处理不同区域的对比度变化。

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

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

相关文章

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-16讲 EPIT定时器

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

再谈Google I/O 2024:开发者必看亮点

在2024年Google I/O大会上,谷歌发布了许多令人兴奋的新技术和工具。本文将重点介绍其中的三大亮点:新一代TPU、Gemma模型以及Firebase GenKit。这些工具和技术对于开发者来说,将会带来前所未有的便利和强大功能。 新一代TPU:Tril…

在MySQL数据库中的视图和事务。

视图 view 临时表 作用:优化多表查询的效率 可以将经常使用的连接查询结果使用视图进行保存,避免多次重复的笛卡尔积运算 MySQL数据库在多表查询的时候会自动进行笛卡尔积运算。 如果将来经常要用到某一个多表查询的结果就可以使用视图将这个结果…

Visual Studio中MP编译参数

MP通常与OpenMP(Open Multi-Processing)关联,它是用于多平台共享内存并行编程的一个API。 在编译C或C代码时使用OpenMP,通常需要特定的编译参数来启用这一功能。对于GCC和G编译器,这些参数包括: -fopenmp…

云手机在软件测试中的作用,为软件测试工程师减负

针对每家企业来说,对于即将上线的软件进行测试这一步骤是不可忽视的,这决定产品上线后的质量和口碑; 传统的的真机测试可能面临设备大量的采购,管理和维护的成本提高,现在不少企业都开始用云手机来代替真机&#xff0…

24.zabbix高可用

环境准备 准备三台机器 主机名字IP地址软件环境zabbix-server01192.168.111.70httpdphpkeepalivedsshpasszabbix serveragentzabbix-server02192.168.111.71httpdphpkeepalivedsshpasszabbix serveragentzabbix-agent192.168.111.80zabbix agentmysql VIP规划:19…

《Ai-企业知识库》-讨论、构思01

阿丹: 经过几天的Ai学习,开始对于整个大模型,开始有清晰的认知了。开始准备上手操作,编程自己去写一些东西了。 什么是会话AI? 一个计算机程序,允许人类使用各种输入方法,如语音,文字&#x…

【云原生】K8s管理工具--Kubectl详解(一)

一、陈述式管理 1.1、陈述式资源管理方法 kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口kubectl 是官方的 CLI 命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为apiserver 能识…

Elasticsearch集群和Logstash、Kibana部署

1、 Elasticsearch集群部署 服务器 安装软件主机名IP地址系统版本配置ElasticsearchElk10.3.145.14centos7.5.18042核4GElasticsearchEs110.3.145.56centos7.5.18042核3GElasticsearchEs210.3.145.57centos7.5.18042核3G 软件版本:elasticsearch-7.13.2.tar.gz 示…

【Docker系列】 Docker容器具体信息查询

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解

系列文章目录 Python数据类型:编程新手的必修课深入探索Python字符串:技巧、方法与实战Python 函数基础详解Python正则表达式详解:掌握文本匹配的魔法Python文件操作宝典:一步步教你玩转文件读写Python面向对象基础与魔法方法详解…

databricks~Unity Catalog

Unity Catalog hierarchy 包含了用户授权管理信息和元数据信息 workspace with unity catalog hierarchy unity metastore Ref: https://www.youtube.com/playlist?listPLY-V_O-O7h4fwcHcXgkR_zTLvddvE_GfC

ChatGPT类大模型应用入门了解与使用

一 前言 ChatGPT大众热情逐渐褪去,但在后台技术人的探索还处于热火朝天状态。如果我们生活的世界是一杯清水, 那类似ChatGPT的语言大模型技术的横空出世就如滴入水杯的一滴墨汁,第一滴很显眼,但实际上是后续墨汁慢慢扩散渗透才是…

Windows11下使用Qt5.14.2编译QtXlsx驱动详细步骤

原有&#xff1a;由于系统需要将QTableWidget表格中的数据导出、在Windows下最开始使用Excel.Application组件实现了导出功能&#xff0c;后面将代码转换到Ubuntu20.04下进行编译&#xff0c;发现项目.pro文件中的QT axcontainer和代码.h文件中的#include <QAxObject>跟…

基于图鸟UI的资讯名片模版开发与应用

一、引言 在前端技术日新月异的今天&#xff0c;快速、高效、美观的UI组件库和模板成为了开发者们关注的焦点。图鸟UI作为一款集成了基础布局元素、配色体系、图标icon和精选组件的UI框架&#xff0c;为前端开发者提供了极大的便利。本文将以图鸟UI为基础&#xff0c;探讨基于…

如何让外网访问内网服务?

随着互联网的快速发展&#xff0c;越来越多的企业和个人需要将内网服务暴露给外网用户访问。由于安全和隐私等因素的考虑&#xff0c;直接将内网服务暴露在外网是非常不安全的做法。如何让外网用户安全访问内网服务成为了一个重要的问题。 在这个问题上&#xff0c;天联公司提供…

Lumines推出RGBL彩色混合LED

Luminus Devices倾心打造了一款崭新的4合1 RGBL&#xff08;红绿蓝绿石灰&#xff09;LED系列&#xff0c;专为舞台与建筑照明领域量身打造&#xff0c;满足对高显色指数&#xff08;CRI&#xff09;与高输出颜色混合的苛刻需求。这一创新之举&#xff0c;无疑是照明技术的一次…

使用HiBurn烧录鸿蒙.bin文件到Hi3861开发板

鸿蒙官方文档的“Hi3861开发板第一个示例程序”中描述了——如何使用DevEco Device Tool工具烧录二进制文件到Hi3861开发板&#xff1b; 本文将介绍如何使用HiBurn工具烧录鸿蒙的.bin文件到Hi3861开发板。 获取HiBurn工具 通过鸿蒙官方文档我们知道DevEco Device Tool是一个V…

SAP--ABAP踩坑日志---日期函数的踩坑-----FIMA_DATE_CREATE

当你需要动态生成日期列的时候,出现了奇怪的BUG怎么办? 用函数循环循环产生获取下一个日期,结果出现了5.30 直接到6.1了 …我的5.31呢??? 解决方案:用这个,不要瞎用函数啊! day_col day_col 1.

docker所在磁盘空间不足 迁移数据

1.查看原始目录docker info | grep "Docker Root Dir" 一般在/var/lib/docker 2.停止docker service docekr stop 3.移动数据 注意 移动前不要创建docker目录&#xff01; mv /var/lib/docker /home/docker 4.进入目录查看是否与原始目录相同&#xff0c;确认一…