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

opencv- CLAHE 有限对比适应性直方图均衡化

CLAHE(Contrast Limited Adaptive Histogram Equalization)是一种对比度有限的自适应直方图均衡化技术,它能够提高图像的对比度而又避免过度增强噪声。

在OpenCV中,cv2.createCLAHE() 函数用于创建CLAHE对象,然后可以使用该对象的 apply() 方法来对图像进行CLAHE均衡化,它在局部区域内对图像进行直方图均衡化,从而提高图像对比度而避免噪声过度增强。

函数的基本语法如下:

clahe = cv2.createCLAHE(clipLimit, tileGridSize)

参数说明:

  • clipLimit: 对比度限制。对比度超过该值的像素将被截断,以防止过度增强对比度,默认为 40.0
  • tileGridSize: 图像被分割为多个小块(tiles),每个小块内进行局部直方图均衡化。tileGridSize 定义了每个小块的大小,默认为 (8, 8)。

创建CLAHE对象后,可以使用该对象的 apply() 方法对图像进行CLAHE均衡化。

示例代码:


import cv2import matplotlib.pyplot as plt# 读取灰度图像
img = cv2.imread(r"C:\Users\mzd\Desktop\opencv\2.jpg", cv2.IMREAD_GRAYSCALE)
# 创建CLAHE对象
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
# 进行CLAHE均衡化
clahe_img = clahe.apply(img)
# 绘制原始图像和CLAHE均衡化后的图像
plt.figure(figsize=(8, 4))
plt.subplot(1, 2, 1)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.subplot(1, 2, 2)
plt.imshow(clahe_img, cmap='gray')
plt.title('CLAHE Image')
plt.show()
# 显示原始图像和CLAHE均衡化后的图像
cv2.imshow('Original Image', img)
cv2.imshow('CLAHE Image', clahe_img)# 等待用户按下任意键
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

在这个示例中,通过调整 clipLimittileGridSize 参数,你可以控制CLAHE的效果。CLAHE通常在需要提高图像对比度的情况下使用,特别是在局部对比度不均匀的图像上。

CLAHE在局部区域内进行直方图均衡化,这有助于避免在全局均衡化中出现的过度增强噪声的问题。

相关文章:

  • 【LeetCode二叉树进阶题目】606. 根据二叉树创建字符串,102. 二叉树的层序遍历,107. 二叉树的层序遍历 II
  • docker network容器网络通信
  • Arrays类讲解
  • 使用bard分析视频内容
  • 3、点亮一个LED
  • Redis的性能,哨兵模式,集群,
  • Selenium 4.11 正式发布--再也不用手动更新chrome driver 了
  • 发挥云计算潜力:Amazon Lightsail 与 Amazon EC2 的综述
  • Spring Boot单元测试
  • Qt 软件调试(一) Log日志调试
  • 腾讯云 小程序 SDK对象存储 COS使用记录,原生小程序写法。
  • 初学vue3与ts:路由跳转带参数
  • 【Spark源码分析】事件总线机制分析
  • 【自动化测试】拍照与闪光灯联动测试
  • 大数据Doris(二十八):Routine Load查看和修改作业
  • 深入了解以太坊
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • nginx 负载服务器优化
  • Objective-C 中关联引用的概念
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • uva 10370 Above Average
  • Vue 动态创建 component
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端路由实现-history
  • 强力优化Rancher k8s中国区的使用体验
  • 一份游戏开发学习路线
  • 一些关于Rust在2019年的思考
  • 如何正确理解,内页权重高于首页?
  • ​Spring Boot 分片上传文件
  • ​学习一下,什么是预包装食品?​
  • ​业务双活的数据切换思路设计(下)
  • #etcd#安装时出错
  • #控制台大学课堂点名问题_课堂随机点名
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (3)选择元素——(17)练习(Exercises)
  • (第一天)包装对象、作用域、创建对象
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (理论篇)httpmoudle和httphandler一览
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • .net 微服务 服务保护 自动重试 Polly
  • .Net 应用中使用dot trace进行性能诊断
  • @ConditionalOnProperty注解使用说明
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • []FET-430SIM508 研究日志 11.3.31
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [CSS]CSS 字体属性
  • [c语言]小课堂 day2
  • [E链表] lc83. 删除排序链表中的重复元素(单链表+模拟)
  • [js]- 两个对象的合并(Object.assign)