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

这篇具有很好参考价值的文章主要介绍了OpenCv:直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

直方图均衡化(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']=False

plt.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

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

场景2

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

以上就是关于直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)的代码及处理对比结果,希望能帮助到你,谢谢!文章来源地址https://www.toymoban.com/news/detail-436442.html

到了这里,关于OpenCv:直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • matlab几种直方图均衡化方法学习笔记(HE、AHE、CLAHE附代码)

    1、直方图: 是用来描述图像像素灰度级与该像素出现频率之间的关系,表征图像像素的分布情况。 2、直方图均衡化方法(HE) : 通过将图像的灰度直方图从较为集中的某灰度区间拉伸到全部灰度范围内均匀分布,以此来扩大图像像素灰度值的分布范围,从而达到改善图像

    2024年01月21日
    浏览(39)
  • Python Opencv实践 - 图像直方图均衡化

         

    2024年02月11日
    浏览(43)
  • OpenCV官方教程中文版 —— 直方图均衡化

    本小节我们要学习直方图均衡化的概念,以及如何使用它来改善图片的对比。 想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高。但是一副高质量的图像的像素值分布应该很

    2024年02月06日
    浏览(46)
  • OPENCV C++(十)gramm矫正+直方图均衡化

    两者都是只对单通道使用,对多通道的话 就需要分离通道处理再合并通道  两种方法,第一个要运算次数太多了,第二个只需要查表 伽马矫正函数,这里用第二种方法,且写法有点高级 就是建立了查找表,然后计算查找表,再遍历像素直接赋值查找表,就不用计算了。 这就

    2024年02月13日
    浏览(46)
  • OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影

    图像直方图就是统计图像中每个灰度值的个数,之后将灰度值作为横轴,以灰度值个数或者灰度值所占比率作为纵轴的统计图。通过直方图,可以看出图像中哪些灰度值数目较多,哪些较少,可以通过一定的方法将灰度值较为集中的区域映射到较为稀疏的区域,从而使图像在

    2024年01月16日
    浏览(53)
  • C#使用OpenCv(OpenCVSharp)图像直方图均衡化处理实例

    本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行直方图均衡化处理。 直方图均衡化原理 直方图均衡化(Histogram Equalization)是一种常用的图像增强技术,用于改善图像的对比度和亮度分布。它通过重新分配图像灰度级的像素值,使得图像的直方图在灰度范围内更加

    2024年02月07日
    浏览(97)
  • python的opencv操作记录(13)-增强之直方图均衡化

    前段时间忙活深度网络和android的东西去了,好久没讲讲传统图像处理了,这一篇继续来说说opencv中的传统图像处理部分——图像增强之直方图增强。 图像增强是一种基本的图像处理操作,简单的来说就是把图像变的更清晰,或者说感兴趣的某个区域需要变的更加清晰。 而清

    2024年02月04日
    浏览(46)
  • 【c++|opencv】二、灰度变换和空间滤波---2.直方图和均衡化

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=blog 图像直方图、直方图均衡化

    2024年02月06日
    浏览(47)
  • Python图像增强之直方图均衡化(全局直方图均衡、局部直方图均衡)

    图像增强是有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。 图像增强通常划分

    2024年02月13日
    浏览(38)
  • 直方图均衡化原理

    2024年02月09日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包