OpenCV之直方图均衡化-----(对比度的方法之一)

一、直方图均衡化

OpenCV系列—本文底页有多个常用方法链接

    直方图均衡化(Histogram Equalization)是一种增强图像对比度(Image Contrast)的方法,其主要思想是将一副图像的直方图分布变成近似均匀分布,从而增强图像的对比度。

scenery.png原图(下载):
在这里插入图片描述

import cv2  # opencv读取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt  # Matplotlib是RGB
# %matplotlib inline

def cv_show(img, name):
    cv2.imshow(name, img)
    cv2.waitKey()
    cv2.destroyAllWindows()


img = cv2.imread('DataPreprocessing/img/scenery.png', 0)  # 0表示灰度图
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
print(hist.shape)

plt.hist(img.ravel(), 256)
plt.show()

转为灰度图后,整张图片像素分布的直方图结果:
在这里插入图片描述
画出三通道的直方图分布:

color = ('b', 'g', 'r')
for i, col in enumerate(color):
    histr = cv2.calcHist([img], [i], None, [256], [0, 256])
    plt.plot(histr, color=col)
    plt.xlim([0, 256])

在这里插入图片描述
直方图均衡化处理:

img = cv2.imread('DataPreprocessing/img/scenery.png', 0)

equ = cv2.equalizeHist(img)
plt.hist(equ.ravel(), 256)
plt.show()
# cv_show(equ, "equ")

经过直方图均衡化处理后的像素分布:
在这里插入图片描述

二、自适应直方图均衡化

clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))

res_clahe = clahe.apply(img)
res = np.hstack((img, equ, res_clahe))
cv2.imwrite("res_scenery.png", res)

cv_show(res, 'res')

展示所有的结果(原图 - - - 直方图均衡化 - - - 自适应直方图均衡化):
在这里插入图片描述

三、其他OpenCV系列方法链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锦鲤AI幸运

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值