openCV+Python 数字图像处理(7)——直方图均衡化

直方图均衡化、直方图比较

1.基本概念

直方图是图像的一个重要统计特征。
直方图均衡化可以调整图像对比度,是图像增强的一个手段。
直方图均衡化又可分为全局直方图均衡化和局部自适应均衡化。
openCV的直方图均衡化都是基于灰度图的。

2.API 介绍

  • (1)全局直方图均衡化
cv2.equalizeHist(src: Any, dst: Any = None)

src: 必须为灰度图像
全局的均衡化会存在一些问题,由于整体亮度的提升,会使得局部图像的细节变得模糊,因为我们需要进行分块的局部均衡化操作

  • (2)局部自适应直方图均衡化
cv2.createCLAHE(clipLimit: Any = None, tileGridSize: Any = None)

clipLimit: 颜色对比度的阈值
titleGridSize: 进行均衡化的网格大小

3.代码示例

import cv2
car = cv2.imread('E:/PycharmProjects/gray.jpg')
from matplotlib import pyplot as plt

def show(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)

show('img', car)

# 1.全局直方图均衡化
def equalhist_img(img):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    plt.hist(gray.ravel(), 256, [0, 256])  # ravel功能是将多维数组降为一维数组
    plt.show()
    dst = cv2.equalizeHist(gray)
    show('equalhist', dst)
    plt.hist(dst.ravel(), 256, [0, 256])
    plt.show()
equalhist_img(car)

# 2.局部直方图均衡化
def clahe_demo(img):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    plt.hist(gray.ravel(), 256, [0, 256])  # ravel功能是将多维数组降为一维数组
    plt.show()
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(3, 3))
    dst = clahe.apply(gray)
    show('clahe', dst)
    plt.hist(dst.ravel(), 256, [0, 256]) 
    plt.show()

clahe_demo(car)

cv2.destroyAllWindows()

4.结果展示

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值