局部直方圖均衡化去霧算法

目錄

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.pswp.cn/web/13953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13953.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13953.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

正點原子[第二期]Linux之ARM(MX6U)裸機篇學習筆記-16講 EPIT定時器

前言: 本文是根據嗶哩嗶哩網站上“正點原子[第二期]Linux之ARM(MX6U)裸機篇”視頻的學習筆記,在這里會記錄下正點原子 I.MX6ULL 開發板的配套視頻教程所作的實驗和學習筆記內容。本文大量引用了正點原子教學視頻和鏈接中的內容。…

js是單線程還是多線程,為什么是線程而不是進程

JavaScript 在瀏覽器環境中主要是單線程的,而在 Node.js 環境中,雖然 JavaScript 代碼本身仍然是在單線程中執行的,但 Node.js 底層利用了多線程來處理 I/O 操作等異步任務。 下面我會解釋為什么 JavaScript 在瀏覽器環境中主要是單線程&…

再談Google I/O 2024:開發者必看亮點

在2024年Google I/O大會上,谷歌發布了許多令人興奮的新技術和工具。本文將重點介紹其中的三大亮點:新一代TPU、Gemma模型以及Firebase GenKit。這些工具和技術對于開發者來說,將會帶來前所未有的便利和強大功能。 新一代TPU:Tril…

centOS7.9 DNS配置

1.DNS規劃 dns.sohu.com192.168.110.111Awww.sohucom192.168.110.112Aoa.sohu.com 192.168.110.113A 2.安裝 bind yum install -y bind bind-utils 3. 編輯主配置文件 vim /etc/named.conflisten- on port 53 { any; }; allow- query { any; }; 4.配置區域文件 …

在MySQL數據庫中的視圖和事務。

視圖 view 臨時表 作用:優化多表查詢的效率 可以將經常使用的連接查詢結果使用視圖進行保存,避免多次重復的笛卡爾積運算 MySQL數據庫在多表查詢的時候會自動進行笛卡爾積運算。 如果將來經常要用到某一個多表查詢的結果就可以使用視圖將這個結果…

若依框架二次開發指南:從基礎到高級定制

若依框架(RuoYi)作為一個基于Spring Boot和MyBatis的快速開發平臺,其強大的功能和靈活的架構設計使其成為企業級應用開發的理想選擇。然而,隨著業務需求的不斷變化,原生的若依框架可能需要進行一定程度的定制和擴展。本…

前端面試題日常練-day30 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備,答案在文末。 1. 在Vue中,以下哪個選項用于根據條件渲染多個元素? a) v-if b) v-bind c) v-model d) v-for 2. Vue中,以下哪個選項用于在計算屬性中處理異步操作&#xff1f…

圖生視頻 學習筆記

目錄 免費文生視頻模型還支持4K分辨率——Viva open-sora 潞晨科技 圖生視頻Runway Pika 文生視頻、圖生視頻 免費文生視頻模型還支持4K分辨率——Viva 1、文生視頻 2、圖生視頻 3、視頻4K高清 4、區域重繪 5、自動擴圖 6、區域摳圖 作者:C叔聊歷史 https:…

Visual Studio中MP編譯參數

MP通常與OpenMP(Open Multi-Processing)關聯,它是用于多平臺共享內存并行編程的一個API。 在編譯C或C代碼時使用OpenMP,通常需要特定的編譯參數來啟用這一功能。對于GCC和G編譯器,這些參數包括: -fopenmp…

Java虛擬機原理(上)-揭秘Java GC黑匣子-知其所以然,從此不再捆手捆腳

對于Java開發者來說,GC(垃圾回收器)就如同一個神秘的黑匣子,它在背后不知疲倦地運作,卻也時常給我們帶來諸多疑惑和挫折。今天,就讓我們切開這個黑匣子,深入解析Java GC的工作原理,助你了解其中的奧秘&…

SpringBoot anyline

1、定義通用處理 public interface ClickHouseBaseService extends IService<DataRow> {/*** 根據sql查詢數據庫&#xff0c;返回集合對象** param sql 執行sql* return {link DataSet} 數據集*/DataSet querys(String sql);/*** 根據sql查詢數據庫&#xff0c;返回單個…

云手機在軟件測試中的作用,為軟件測試工程師減負

針對每家企業來說&#xff0c;對于即將上線的軟件進行測試這一步驟是不可忽視的&#xff0c;這決定產品上線后的質量和口碑&#xff1b; 傳統的的真機測試可能面臨設備大量的采購&#xff0c;管理和維護的成本提高&#xff0c;現在不少企業都開始用云手機來代替真機&#xff0…

24.zabbix高可用

環境準備 準備三臺機器 主機名字IP地址軟件環境zabbix-server01192.168.111.70httpdphpkeepalivedsshpasszabbix serveragentzabbix-server02192.168.111.71httpdphpkeepalivedsshpasszabbix serveragentzabbix-agent192.168.111.80zabbix agentmysql VIP規劃&#xff1a;19…

AWS計算之Batch

AWS Batch是亞馬遜提供的一項批量計算服務&#xff0c;旨在幫助用戶高效地處理大規模的計算工作負載。AWS Batch可以自動調度、運行和監控批處理作業&#xff0c;用戶無需管理底層的計算資源&#xff0c;可以專注于編寫和提交作業。AWS Batch提供了靈活的配置選項&#xff0c;包…

《Ai-企業知識庫》-討論、構思01

阿丹&#xff1a; 經過幾天的Ai學習&#xff0c;開始對于整個大模型&#xff0c;開始有清晰的認知了。開始準備上手操作&#xff0c;編程自己去寫一些東西了。 什么是會話AI? 一個計算機程序&#xff0c;允許人類使用各種輸入方法&#xff0c;如語音&#xff0c;文字&#x…

使用STM32F103讀取TF卡并模擬U盤:使用標準庫實現

使用STM32F103讀取TF卡并模擬U盤&#xff1a;使用標準庫實現 STM32F103是一款流行的ARM Cortex-M3微控制器&#xff0c;在嵌入式系統中廣泛應用。本文將介紹如何使用STM32F103讀取TF卡&#xff0c;并將其模擬成U盤&#xff0c;讓電腦可以讀取TF卡的內容。我們將使用標準庫&…

Spring常見問題

如何理解spring屬于低侵入式設計&#xff1f; 在代碼中不需要寫明具體依賴對象&#xff0c;在運行時進行自動注入&#xff0c;降低了組件的耦合依賴的是接口&#xff0c;而接口的實現類具有拓展性 Spring IOC 實現了什么功能&#xff0c;談談你對IOC的理解。 負責創建對象&…

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

一、陳述式管理 1.1、陳述式資源管理方法 kubernetes 集群管理集群資源的唯一入口是通過相應的方法調用 apiserver 的接口kubectl 是官方的 CLI 命令行工具&#xff0c;用于與 apiserver 進行通信&#xff0c;將用戶在命令行輸入的命令&#xff0c;組織并轉化為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 軟件版本&#xff1a;elasticsearch-7.13.2.tar.gz 示…

ubuntu18 安裝python3.8

在Ubuntu 18.04上安裝Python 3.8可以通過以下步驟完成&#xff1a; 1.更新包列表和已安裝的包&#xff1a; sudo apt update sudo apt upgrade 2.安裝依賴項&#xff1a; sudo apt install -y software-properties-common 3.添加Python 3.8的PPA&#xff08;個人包歸檔&am…