这是对于 OpenCV 官方文档中 图像处理 的学习笔记。学习笔记中会记录官方给出的例子,也会给出自己根据官方的例子完成的更改代码,同样彩蛋的实现也会结合多个知识点一起实现一些小功能,来帮助我们对学会的知识点进行结合应用。
如果有喜欢我笔记的请麻烦帮我关注、点赞、评论。谢谢诸位。
学习笔记:
学习笔记目录里面会收录我关于OpenCV系列学习笔记博文,大家如果有什么不懂的可以通过阅读我的学习笔记进行学习。
【OpenCV学习笔记】- 学习笔记目录
内容
- 我们将学习直方图均衡的概念,并用它来提高图像的对比度。
理论
考虑一个图像,其像素值仅局限于某个特定的值范围。例如,较亮的图像会将所有像素限制为高值。但好的图像将具有来自图像所有区域的像素。因此,您需要将该直方图拉伸到两端(如下图所示,来自维基百科),这就是直方图均衡的作用(简单来说)。这通常会提高图像的对比度。
我建议您阅读关于 直方图均衡 的维基百科页面以获取有关它的更多详细信息。它有很好的解释和示例,因此您在阅读后几乎会理解所有内容。相反,在这里我们将看到它的 Numpy 实现。之后,我们将看到 OpenCV 函数。
Numpy 实现直方图均衡
示例代码:
# OpenCV 中的直方图
# 直方图 - 2:直方图均衡
# 理论
# numpy 的直方图均衡实现
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('../image/3.7.1.png', 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, cmap='gray')
plt.show()
plt.plot(cdf_normalized, color='b')
plt