直方图均衡化python

导读 直方图均衡化是一种常用的图像增强技术,它可以提高图像的对比度。在Python中,可以使用OpenCV库来实现直方图均衡化。以下是一个简单的示例...

直方图均衡化是一种常用的图像增强技术,它可以提高图像的对比度。在Python中,可以使用OpenCV库来实现直方图均衡化。以下是一个简单的示例代码:

```python

import cv2

import numpy as np

import matplotlib.pyplot as plt

# 读入图像

img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)

# 将图像转换为浮点型并归一化到[0, 1]区间内

img_float = img.astype(np.float32) / 255.0

# 计算图像的直方图

hist, bins = np.histogram(img_float, 256, [0, 1])

# 计算累积直方图,得到直方图均衡化后的灰度映射表

cdf = hist.cumsum()

cdf_normalized = cdf * hist.max()/ cdf.max()

# 创建映射表并应用映射表到原始图像上得到均衡化后的图像

equalized_img = np.interp(img_float, bins[:-1], cdf_normalized).astype(np.uint8)

# 显示原始图像和均衡化后的图像

plt.figure()

plt.subplot(1, 2, 1), plt.imshow(img), plt.title('Original Image')

plt.subplot(1, 2, 2), plt.imshow(equalized_img), plt.title('Equalized Image')

plt.show()

```

在这个示例代码中,首先读入一张图像并将其转换为浮点型并归一化到[0, 1]区间内。然后计算图像的直方图并计算累积直方图,得到直方图均衡化后的灰度映射表。接着使用NumPy的`np.interp`函数创建映射表并应用映射表到原始图像上得到均衡化后的图像。最后使用Matplotlib库显示原始图像和均衡化后的图像。你可以将这段代码保存到一个Python文件中,并将图像路径替换为你自己的图像路径来运行它。

版权声明:本文由用户上传,如有侵权请联系删除!