- 操作系統: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;
}