OpenCV基于Python直方图均衡化详析

直方图均衡化目标1. 前言2. 全局直方图均衡化(HE)3. 对比度受限的自适应直方图均衡化(CLAHE)4. 总结目标通过本篇文章的学习,你将学习到以下内容:直方图均衡化的概念,并利用它来提高图像的对比度全局直方图均衡化对比度受限的直方图均衡化1. 前言考虑这样一幅图像,它的像素值仅局限于某个特定的值范围,例如,较亮的图像将把所有像素限制在高值上。但是一幅好的图像会有来自图像所有区域的像素。因此,你需要将这个直方图拉伸到两端,这就是直方图均衡化的作用(简单来说),这通常会提高图像的对比度
摘要由CSDN通过智能技术生成

目标

通过本篇文章的学习,你将学习到以下内容:

  • 直方图均衡化的概念,并利用它来提高图像的对比度
  • 全局直方图均衡化
  • 对比度受限的直方图均衡化

前言

考虑这样一幅图像,它的像素值仅局限于某个特定的值范围,例如,较亮的图像将把所有像素限制在高值上。但是一幅好的图像会有来自图像所有区域的像素。因此,你需要将这个直方图拉伸到两端,这就是直方图均衡化的作用(简单来说),这通常会提高图像的对比度。
直方图均衡化作用

图1 直方图均衡化直观描述

下面我们以一幅图像为例,使用numpy库的np.historam()函数实现该图像的直方图,使用hist.cumsum()函数查看该图像的亮度分布–累积分布函数(CDF)图,理想情况下沿直线增长,可以通过直方图均衡,调整图片到最理想的状态,为后续的直方图的均衡化提供直观的参考。

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

# 加载原始灰度图像
img = cv.imread('./data/pool_table.jpg', 0)
# 实现该图像的直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 查看该图像的亮度累积分布
cdf = hist.cumsum()
# 亮度累积分布归一化
cdf_normalized = cdf*float(hist.max())/cdf.max()

# 显示原始图像
plt.subplot(121), plt.imshow(img, 'gray')
# 绘制亮度累积分布图与直方图
plt.subplot(122), plt.plot(cdf_normalized, color='g'),
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值