OpenCV CUDA模塊直方圖計算------用于在 GPU 上執行對比度受限的自適應直方圖均衡類cv::cuda::CLAHE

  • 操作系統:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 編程語言:C++11

算法描述

cv::cuda::CLAHE 是 OpenCV 的 CUDA 模塊中提供的一個類,用于在 GPU 上執行對比度受限的自適應直方圖均衡(Contrast Limited Adaptive Histogram Equalization, CLAHE)。CLAHE 是一種圖像處理技術,旨在提高圖像局部區域的對比度,同時限制了對比度增強的程度以避免噪聲的放大。

主要功能

  • 局部對比度增強:通過將圖像劃分為小塊,并對每個小塊進行直方圖均衡化來提升局部對比度。
  • 對比度限制:通過設置閾值來限制單個灰度值的最大貢獻,從而防止噪聲被過度放大。
  • GPU 加速:利用 NVIDIA GPU 進行加速計算,適用于實時或高性能需求的應用場景。

類概述

以下是 cv::cuda::CLAHE 的一些關鍵成員函數和說明:

構造函數

  CLAHE(double clipLimit=40.0, int tileGridSize=8)
    clipLimit:對比度限制閾值。默認值為 40.0。tileGridSize:劃分網格的大小(以像素為單位)。默認值為 8x8。

設置與獲取參數

 //設置對比度限制。
void setClipLimit
(double clipLimit
)
double getClipLimit() const//獲取對比度限制
// 設置劃分網格的大小。void setTilesGridSize(cv::Size tileGridSize)
cv::Size getTilesGridSize() const//獲取劃分網格的大小。

應用 CLAHE

void apply
(InputArray src, OutputArray dst
)//在給定輸入圖像上應用 CLAHE 算法,并將結果存儲在輸出圖像中。
    src:輸入圖像,通常是灰度圖像。dst:輸出圖像,與輸入圖像具有相同的尺寸和類型。

示例代碼

以下是一個簡單的例子,演示如何使用 cv::cuda::CLAHE 對圖像進行處理:

#include <opencv2/cudaarithm.hpp>   // 包含CUDA算術運算頭文件
#include <opencv2/cudaimgproc.hpp>  // 包含CUDA圖像處理頭文件
#include <opencv2/opencv.hpp>int main()
{// 加載圖像cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );if ( img.empty() ){std::cerr << "無法加載圖像" << std::endl;return -1;}// 將圖像上傳到GPUcv::cuda::GpuMat d_img;d_img.upload( img );// 創建CLAHE對象cv::Ptr< cv::cuda::CLAHE > clahe = cv::cuda::createCLAHE( 40.0, cv::Size( 8, 8 ) );// 輸出圖像cv::cuda::GpuMat d_result;// 應用CLAHEclahe->apply( d_img, d_result );// 下載結果到主機內存cv::Mat result;d_result.download( result );// 顯示原始圖像和處理后的圖像cv::imshow( "Original Image", img );cv::imshow( "CLAHE Enhanced Image", result );cv::waitKey( 0 );return 0;
}

運行結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83120.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83120.shtml

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

相關文章

OpenGAN:基于開放數據生成的開放集識別

簡介 簡介&#xff1a;這次學習的OpenGAN主要學習一個思路&#xff0c;跳出傳統GAN對于判斷真假的識別到判斷是已知種類還是未知種類。重點內容不在于代碼而是思路&#xff0c;會簡要給出一個設計的代碼。 論文題目&#xff1a;OpenGAN: Open-Set Recognition via Open Data …

隨機游動算法解決kSAT問題

input&#xff1a;n個變量的k-CNF公式 ouput&#xff1a;該公式的一組滿足賦值或宣布沒有滿足賦值 算法步驟&#xff1a; 隨機均勻地初始化賦值 a ∈ { 0 , 1 } n a\in\{0,1\}^n a∈{0,1}n.重復t次&#xff08;后面會估計這個t&#xff09;&#xff1a; a. 如果在當前賦值下…

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析 一、成本節約&#xff1a;無紙化直接降低運營成本 紙張與耗材費用銳減 o 杭州科創致遠案例&#xff1a;某汽配企業引入無紙化系統后&#xff0c;年節省紙張耗材費用超50萬元。通過電子化替代傳統紙質文檔…

高并發抽獎系統優化方案

引子 最近接觸了一個抽獎的項目&#xff0c;由于用戶量比較大&#xff0c;而且第三方提供的認證接口并發量有限&#xff0c;為了保證服務的高可用性&#xff0c;所以對高并限制發有一定的要求。經過一系列研究和討論&#xff0c;做出了以下一些優化方案。 需求分析 根據用戶量…

STM32八股【10】-----stm32啟動流程

啟動流程 1.上電復位 2.系統初始化 3.跳轉到 main 函數 啟動入口&#xff1a; cpu被清空&#xff0c;程序從0x00000000開始運行0x00000000存放的是reset_handler的入口地址0x00000000的實際位置會變&#xff0c;根據不同的啟動模式決定啟動模式分為&#xff1a; flash啟動&a…

LLMTIME: 不用微調!如何用大模型玩轉時間序列預測?

今天是端午節&#xff0c;端午安康&#xff01;值此傳統佳節之際&#xff0c;我想和大家分享一篇關于基于大語言模型的時序預測算法——LLMTIME。隨著人工智能技術的飛速發展&#xff0c;利用大型預訓練語言模型&#xff08;LLM&#xff09;進行時間序列預測成為一個新興且極具…

在VirtualBox中打造高效開發環境:CentOS虛擬機安裝與優化指南

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、為何選擇VirtualBox CentOS組合&#xff1f; 對于程序員而言&#xff0c;構建隔離的開發測試環境是剛需。VirtualBox憑借其跨平臺支持&#xff08;W…

LeeCode 98. 驗證二叉搜索樹

給你一個二叉樹的根節點 root &#xff0c;判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下&#xff1a; 節點的左子樹只包含 小于 當前節點的數。節點的右子樹只包含 大于 當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。 提示&#xff1a; 樹中節…

Python簡易音樂播放器開發教程

&#x1f4da; 前言 編程基礎第一期《12-30》–音樂播放器是日常生活中常用的應用程序&#xff0c;使用Python和pygame庫可以輕松實現一個簡易的音樂播放器。本教程將詳細講解如何開發一個具有基本功能的音樂播放器&#xff0c;并解析其中涉及的Python編程知識點。 &#x1f6e…

ssh連接斷開,保持任務后臺執行——tmux

目錄 **核心用途****基礎使用方法**1. **安裝 tmux**2. **啟動新會話**3. **常用快捷鍵&#xff08;需先按 Ctrlb 前綴&#xff09;**4. **會話管理命令**5. **窗格操作進階** **典型工作流****注意事項****配置文件&#xff08;~/.tmux.conf&#xff09;** tmux&#xff08; …

3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云

目錄 3D Gaussian splatting 01: 環境搭建3D Gaussian splatting 02: 快速評估3D Gaussian splatting 03: 用戶數據訓練和結果查看3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云3D Gaussian splatting 05: 代碼閱讀-訓練整體流程3D Gaussian splatting 06: 代碼…

每日c/c++題 備戰藍橋杯(P1204 [USACO1.2] 擠牛奶 Milking Cows)

P1204 [USACO1.2] 擠牛奶 Milking Cows - 詳解與代碼實現 一、題目背景 三個農民每天清晨[……]&#xff08;簡要介紹題目背景&#xff0c;與官網描述類似&#xff09; 二、問題分析 輸入要求 &#xff1a;讀取 N 個農民的擠奶時間區間&#xff0c;計算兩個值&#xff1a;最…

保持本地 Git 項目副本與遠程倉庫完全同步

核心目標&#xff1a; 保持本地 Git 項目副本與 GitHub 遠程倉庫完全同步。 關鍵方法&#xff1a; 定期執行 git pull 命令。 操作步驟&#xff1a; 進入項目目錄&#xff1a; 在終端/命令行中&#xff0c;使用 cd 命令切換到你的項目文件夾。執行拉取命令&#xff1a; 運行…

Flutter 4.x 版本 webview_flutter 嵌套H5

踩坑早期版本 使用 WebView 代碼如下 import package:flutter/material.dart; import package:webview_flutter/webview_flutter.dart;class HomePage extends StatelessWidget {const HomePage({super.key});overrideWidget build(BuildContext context) {return Scaffold(ap…

rtpinsertsound:語音注入攻擊!全參數詳細教程!Kali Linux教程!

簡介 2006年8月至9月期間&#xff0c;我們創建了一個用于將音頻插入指定音頻&#xff08;即RTP&#xff09;流的工具。該工具名為rtpinsertsound。 該工具已在Linux Red Hat Fedora Core 4平臺&#xff08;奔騰IV&#xff0c;2.5 GHz&#xff09;上進行了測試&#xff0c;但預…

跑步前熱身動作

跑前熱身的核心目標是升高體溫、激活肌肉、預防損傷 &#xff0c;同時通過動態動作提升運動表現。熱身&#xff08;步驟關節→肌肉→心肺&#xff09;和針對性動作&#xff08;如抱膝抬腿&#xff09;能有效降低受傷風險&#xff0c;建議每次跑步前嚴格執行。 推薦跑前熱身動作…

GIT命令行的一些常規操作

放棄修改 git checkout . 修改commit信息 git commit --amend 撤銷上次本地commit 1、通過git log查看上次提交的哈希值 2、git reset --soft 哈希值 分支 1.創建本地分支 git branch 分支名 2.切換本地分支 git checkout mybranch&#xff1b; 3.創建一個新分支并…

RAGFlow從理論到實戰的檢索增強生成指南

目錄 前言 一、RAGFlow是什么&#xff1f;為何需要它&#xff1f; 二、RAGFlow技術架構拆解 三、實戰指南&#xff1a;從0到1搭建RAGFlow系統 步驟1&#xff1a;環境準備 步驟2&#xff1a;數據接入 步驟3&#xff1a;檢索與生成 四、優化技巧&#xff1a;讓RAGFlow更精…

軟件工程方法論:在確定性與不確定性的永恒之舞中尋找平衡

當我們談論“軟件工程”時&#xff0c;“工程”二字總暗示著某種如橋梁建造般的精確與可控。然而&#xff0c;軟件的本質卻根植于人類思維的復雜性與需求的流變之中。軟件工程方法論的發展史&#xff0c;并非線性進步的凱歌&#xff0c;而是一部在確定性的渴望與不確定性的現實…

Python打卡訓練營Day41

DAY 41 簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 →…