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 的一些关键成员函数和说明:

构造函数

cpp 复制代码
  CLAHE(double clipLimit=40.0, int tileGridSize=8):
复制代码
    clipLimit:对比度限制阈值。默认值为 40.0。
    tileGridSize:划分网格的大小(以像素为单位)。默认值为 8x8。

设置与获取参数

cpp 复制代码
 //设置对比度限制。
void setClipLimit
(
	double clipLimit
)
cpp 复制代码
double getClipLimit() const://获取对比度限制
cpp 复制代码
// 设置划分网格的大小。
 void setTilesGridSize
 (
 	cv::Size tileGridSize
 )
cpp 复制代码
cv::Size getTilesGridSize() const://获取划分网格的大小。

应用 CLAHE

cpp 复制代码
void apply
(
	InputArray src, 
	OutputArray dst
):
//在给定输入图像上应用 CLAHE 算法,并将结果存储在输出图像中。
复制代码
    src:输入图像,通常是灰度图像。
    dst:输出图像,与输入图像具有相同的尺寸和类型。

示例代码

以下是一个简单的例子,演示如何使用 cv::cuda::CLAHE 对图像进行处理:

cpp 复制代码
#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;
    }

    // 将图像上传到GPU
    cv::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;

    // 应用CLAHE
    clahe->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;
}

运行结果

相关推荐
IT_陈寒2 分钟前
Vue 3.4 实战:这7个Composition API技巧让我的开发效率飙升50%
前端·人工智能·后端
张较瘦_12 分钟前
[论文阅读] AI+软件工程 | AI供应链信任革命:TAIBOM如何破解AI系统“可信难题“
论文阅读·人工智能·软件工程
媒体人88834 分钟前
中国顶级 GEO 优化专家孟庆涛:用 15 年积淀定义 2025 年 GEO 优化新标准
人工智能·搜索引擎·chatgpt·生成式引擎优化·geo优化
山海青风1 小时前
藏语自然语言处理入门 - 5 文本归类
人工智能·自然语言处理
十步杀一人_千里不留行1 小时前
和 AI 一起修 Bug 心得体会
人工智能·bug·ai编程
网安INF1 小时前
【论文阅读】-《Sparse and Imperceivable Adversarial Attacks》
论文阅读·人工智能·计算机视觉·网络安全·对抗攻击
yzx9910131 小时前
多模态分类:图文结合的智能识别与代码实战
人工智能·分类·数据挖掘
飞翔的佩奇2 小时前
【完整源码+数据集+部署教程】 小麦病害分割系统: yolov8-seg-dyhead
python·yolo·计算机视觉·数据集·yolov8·小麦病害分割系统
小蕾Java2 小时前
PyCharm2025.2 大更新,AI是亮点!
人工智能·python
通信小呆呆2 小时前
动态目标检测与跟踪:基于卡尔曼滤波的门限关联与可视化全流程
人工智能·目标检测·机器学习