OpenCV自适应直方图均衡CLAHE的clipLimit的含义及理解

2023-11-12

一、引言

关于自适应直方图均衡CLAHE的clipLimit的介绍,网上介绍的资料不多,可能对很多大佬来说,这个知识点很简单,但对于没这方面基础知识的,则不好理解,老猿今天结合OpenCV CLAHE源代码中对于clipLimit的赋值处理来解读一下。

二、CLAHE涉及clipLimit的关键源代码

CLAHE涉及clipLimit的关键源代码摘要如下:

CLAHE_Impl::CLAHE_Impl(double clipLimit, int tilesX, int tilesY) :
        clipLimit_(clipLimit), tilesX_(tilesX), tilesY_(tilesY)
    {
    }

    void CLAHE_Impl::apply(cv::InputArray _src, cv::OutputArray _dst)
    {
		...
        int histSize = _src.type() == CV_8UC1 ? 256 : 65536;
        ...
         if (_src.size().width % tilesX_ == 0 && _src.size().height % tilesY_ == 0)
        {
            tileSize = cv::Size(_src.size().width / tilesX_, _src.size().height / tilesY_);
            _srcForLut = _src;
        }
        ...
        const int tileSizeTotal = tileSize.area();
        ...
        int clipLimit = 0;
        if (clipLimit_ > 0.0)
        {
            clipLimit = static_cast<int>(clipLimit_ * tileSizeTotal / histSize);
            clipLimit = std::max(clipLimit, 1);
        }
        ...
    }
    void CLAHE_Impl::setClipLimit(double clipLimit)
    {
        clipLimit_ = clipLimit;
    }
    double CLAHE_Impl::getClipLimit() const
    {
        return clipLimit_;
    }
    ...

三、代码解读

以上代码就是OpenCV自适应直方图均衡CLAHE对应源代码中关于clipLimit赋值处理的相关代码,暂不涉及使用。可以看到,类设置方法中对clipLimit设置后,其值会保存在类私有变量clipLimit_ 中,最终进行apply自适应直方图均衡处理时,采用局部变量clipLimit = clipLimit_ * tileSizeTotal / histSize,并取clipLimit 和1中间的最大值。

可以看到,我们创建CLAHE对象或调用setClipLimit传入的clipLimit参数,最终被转换为了该值乘以tileSizeTotal (分块像素数)除以histSize(每个分块的直方图组数),这个转换是干什么呢?是得到每个分组的平均像素数量,如果灰度比较平均的话,每种级别(对应直方图分组数)的灰度所对应的像素数应该相等,当用该平均值乘以clipLimit,得到的是超过平均值clipLimit倍的像素数,这个值就是裁剪的限制值,对于超过这个值的分组就得裁剪,具体怎么裁剪我们在下篇博文再介绍。

四、小结

OpenCV自适应直方图均衡CLAHE中的参数clipLimit,是CLAHE的裁剪限制值,其值表示是各分块图像的直方图分组平均像素的倍数,当一个分组中的像素数超过这个倍数值乘以直方图分组平均像素的值(即限制值),则表示该分组对应灰度的像素数需要裁剪。

如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。

更多图像直方图处理的内容请参考《《数字图像处理》第三章学习总结感悟2:直方图处理》的介绍。

更多图像处理的内容请参考专栏《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》、《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》及《图像处理基础知识》的介绍。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV自适应直方图均衡CLAHE的clipLimit的含义及理解 的相关文章

随机推荐

  • 关于51/STC单片机中断优先级的调整

    来源 单片机简单程序 zhjysx的博客 CSDN博客https blog csdn net zhjysx category 11558658 html 目录 内容简述 理论 中断源类型 IP寄存器 LED程序 Proteus仿真图 外部中
  • Django基础入门⑭:Django表单实例【表单应用】获取全量书籍信息

    Django基础入门 Django 对象查询详解 分组聚合 Django表单实例 表单应用 编写模板层HTML页面 编写视图层逻辑代码 配置url路由模式映射 页面搜索效果展示 表单验证逻辑 获取全量书籍信息 实现添加书籍信息 个人简介 以
  • 总结numpy中的ndarray,非常齐全

    总结numpy中的ndarray 非常齐全 numpy Numerical Python 是一个开源的Python数据科学计算库 支持对N维数组和矩阵的操作 用于快速处理任意维度的数组 numpy库的功能非常聚焦 专注于做好 一件事 num
  • 1、树莓派4B设置热点,一步步细心来

    参考了 https www icode9 com content 4 683569 html https zhuanlan zhihu com p 101089893 一定要细心 1 安装 network manager sudo apt
  • gin 三.请求数据的映射

    数据解析绑定 基础解释 ShouldBindWith 请求数据映射示例 ShouldBindHeader 将请求头绑定到一个结构体或接口示例 MustBindWith 方式 基础解释 解释 例如后端获取调用方参数 通常会使用一个结构体 或一
  • 深度学习高遥感影像语义分割

    深度学习遥感影像语义分割 深度学习大家都知道 在计算机视觉领域取得了很大的成功 在遥感影像自动解译方面 同样带来了快速的发展 我在遥感影像自动解译领域 也做了一些微薄的工作 发表几篇论文 我一直关注遥感影像自动解译领域 在北京出差的这段时间
  • python--类与类之间的关系

    类和类之间的关系 在我们的世界中事物和事物之间总会有一些联系 在面向对象中 类和类之间也可以产生相关的关系 1 依赖关系 执行某个动作的时候 需要xxx来帮助你完成这个操作 此时的关系是最轻的 随时可以更换另外一个东西来完成此操作 clas
  • shell脚本:循环结束语句二

    shell脚本 循环结束语句二 二 循环结束语句 1 break 跳出循环 2 continue 3 while 4 until 条件不成立时 跳出循环 5 总结 三 操作演练 二 循环结束语句 1 break 跳出循环 1 作用 控制循环
  • 旧版OpenGL 与 新版OpenGL

    分割线 OpenGL3 0 3 0之前 所有OpenGL版本都与早期版本完全向后兼容 针对OpenGL 1 1编写的代码可以在OpenGL 2 1实现中很好地执行 3 0 引入了废弃functionality的想法 许多OpenGL函数被声
  • android高级UI之PathMeasure<一>--Path测量基础(nextContour、getPosTan、getMatrix、getSegment)

    前言 在上一次android高级UI之贝塞尔曲线 lt 下 gt 贝塞尔曲线运用 QQ消息气泡完成了对于贝塞尔曲线绘制的学习 今天准备学习UI绘制中经常会用到的跟Path相关的一些知识 也是很重要 但是你不去专门花时间去研究的话其实理解起来
  • Docker从入门到干事,看这一篇就够了,mysql索引优化面试题

    docker与虚拟机的对比 物理机 别墅 虚拟机 楼房 docker 酒店式公寓 docker三大概念 库 一个总的仓库 包含所有的镜像 使用时可以从库拉取镜像到本地 镜像 从库中拉取下来的应用 比如mysql 容器 镜像运行之后就是容器
  • transformer论文学习:Attention Is All You Need

    transformer论文学习 Attention Is All You Need 文章目录 transformer论文学习 Attention Is All You Need 整体结构速览 一 网络结构 二 注意力机制 参考资源 1 原论
  • P4学习——p4runtime

    文章目录 步骤一 运行不完整代码 步骤二 开始实现隧道转发 步骤三 运行解决方案 参考 https blog csdn net qq 33681684 article details 123646883 在这个练习中 我们将使用P4Runt
  • 实战篇-OpenSSL之AES加密算法-ECB模式

    本文属于 OpenSSL加密算法库使用系列教程 之一 欢迎查看其它文章 实战篇 OpenSSL之AES加密算法 ECB模式 一 AES简介 二 ECB模式 1 命令行操作 2 函数说明 3 编程实现 1 PKCS7填充方式 2 实现ECB模
  • 语音识别入门 --各个模型的整理

    语音识别入门 前期知识储备 结构图 语音特征提取 各个模型的尝试 ASRT DeepSpeechRecognition end2end chinese speech recognition Wenet whisper 语音纠错 TTS 文本
  • QT学习笔记6--信号之间的连接

    连接 仍然使用connect函数 但是和函数重载类似 需要用到函数指针 如下所示 void teacher teachersignals void teacher hungery void student studentslots void
  • 云计算的定义和特点

    在中国大数据专家委员会成立大会上 委员会主任怀进鹏院士用一个公式描述了大数据与云计算的关系 G f x x是大数据 f是云计算 G是我们的目标 也就是说 云计算是处理大数据的手段 大数据与云计算是一杖硬币的正反面 大数据是需求 云计算是手段
  • 去除图片中仅为背景(全0,全255)的图片

    在对遥感影像进行裁剪时 很多背景也会被裁剪出来作为一个图像 而背景值过多会影响网络性能 该代码主要去除全0图片 全255图片 仅含0和255的图片 import os import cv2 import numpy as np import
  • C++中STL用法超详细总结

    目录 1 什么是STL 2 STL内容介绍 2 1 容器 2 2 STL迭代器 2 3 算法 2 4 仿函数 2 4 1 概述 2 4 2 仿函数 functor 在编程语言中的应用 2 4 3 仿函数在STL中的定义 2 5 容器适配器
  • OpenCV自适应直方图均衡CLAHE的clipLimit的含义及理解

    一 引言 关于自适应直方图均衡CLAHE的clipLimit的介绍 网上介绍的资料不多 可能对很多大佬来说 这个知识点很简单 但对于没这方面基础知识的 则不好理解 老猿今天结合OpenCV CLAHE源代码中对于clipLimit的赋值处理