总结了使用Python OpenCv处理图像直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)的方法。

目录

  • 直方图均衡化(HE)
  • 自适应直方图均衡化(AHE)
  • 限制对比度自适应直方图均衡化(CLAHE)
  • 代码
  • 测试结果
    • 场景1
    • 场景2

直方图均衡化(HE)

HE直方图增强,大家都不陌生,是一种比较古老的对比度增强算法。

通过equalizeHist()可以实现图像的直方图均衡,它是一种全局直方图均衡,考量的对象是整幅图像。

接口形式:

cv2.equalizeHist(src[, dst]) ->dst
参数含义:
src:输入图像,8bit单通道;
dst:均衡后的输出图像,类型同src;

自适应直方图均衡化(AHE)

自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术。和普通的直方图均衡算法不同,AHE算法通过计算图像的局部直方图,然后重新分布亮度来改变图像对比度。因此,该算法更适合于改进图像的局部对比度以及获得更多的图像细节。缺点是有一个很大的缺陷,就是有时候会过度放大图像中相同区域的噪声。

限制对比度自适应直方图均衡化(CLAHE)

限制对比度的直方图均衡化(CLAHE)的处理方式是先为直方图设置一个阈值,该阈值为限制对比度值,超过该阈值的值会被裁剪,然后裁剪的部分会均匀的分布到其他值上,这样就重构了直方图,接下来就可以用重构后的直方图来进行接下来的均衡化操作了。

CLAHE是对比度抑制自适应直方图均衡(Contrast Limited Adaptive Histogram Equalization)的简称,不同于普通的直方图均衡,它是一种局部直方图均衡方法。

调用接口分两步,先创建实例,再调用apply()方法:

cv2.createCLAHE([, clipLimit[, tileGridSize]]) ->retval
dst=retval.apply(src)
参数含义:
clipLimit:对比对限制阈值,默认为40;
tileGridSize:直方图均衡的栅格尺寸,输入图像将会按照该尺寸分隔后进行局部直方图均衡,默认是8×8大小;
src:输入图像,8bit单通道;
dst:均衡后的输出图像,类型同src;

代码

## 直方图均衡化处理(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化处理
from skimage import exposure
import cv2
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
file_to_open = './datasets/INF2Visible_Face_NoGlasses_Original/testA/(2).jpg'  ## 导入图像路径
img = cv2.imread(file_to_open,cv2.IMREAD_GRAYSCALE)
print(type(img))## 直方图均衡化处理(HE)
img_HE = cv2.equalizeHist(img)## 自适应直方图均衡化处理(AHE)
img1 = exposure.equalize_adapthist(img)
img_AHE = Image.fromarray(np.uint8(img1 * 255))
img_AHE = np.array(img_AHE)    #PIL.Image.Image转numpy.ndarry## 限制对比度自适应直方图均衡化处理(CLAHE),也叫局部直方图均衡化处理
clahe = cv2.createCLAHE(clipLimit=2, tileGridSize=(10, 10))
img_CLAHE = clahe.apply(img)   # 将灰度图像和局部直方图相关联, 把直方图均衡化应用到灰度图plt.rcParams['font.sans-serif']=['SimHei']       #坐标图像中显示中文
plt.rcParams['axes.unicode_minus']=Falseplt.figure(figsize=(20,15))    #设置大小
plt.subplot(241)
plt.imshow(img,cmap=plt.cm.gray,vmin=0,vmax=255),plt.axis("off"),plt.title("原始图像")
plt.subplot(245)
plt.hist(img.ravel(), 256), plt.title('原始图像直方图')plt.subplot(242)
plt.imshow(img_HE,cmap=plt.cm.gray,vmin=0,vmax=255),plt.axis("off"),plt.title("直方图均衡化处理")
plt.subplot(246)
plt.hist(img_HE.ravel(), 256), plt.title('直方图均衡化处理后直方图')plt.subplot(243)
plt.imshow(img_AHE,cmap=plt.cm.gray,vmin=0,vmax=255),plt.axis("off"),plt.title("自适应直方图均衡化处理")
plt.subplot(247)
plt.hist(img_AHE.ravel(), 256), plt.title('自适应直方图均衡化处理后直方图')plt.subplot(244)
plt.imshow(img_CLAHE,cmap=plt.cm.gray,vmin=0,vmax=255),plt.axis("off"),plt.title("限制对比度自适应直方图均衡化处理")
plt.subplot(248)
plt.hist(img_CLAHE.ravel(), 256), plt.title('限制对比度自适应直方图均衡化处理后直方图')plt.show()

测试结果

运行后的对比结果见下:

场景1

场景2

以上就是关于直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)的代码及处理对比结果,希望能帮助到你,谢谢!

OpenCv:直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)相关推荐

  1. 图像增强—自适应直方图均衡化(AHE)-限制对比度自适应直方图均衡(CLAHE)

    一.自适应直方图均衡化(Adaptive histgram equalization/AHE) 1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术.和普通的直方图均衡算 ...

  2. c++ 绘制函数图像_【图像增强】CLAHE 限制对比度自适应直方图均衡化

    文章来自:微信公众号[机器学习炼丹术]. 文章目录: 1 基本概述 2 竞赛中的CLAHE实现 3 openCV绘制直方图 4 对比度Contrast 5 Contrast Stretching 6 ...

  3. 限制对比度自适应直方图均衡化

    一.自适应直方图均衡化(Adaptive histgram equalization/AHE) 1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术.和普通的直方图均衡算 ...

  4. clahe(限制对比度自适应直方图均衡化)

    限制对比度自适应直方图均衡化 直方图均衡化(HE) 数学原理: AHE(自适应直方图均衡) 实现原理: CLAHE( 限制对比度自适应直方图均衡化) 原理: 补充 ) 在讨论clahe(限制对比度自适 ...

  5. 限制对比度自适应直方图均衡化算法原理、实现及效果

    一.自适应直方图均衡化(Adaptive histgram equalization/AHE) 1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术.和普通的直方图均衡算 ...

  6. 在OpenCV里实现限制对比度的直方图均衡化

    下面将要介绍功能强大.用途广泛.影响深远的对比度有限的自适应直方图均衡(CLAHE,Contrast Limited Adaptive Histogram Equalization)算法.尽管最初它仅 ...

  7. OpenCV —— 阈值分割(直方图技术法,熵算法,Otsu,自适应阈值算法)

    阈值分割 1. 全局阈值分割 直方图技术法 熵算法 Otsu算法 2. 局部阈值分割 自适应阈值 阈值的分割的核心就是如何选取阈值,选取正确的阈值时分割成功的关键.可以使用手动设置阈值,也可以采用直方 ...

  8. seaborn可视化直方图(histogram)、添加密度曲线、并自定义直方图中每一个条形的条形框的色彩(edgecolor)

    seaborn可视化直方图(histogram).添加密度曲线.并自定义直方图中每一个条形的条形框的色彩(edgecolor) 目录

  9. python绘制灰度图片直方图-用python简单处理图片(5):图像直方图

    我们先来看两个函数reshape和flatten: 假设我们先生成一个一维数组: vec=np.arange(15)print vec 显示为: [ 0 1 2 3 4 5 6 7 8 9 10 11 ...

最新文章

  1. asp实现301跳转的方法
  2. async python两个_【Python】python中实现多进程与多线程
  3. 【杂谈】提升写代码效率不得不做的三件事
  4. mysql identifier name is too long_ORA-00972: identifier is too long 问题处理
  5. crx文件里面的html文件,javascript – Chrome扩展程序:在crx文件中打开html,标签上没有图标...
  6. 小白R语言数据可视化进阶练习一
  7. 效率提升总结-Unity 项目规范文档 【建议收藏】
  8. IDEA2019开发WebService实例
  9. 批量将多个 Word 文档合并成一个 Word 文件
  10. [转载]Windows系统的错误报告保存在哪个文件夹里?
  11. python绘制三维动态柱状图-使用pyecharts模块
  12. 【luminate primordial】苏州之行
  13. 软件开发之计划阶段: ”声控打鼓”游戏的”用户/场景”分析
  14. 特斯拉降价也无法阻挡国内新能源汽车厂商前进的步伐
  15. 在学习thymeleaf中,给function 方法传Controller传递过来的参数,报错:Uncaught SyntaxError: missing ) after argument list
  16. video-play使用,vue2
  17. iOS代码实现布局(三)—用CocoaPods导入第三方库Masonry
  18. Linux系统中nacos下载安装
  19. 计算机配置的调研,关于电脑配置的调研报告
  20. php中文数字转阿拉伯数字,中文数字转阿拉伯数字

热门文章

  1. Go Test基本机制和实践规范
  2. 人工智能研究综述与协同智能研究展望(简纲)
  3. 佳明 Vivomove Trend 智能手表 评测 佳明 Vivomove Trend 智能手表参数配置
  4. Android实现圆形头像效果
  5. 计算机毕业论文java毕业设计选题源代码JAVAWEB金融借贷系统|官网网站[包运行成功]
  6. 微信小程序——平台的搭建
  7. 【吴刚】UI拟物图标设计初级入门标准教程-吴刚-专题视频课程
  8. 动态规划之经典的鸡蛋坠楼问题详解
  9. 百度飞桨小白逆袭大神被“虐”过程大公开--青春有你2 数据分析
  10. R语言通过在函数中设置na.rm=TRUE参数、在计算和分析中删除缺失值获得有效的计算结果(Excluding Missing Values from Analyses)