Python如何实现均直方图均衡化

 更新时间:2023年10月12日 11:01:32   作者:一米阳光zw  
这篇文章主要介绍了Python如何实现均直方图均衡化问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

简介

通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

直方图均衡化通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度。

直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布, 由于其算法简单, 无需借助外来因素的参数设置,可以自成系统的运行, 有效地增强图像对比度, 是一种常用的图像增强方法. 一直以来, 直方图均衡技术受到各个领域的重视, 比如在消费类电子产品邻域, 在均衡图像的同时希望保持图像的亮度信息

直方图的计算

实现代码

import cv2
import matplotlib.pyplot as plt
import numpy as np
# 定义matshow方法
def matshow(title='image', image=None, gray=False):
    if isinstance(image, np.ndarray):
        if len(image.shape) == 2:
            pass
        elif gray:
            # 转换成GRAY格式
            image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        else:
            # 图片默认BGR通道,将突破转换成RGB
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
            # 使用这种方式显示图片可能会导致图片显示畸形
            # cv2.imshow('image', image)
    plt.figure()
    # 载入图像
    plt.imshow(image, cmap="gray")
    # 设置标题
    plt.title(title)
    plt.show()
if __name__ == '__main__':
    im = cv2.imread('data/lena.jpg', 0)
    matshow('im', im)
    # 绘制直方图
    plt.hist(im.ravel(), 256, [0, 256])
    plt.show()
    # 均衡化处理
    im_equ1 = cv2.equalizeHist(im)
    matshow('im_equ1', im_equ1)
    # 绘制均衡化处理的直方图
    plt.hist(im_equ1.ravel(), 256, [0, 256])
    plt.show()

效果图

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python与数据库的交互问题小结

    Python与数据库的交互问题小结

    这篇文章主要介绍了Python与数据库的交互,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Django中的模型类设计及展示示例详解

    Django中的模型类设计及展示示例详解

    这篇文章主要介绍了Django中的模型类设计及展示,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 浅谈python中真正关闭socket的方法

    浅谈python中真正关闭socket的方法

    今天小编就为大家分享一篇浅谈python中真正关闭socket的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python数据可视化:幂律分布实例详解

    Python数据可视化:幂律分布实例详解

    今天小编就为大家分享一篇Python数据可视化:幂律分布实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python 识别12306图片验证码物品的实现示例

    Python 识别12306图片验证码物品的实现示例

    这篇文章主要介绍了Python 识别12306图片验证码物品的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 使用Python编写一个桌面便签应用

    使用Python编写一个桌面便签应用

    ChatGPT的编程能力也不差,本文将一步一步提出要求,让ChatGPT根据我们的要求,编写出一个可用的,可打包运行的桌面便签,感兴趣的可以了解一下
    2023-06-06
  • PyCharm Ctrl+Shift+F 失灵的简单有效解决操作

    PyCharm Ctrl+Shift+F 失灵的简单有效解决操作

    这篇文章主要介绍了PyCharm Ctrl+Shift+F 失灵的简单有效解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Python中Arrow库的时间操作技法总结

    Python中Arrow库的时间操作技法总结

    Arrow是一个功能强大、易用且具有优雅设计的Python日期时间库,它建立在Python的datetime模块之上,旨在弥补datetime模块在处理日期时间时的一些不足之处,下面我们就来了解一下Arrow库的常见时间操作吧
    2023-12-12
  • Python发送http请求解析返回json的实例

    Python发送http请求解析返回json的实例

    下面小编就为大家分享一篇Python发送http请求解析返回json的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 详解如何用Python写个听小说的爬虫

    详解如何用Python写个听小说的爬虫

    在路上经常发现好多人都喜欢用耳机听小说,同事居然可以一整天的带着一只耳机听小说。本文就用Python爬虫实现下载听小说tingchina.com的音频,需要的可以参考一下
    2022-02-02

最新评论