精华内容
下载资源
问答
  • python实现直方图均衡化 图像灰度变换中一个非常有用的例子就是直方图均衡化直方图均衡化是指将一幅图像的灰度直方图变平,使变换后的图像中每个灰度值的分布概率都相同。在对图像做进一步处理之前,直方图均衡化...
  • PythonOpenCV直方图均衡化以提高图像对比度

    千次阅读 多人点赞 2021-07-17 16:34:53
    这篇博客将介绍直方图均衡化以及俩种经典的方法:(全局 & 自适应直方图均衡化); 均衡作用:1)可以提升图像的对比度;2)使所有图像具有相同的照明条件;

    这篇博客将介绍直方图均衡化(全局 & 自适应直方图均衡化),以及如何使用它来提高图像的对比度。

    • 均衡化是指将亮区的输入像素映射到全局的输出像素。

    • 均衡化作用:1)可以提升图像的对比度;2)使所有图像具有相同的照明条件;

    1. 效果图

    原始图如下:
    在这里插入图片描述
    全局均衡化效果图如下:
    红色线:直方图效果图(可以看到像素大多分布在靠近0以及200左右,暗色和亮色基本均衡,中间值的像素要少一些,对比原始图也是一致的)
    绿色线:全局均衡化后结果(中间像素也有了对应的分布)
    在这里插入图片描述
    全局直方图均衡化优化后效果图如下:
    使用掩码数组去掉了0像素,会发现绿色线均衡后更加平均了
    在这里插入图片描述
    应用到原始图上也可以看到像素分布更均衡了;
    在这里插入图片描述
    自适应直方图均衡化效果图如下:
    可以看到自适应直方图均衡化的效果要比全局直方图均衡化效果图好很多.
    在这里插入图片描述

    2. 原理

    2.1 直方图均衡化应用

    提升对比度 & 使所有图像具有相同的照明条件;

    • 即使图像是较暗的图像(而不是较亮的图像),均衡后也会得到几乎相同的图像。因此它被用作“参考工具”以使所有图像具有相同的照明条件。 例如,在人脸识别中,在训练人脸数据之前,对人脸图像进行直方图均衡化处理,使其具有相同的光照条件。

    • 当图像的直方图仅限于某一特定区域时,直方图均衡化是很好的。如果直方图覆盖了一个很大的区域,即同时存在亮像素和暗像素,那么它在强度变化很大的地方就不起作用。

    2.2 直方图均衡化分类

    • 全局直方图均衡化
    • 对比度受限自适应直方图均衡化(CLAHE Contrast Limited Adaptive Histogram Equalization),简称自适应直方图均衡化

    图像的全局对比度不一定能取得很好的结果,自适应直方图均衡化是它的优化版本。自适应直方图均衡化会把图像分成称为“tiles”的小块(在OpenCV中,tileSize默认为8x8)。然后像全局直方图均衡化一样对每个块进行直方图均衡。

    因此在一个很小的区域,直方图会局限在一个很小的区域(除非有噪声)。如果有噪音,它就会被放大。为了避免这种情况,应用了对比度限制。如果任何直方图单元高于指定的对比度限制(OpenCV中默认为40),则在应用直方图均衡化之前,这些像素将被剪裁并均匀分布到其他单元。均衡后,为了消除瓷砖边界中的伪影,应用双线性插值。

    3. 源代码

    # 直方图均衡化(全局直方图均衡化 VS CLAHE对比度受限自适应直方图均衡化)
    
    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    
    img = cv2.imread('ym2.jpg', 0)
    cv2.imshow("origin", img)
    
    # 法一:numpy计算直方图并均衡化
    hist, bins = np.histogram(img.flatten(), 256, [0, 256])
    
    cdf = hist.cumsum()
    cdf_normalized = cdf * hist.max() / cdf.max()
    
    # 红色线:直方图像素分布情况,绿色线全局直方图均衡化结果图
    plt.plot(cdf_normalized, color='b')
    plt.hist(img.flatten(), 256, [0, 256], color='r')
    plt.xlim([0, 256])
    plt.legend(('cdf', 'histogram'), loc='upper left')
    plt.show()
    
    # 引入掩码数组,优化均衡化直方图
    cdf_m = np.ma.masked_equal(cdf, 0)  # 标识0为无效像素值不参与计算
    cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min())
    cdf = np.ma.filled(cdf_m, 0).astype('uint8')
    img2 = cdf[img]
    plt.plot(img2, color='b')
    plt.hist(img.flatten(), 256, [0, 256], color='r')
    plt.xlim([0, 256])
    plt.legend(('cdf2', 'histogram'), loc='upper left')
    plt.show()
    
    # # 法二:opencv计算直方图并均衡化
    img = cv2.imread('ym2.jpg', 0)
    equ = cv2.equalizeHist(img)
    res = np.hstack((img, equ))  # 并排显示图像
    # cv2.imwrite('ym2_equ.jpg', res)
    cv2.imshow("grayimg VS hist_equalization", res)
    cv2.waitKey(0)
    
    # 自适应直方图均衡化
    img = cv2.imread('ym2.jpg', 0)
    # 创建自适应直方图均衡化对象
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    cl1 = clahe.apply(img)
    cv2.imwrite('ym2_clahe_2.jpg', np.hstack([img,cl1]))
    cv2.imshow("grayimg VS clahe", np.hstack([img, cl1]))
    cv2.waitKey(0)
    

    参考

    展开全文
  • 本文介绍了python OpenCV学习笔记之直方图均衡化,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/d5/daf/tutorial_py_histogram_equalization.html 考虑一个图像,其像素值仅限制在特定的值...
  • python+opencv直方图均衡化

    万次阅读 多人点赞 2018-08-13 16:22:33
    前言 直方图均衡化的三种情况,分别是: - 灰度图像直方图均衡化 ...对直方图均衡化主要使用opencv提供的一个equalizeHist()方法. import cv2 import numpy as np img = cv2.imread("image0.jp...

    前言

    直方图均衡化的三种情况,分别是:
    - 灰度图像直方图均衡化
    - 彩色图像直方图均衡化
    - YUV 直方图均衡化
    插入原图:
    原图

    灰度图像直方图均衡化

    对直方图均衡化主要使用opencv提供的一个equalizeHist()方法.

    import cv2
    import numpy as np
    
    img = cv2.imread("image0.jpg", 1)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow("src", gray)
    
    dst = cv2.equalizeHist(gray)
    cv2.imshow("dst", dst)
    
    cv2.waitKey(0)

    将灰度图像作为参数传进equalizeHist()方法即可,效果如下:
    灰度图像直方图均衡化

    彩色图像直方图均衡化

    彩色图像的直方图均衡化和灰度图像略有不同,需要将彩色图像先用split()方法,将三个通道拆分,然后分别进行均衡化.最后使用merge()方法将均衡化之后的三个通道进行合并.操作如下:

    import cv2
    import numpy as np
    
    img = cv2.imread("image0.jpg", 1)
    cv2.imshow("src", img)
    
    # 彩色图像均衡化,需要分解通道 对每一个通道均衡化
    (b, g, r) = cv2.split(img)
    bH = cv2.equalizeHist(b)
    gH = cv2.equalizeHist(g)
    rH = cv2.equalizeHist(r)
    # 合并每一个通道
    result = cv2.merge((bH, gH, rH))
    cv2.imshow("dst", result)
    
    cv2.waitKey(0)

    均衡化之后的效果如下:
    彩色图片直方图均衡化

    YUV 直方图均衡化

    import cv2
    import numpy as np
    img = cv2.imread("image0.jpg", 1)
    
    imgYUV = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
    cv2.imshow("src", img)
    
    channelsYUV = cv2.split(imgYUV)
    channelsYUV[0] = cv2.equalizeHist(channelsYUV[0])
    
    channels = cv2.merge(channelsYUV)
    result = cv2.cvtColor(channels, cv2.COLOR_YCrCb2BGR)
    cv2.imshow("dst", result)
    
    cv2.waitKey(0)

    均衡化之后效果如下:
    yuv均衡化

    展开全文
  • OpenCV 直方图均衡化

    2020-09-07 00:07:23
    什么是直方图均衡化?2.直方图均衡化有什么用?3.直方图均衡化的优缺点3.如何实现直方图均衡化?感谢观看! 声明 声明:本系列博客是我在学习OpenCV官方教程中文版(For Python)(段力辉 译)所做的笔记。所以,其中的...

    声明

    声明:本系列博客是我在学习OpenCV官方教程中文版(For Python)(段力辉 译)所做的笔记。所以,其中的绝大部分内容引自这本书,博客中的代码也是其配套所附带的代码或书中的代码,侵删。其中部分代码可能会因需要而改动。在本系列博客中,其中包含书中的引用,也包括我自己对知识的理解,思考和总结。本系列博客的目的主要有两个,一个是可以作为我自己的学习笔记,时常复习巩固。第二个是可以为想学习python下的opencv 3 相关知识的朋友提供一些参考。

    正文

    1.什么是直方图均衡化?

    直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。

    2.直方图均衡化有什么用?

    • 这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。
    • 直方图均衡化在很多时候都很有用,例如,脸部识别,在训练分类器前,训练集的所有图片都要先进行直方图均衡化从而使它们达到相同的亮度条件。

    3.直方图均衡化的优缺点

    • 优点:这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。
    • 缺点:它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度。

    3.如何实现直方图均衡化?

    直方图均衡化要做的事情就是,当一副图像中的大多是像素点的像素值都集中在一个像素值范围之内时,例如,如果一幅图片整体很亮,那所有的像素值应该都会很高。但是一副高质量的图像的像素值分布应该很广泛。所以你应该把它的直方图做一个横向拉伸(如下图),这个横向拉伸的过程就是直方图均衡化要做的要做的事情,通常情况下这种操作会改善图像的对比度。
    在这里插入图片描述

    OpenCV中的直方图均衡化:

    3.1 cv2.equalizeHist()

    OpenCV中的直方图均衡化函数为cv2.equalizeHist(),这个函数的输入图片仅仅是一副灰度图像,输出结果是直方图均衡化之后的图像。来看看代码:

    import cv2
    import numpy as np
    
    img = cv2.imread('jianzhu2.jpg',0)
    equ = cv2.equalizeHist(img)
    res = np.hstack((img,equ))
    
    cv2.imwrite('jianzhu2_1.png',res)
    
    

    这是原图:
    在这里插入图片描述
    这是运行结果:
    在这里插入图片描述

    当直方图中的数据集中在某一个灰度值范围内时,直方图均衡化很有用。

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

    我们使用上边这个函数做的直方图均衡化会改变整个图像的对比度,但是在很多情况下,这样做的效果并不好。例如,下图分别是输入图像和进行直方图均衡化之后的输出图像。
    在这里插入图片描述

    的确在进行完直方图均衡化之后,图片背景的对比度被改变了。但是你再对比一下两幅图像中雕像的面图,由于太亮我们丢失了很多信息。造成这种结果的根本原因在于这幅图像的直方图并不是集中在某一个区域(如果不明白,试着画出它的直方图,你就明白了)。

    为了解决这个问题,我们需要使用自适应的直方图均衡化。这种情况下,整幅图像会被分成很多小块,这些小块被称为“tiles”(在 OpenCV 中 tiles 的大小默认是 8x8),然后再对每一个小块分别进行直方图均衡化(跟前面类似)。

    所以在每一个的区域中,直方图会集中在某一个小的区域中(除非有噪声干扰)。如果有噪声的话,噪声会被放大。为了避免这种情况的出现要使用对比度限制。对于每个小块来说,如果直方图中的 bin 超过对比度的上限的话,就把其中的像素点均匀分散到其他 bins 中,然后在进行直方图均衡化。最后,为了去除每一个小块之间“人造的”(由于算法造成)边界,再使用双线性差值,对小块进行缝合。

    下面的代码显示了如何使用OpenCV中的CLAHE。
    这次同样使用刚那张图片,我们可以清晰地看到这两种不同方法的差别。

    import cv2
    import numpy as np
    
    img = cv2.imread('jianzhu2.jpg',0)
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
    cl1 = clahe.apply(img)
    cv2.imwrite('jianzhu2_2.jpg',cl1)

    运行结果:
    在这里插入图片描述
    可以看到,在很亮的地方有了很大的改善。

    这个方法的确效果很好,以下是更多的例子:
    这是原图:
    在这里插入图片描述
    经过CLAHE 有限对比适应性直方图均衡化后:在这里插入图片描述

    这是原图:
    在这里插入图片描述
    经过CLAHE 有限对比适应性直方图均衡化后:
    在这里插入图片描述
    效果真的很棒!

    感谢观看!

    如有错误,欢迎批评指正!

    展开全文
  • 在本教程中,您将学习使用OpenCV实现直方图均衡化和自适应直方图均衡化(CLAHE)。 直方图均衡化是一种基本的图像处理技术,通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域在...

    在本教程中,您将学习使用OpenCV实现直方图均衡化和自适应直方图均衡化(CLAHE)。

    直方图均衡化是一种基本的图像处理技术,通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域在输出图像中获得更高的对比度。

    本质上,直方图均衡化的工作原理是:

    • 1.计算图像像素强度的直方图
    • 2.均匀展开并分布最频繁的像素值(即直方图中计数最大的像素值)
    • 3.给出累积分布函数(CDF)的线性趋势

    应用直方图均衡化的结果是得到一幅全局对比度更高的图像。

    我们可以进一步改进直方图均衡化,采用一种称为对比度有限自适应直方图均衡化(CLAHE)的算法,从而获得更高质量的输出图像。

    除了摄影师使用直方图均衡化来校正曝光不足/过曝光的图像外,直方图均衡化使用最广泛的是在医疗领域。

    你通常会看到直方图均衡化应用于x光扫描和CT扫描,以提高x光片的对比度。这样做可以帮助医生和放射科医生更好地解释扫描结果,做出准确的诊断。

    在本教程结束时,您将能够成功地使用OpenCV将基本直方图均衡化和自适应直方图均衡化应用到图像。

    1.OpenCV直方图均衡化和自适应直方图均衡化(CLAHE)

    在本教程的第一部分,我们将讨论什么是直方图均衡化,以及如何使用OpenCV应用直方图均衡化。
    代码地址:

    链接:https://pan.baidu.com/s/19V6s7Ten6K9FfBpJTbZhAQ 
    提取码:123a
    

    我们将实现两个Python脚本:

    • simple_equalization.py:使用OpenCV的cv2.equalizeHist()函数执行基本直方图均衡。
    • adaptive_equalization.py:使用OpenCV的cv2.createCLAHE()方法执行自适应直方图均衡化。

    2.什么是直方图均衡化?

    直方图均衡化是一种基本的图像处理技术,可以提高图像的整体对比度。

    应用直方图均衡化首先计算输入灰度/单通道图像中像素强度的直方图:
    在这里插入图片描述
    左 : 我 们 的 原 始 输 入 灰 度 图 像 。 右 : 计 算 灰 度 图 像 的 直 方 图 。 左:我们的原始输入灰度图像。右:计算灰度图像的直方图。
    请注意,我们的直方图有许多峰值,这表明有很多像素被归入到这些各自的bin中。使用直方图均衡化,我们的目标是将这些像素分散到没有太多像素的bin中。

    从数学上来说,这意味着我们试图将线性趋势应用到累积分布函数(CDF)中:
    在这里插入图片描述
    直 方 图 均 衡 化 目 标 使 输 出 图 像 具 有 线 性 C D F 直方图均衡化目标使输出图像具有线性CDF 使线CDF
    在这里插入图片描述
    左 : 应 用 直 方 图 均 衡 化 之 前 的 原 始 输 入 图 像 。 右 : 应 用 直 方 图 均 衡 化 后 的 输 出 图 像 。 左:应用直方图均衡化之前的原始输入图像。右:应用直方图均衡化后的输出图像。
    注意输入图像的对比度是如何显著提高的,但代价是也提高了输入图像中的噪声的对比度。

    这就提出了一个问题:是否有可能在不增加噪声的同时提高图像对比度?
    答案是“是的”,你只需要应用自适应直方图均衡化。

    通过自适应直方图均衡化,我们将输入图像划分为M × N网格。然后我们对网格中的每个单元进行均衡处理,从而获得更高质量的输出图像:

    在这里插入图片描述
    左 : 基 本 直 方 图 均 衡 。 右 : 自 适 应 直 方 图 均 衡 化 左:基本直方图均衡。右:自适应直方图均衡化
    缺点是,自适应直方图均衡化的计算复杂度更高(但考虑到现代硬件,这两种实现仍然相当快)。

    3.如何使用OpenCV进行直方图均衡化?

    OpenCV 包括通过以下两个函数实现基本直方图均衡和自适应直方图均衡:

    • cv2.equalizeHist
    • cv2.createCLAHE

    应用cv2.equalizeHist()函数非常简单,只需将图像转换为灰度,然后调用cv2.equalizeHist即可:

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    equalized = cv2.equalizeHist(gray)
    

    实现自适应直方图均衡化要求:

    • 1.将输入图像转换为灰度/从中提取单个通道
    • 2.使用cv2.createCLAHE实例化CLAHE算法
    • 3.在CLAHE对象上调用.apply()方法来应用直方图均衡化

    这比听起来容易得多,只需要几行代码:

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    equalized = clahe.apply(gray)
    

    注意,我们为cv2.createCLAHE提供了两个参数:

    • clipLimit:这是对比度限制的阈值
    • tileGridSize:将输入图像划分为M × N块,然后对每个局部块应用直方图均衡化

    4.项目结构

    在我们使用OpenCV实现直方图均衡化之前,让我们先回顾一下我们的项目目录结构。
    在这里插入图片描述

    5.代码实现

    5.1 使用OpenCV实现标准直方图均衡化

    #   用法
    # python simple_equalization.py --image images/moon.png
    
    # 导入必要的库
    import argparse
    import cv2
    
    # 构造参数解析器并解析参数
    ap = argparse.ArgumentParser()
    ap.add_argument("-i", "--image", type=str, required=True, help="Path to the input image")
    args = vars(ap.parse_args())
    
    # 从磁盘加载输入图像并将其转换为灰度
    print("[INFO] Loading input image...")
    image = cv2.imread(args["image"])
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # 运用直方图均衡化
    print("[INFO] Performing histogram equalization...")
    equalized = cv2.equalizeHist(gray)
    
    # 显示原始灰度图像和均衡后的图像
    cv2.imshow("Input", gray)
    cv2.imshow("Histogram Equalization", equalized)
    cv2.waitKey(0)
    

    在这里插入图片描述

    5.2代码解析

    首先导入我们需要的 Python 包,解析我们的命令行参数。这里我们只需要一个参数–image,它是磁盘上输入图像的路径,我们希望在这里应用直方图均衡化。

    解析完命令行参数后,我们可以继续下一步:从磁盘加载图像,将图像从RGB转换为灰度。使用cv2.equalizeHist执行基本的直方图均衡化。我们必须传入的唯一必需参数是灰度/单通道图像。

    注:使用OpenCV进行直方图均衡化时,必须提供灰度/单通道图像。如果我们试图传递一个多通道图像,OpenCV将抛出一个错误。要在多通道图像上执行直方图均衡化,您需要(1)将图像分割成各自的通道,(2)均衡每个通道,(3)合并通道。

    5.3 使用OpenCV实现自适应直方图均衡

    #   用法
    # python adaptive_equalization.py --image images/boston.png
    # 导入必要的库
    import argparse
    import cv2
    
    # 构造参数解析器并解析参数
    ap = argparse.ArgumentParser()
    ap.add_argument("-i", "--image", type=str, required=True, help="Path to the input image")
    ap.add_argument("-c", "--clip", type=float, default=2.0, help="Threshold for contrast limiting")
    ap.add_argument("-t", "--tile", type=int, default=8,
                    help="Tile grid size -- divides image into tile x tile cells")
    args = vars(ap.parse_args())
    
    # 从磁盘加载输入图像并将其转换为灰度
    print("[INFO] Loading input image...")
    image = cv2.imread(args["image"])
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # 应用CLAHE (Contrast Limited Adaptive Histogram Equalization)
    print("[INFO] Applying CLAHE...")
    clahe = cv2.createCLAHE(clipLimit=args["clip"], tileGridSize=(args["tile"], args["tile"]))
    equalized = clahe.apply(gray)
    
    # 显示原始灰度图像和CLAHE输出图像
    cv2.imshow("Input", gray)
    cv2.imshow("CLAHE", equalized)
    cv2.waitKey(0)
    

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

    5.4代码解析

    自适应直方图均衡化比简单直方图均衡化的计算代价高一些,但可以产生更好的结果。但是不要相信我的话——你应该自己看看结果。

    我们有三个命令行参数,其中一个是必需的,二个是可选的(但在使用CLHE时很有用):

    • --image:磁盘上输入图像的路径,我们希望在其中应用直方图均衡化。
    • --clip:对比度限制的阈值。您通常希望将此值保留在 2-5 的范围内。如果您将该值设置得太大,那么实际上您所做的是最大化局部对比度,这反过来又会最大化噪声(这与您想要的相反),尽量保持该值尽可能低。
    • --tile:CLAHE 的网格大小。从概念上讲,我们在这里所做的是将输入图像划分为 tile x tile 单元格,然后对每个单元格应用直方图均衡(使用 CLAHE 提供的额外功能)。

    从磁盘加载输入图像并将其转换为灰度,就像我们对基本直方图均衡化所做的那样。通过cv2.createCLAHE()函数初始化CLHE对象。这里,我们提供了clipLimittileGridSize,它们是通过命令行参数提供的。

    调用.apply()方法将自适应直方图均衡化应用于灰度图像。

    6.直方图均衡化的建议

    在构建自己的图像处理管道并发现应该应用直方图均衡化时,我建议从使用 cv2.equalizeHist 的简单直方图均衡化开始。但是如果你发现结果很差,反而增加了输入图像的噪声,那么你应该尝试通过 cv2.createCLAHE 使用自适应直方图均衡化。

    参考目录

    https://www.pyimagesearch.com/2021/02/01/opencv-histogram-equalization-and-adaptive-histogram-equalization-clahe/

    展开全文
  • OpenCV - 直方图均衡化Python实现)

    千次阅读 2019-06-25 07:04:16
    直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。 直方图均衡化 import cv2 import numpy as ...
  • 1. 全局直方图均衡化 cv2.equalizeHist(src, dst=None)函数只能处理单通道的数据,src为输入图像对象矩阵,必须为单通道的uint8类型的矩阵数据。直方图均衡化可以看作是图像增强的一个手段,示例代码如下: import cv...
  • OpenCV:利用python来实现图像的直方图均衡化

    千次阅读 多人点赞 2020-10-17 21:09:31
    直方图均衡化3.源代码实现直方图均衡化 1.直方图 直方图: (1) 图像中不同像素等级出现的次数 (2) 图像中具有不同等级的像素关于总像素数目的比值。 我们使用cv2.calcHist方法得到直方图 cv2.calcHist(images, ...
  • opencv-python中有一个函数cv.equalizeHist(single_channel_img)可以非常方便的对图像进行直方图均衡化处理 直方图均衡化增加了图像的对比度,待会我们通过例子就可以看出图片明显的区别,这里需要注意的一点是...
  • 1. 绘制图像的直方图   下面的程序给出了如何绘制一幅图像整体的直方图和每个通道的直方图 #-*- coding:utf-8 -*- import cv2 from matplotlib import pyplot as plt def whole_hist(image): ''' 绘制整幅图像...
  • 目录python+opencv图像处理之七:直方图均衡化一、直方图均衡化二、直方图绘制三、直方图均衡化四、有限对比适应性直方图均衡化 一、直方图均衡化 直方图(英语:Histogram)是一种对数据分布情况的图形表示,是一种...
  • 对彩色图像进行直方图均衡化时,先将图像从RGB空间转到YUV空间,然后对亮度Y通道进行直方图均衡化得到通道Y",然后将Y"UV通道进行合并。代码如下: import cv2 import numpy as np img = cv...
  • OpenCV 直方图均衡化 直方图 直方图相关术语 BINS DIMS RANGE OpenCV中直方图的计算 Numpy中直方图的计算 绘制直方图 1. 使用Matplotlib 2. 使用OpenCV 应用遮罩 直方图均衡化 直方图均衡化算法 Numpy中的...
  • 直方图均衡化的主要目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均匀的图像 直方图均衡化的两种方法: 第一在原有范围内实现均衡。在原有的范围内实现直方图均衡化是,用当前灰度级...
  • Python-Opencv中的直方图均衡化

    千次阅读 2019-04-09 19:07:06
    Python-Opencv中的直方图均衡化 直方图均衡化 图像的直方图是对图像对比度效果上的一种处理,旨在使得图像整体效果均匀,黑与白之间的各个像素级之间的点更均匀一点。 直方图均衡化:如果一副图像的像素占有很多的...
  • 图像直方图均衡化算法 python实现

    千次阅读 2020-03-17 15:09:31
    一. 直方图均衡化直方图均衡化是使图像直方图变得平坦的操作。直方图均衡化能够有效地解决图像整体过暗、过亮的问题,增加图像的清晰度。 具体流程如下所示。... python实现直方图均衡化操作 imp...
  • OpenCVpython 颜色直方图与直方图均衡化

    千次阅读 多人点赞 2018-10-05 10:14:08
    OpenCV-Python中调用的直方图计算函数为cv2.calcHist。 """ hist = cv2.calcHist([image], # 传入图像(列表) [0], # 使用的通道(使用通道:可选[0],[1],[2]) ...
  • 根据参考图像各个通道的灰度分布,将一副图像的灰度分布映射过去,使映射后的两幅图像灰度分布非常接近,被称为histogram matching或者histogram specification,常用于网络训练的图像数据扩增
  • 目录概念选取像素点、统计个数创建mask直方图均衡化自适应直方图均衡化 概念 选取像素点、统计个数 (256,1) 256:0-255 1:每个值里面:0出现多少个,1多少个,255多少个 import cv2 img = cv2.imread('girl.png',...
  • # 彩色图像全局直方图均衡化 def hisEqulColor1(img): # 将RGB图像转换到YCrCb空间中 ycrcb = cv.cvtColor(img, cv.COLOR_BGR2YCR_CB) # 将YCrCb图像通道分离 channels = cv.split(ycrcb) # 对第1个通道即亮度...
  • opencv-python中有一个函数cv.equalizeHist(single_channel_img)可以非常方便的对图像进行直方图均衡化处理 直方图均衡化增加了图像的对比度,待会我们通过例子就可以看出图片明显的区别,这里需要注意的一点是, ...
  • 直方图均衡化(Histogram equalization)是一种常用的灰度变换方法。 Part1:灰度图均衡 #灰度图均衡 import sys import cv2 as cv import numpy as np print('Python的版本为:Python',sys.version_info....
  • 今天小编就为大家分享一篇Python cv2 图像自适应灰度直方图均衡化处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 首先进行简单的灰度图像的全局均衡和自适应均衡 import cv2 as cv ...# 全局直方图均衡化 img1 = cv.equalizeHist(img) # 自适应直方图均衡化 clahe = cv.createCLAHE(clipLimit=2.0,tileGridSize=(8,8...
  • 直方图   直方图是进行图像处理过程中的一种非常重要的工具。它是从图像内部灰度级的角度对图像进行表述。   直方图统计的是图像内各个灰度级出现的次数。 直方图的绘制 1.使用pyplot绘制直方图   使用函数:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,515
精华内容 1,006
关键字:

opencv直方图均衡化python

python 订阅