当前位置: 首页 > article >正文

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.lryc.cn/news/2395271.html

相关文章:

  • 华为OD机试真题——矩形绘制(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 通义开源视觉感知多模态 RAG 推理框架 VRAG-RL:开启多模态推理新时代
  • 爬虫入门:从基础到实战全攻略
  • qemu安装risc-V 64
  • JDBC连不上mysql:Unable to load authentication plugin ‘caching_sha2_password‘.
  • AsyncIOScheduler与BackgroundScheduler的线程模型对比
  • Python+MongoDb使用手册(精简)
  • 前端面经 协商缓存和强缓存
  • MacOS安装Docker Desktop并汉化
  • Centos系统搭建主备DNS服务
  • VUE项目部署IIS服务器手册
  • 使用 HTML + JavaScript 实现在线考试系统
  • 谷歌工作自动化——仙盟大衍灵机——仙盟创梦IDE
  • 嵌入式(C语言篇)Day13
  • Oracle 的V$LOCK 视图详解
  • 秒杀系统—1.架构设计和方案简介
  • 基于FashionMnist数据集的自监督学习(生成式自监督学习AE算法)
  • 从监控到告警:Prometheus+Grafana+Alertmanager+告警通知服务全链路落地实践
  • AUTOSAR图解==>AUTOSAR_EXP_AIADASAndVMC
  • WPF【09】WPF基础入门 (三层架构与MVC架构)
  • macOS 风格番茄计时器:设计与实现详解
  • 中文NLP with fastai - Fastai Part4
  • oracle goldengate实现远程抽取postgresql 到 postgresql的实时同步【绝对无坑版,亲测流程验证】
  • 【MYSQL】索引篇(一)
  • ISCC-2025-web-wp
  • 鸿蒙分辨率
  • @Docker Compose 部署 Pushgateway
  • 我们来学mysql -- 从库重启,是否同步主库数据
  • King3399(ubuntu文件系统)iic(i2c)功能测试
  • 德思特新闻 | 德思特与es:saar正式建立合作伙伴关系