用python实现直方图均衡化
时间: 2023-09-18 10:11:33 浏览: 97
以下是Python中实现直方图均衡化的示例代码:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
img = cv2.imread('image.jpg', 0)
# 直方图均衡化
equ = cv2.equalizeHist(img)
# 绘制原图像和均衡化后的图像
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
axs[0].imshow(img, cmap='gray')
axs[0].set_title('Original Image')
axs[1].imshow(equ, cmap='gray')
axs[1].set_title('Equalized Image')
plt.show()
```
在上述示例代码中,首先使用OpenCV的`cv2.imread()`函数读取了一张灰度图像,然后使用`cv2.equalizeHist()`函数进行直方图均衡化。最后使用matplotlib绘制原图像和均衡化后的图像。
相关问题
python实现直方图均衡化
直方图均衡化是一种用于增强图像对比度的技术,可以通过使图像亮度分布更加均匀来增强图像的视觉效果。在 Python 中,可以使用 OpenCV 库实现直方图均衡化。
以下是一个简单的 Python 代码示例,演示如何使用 OpenCV 库实现直方图均衡化:
```python
import cv2
# 读取图像
img = cv2.imread('input.jpg', 0)
# 进行直方图均衡化
equ = cv2.equalizeHist(img)
# 显示原始图像和均衡化后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', equ)
# 等待用户按下任意按键退出程序
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,首先使用 `cv2.imread()` 函数读取输入图像,然后使用 `cv2.equalizeHist()` 函数对图像进行直方图均衡化。最后,使用 `cv2.imshow()` 函数显示原始图像和均衡化后的图像,并使用 `cv2.waitKey()` 函数等待用户按下任意按键退出程序。
需要注意的是,上面的代码中使用的是灰度图像。如果要对彩色图像进行直方图均衡化,需要将图像转换为 HSV 或 YUV 颜色空间,并对 V 或 Y 通道进行直方图均衡化。
python实现直方图均衡化open cv
在Python中,我们可以使用OpenCV库来进行图像直方图均衡化处理,这有助于增强图像对比度,特别是在光照不足的情况下。以下是基本步骤:
1. 导入所需的库:
```python
import cv2
import numpy as np
```
2. 读取图像:
```python
image = cv2.imread('your_image_path.jpg', cv2.IMREAD_GRAYSCALE) # 如果是灰度图像
```
3. 计算原始像素值的直方图:
```python
hist, bins = np.histogram(image.flatten(), 256, [0, 256])
```
这里`hist`是一个数组,表示每个像素值的数量,`bins`是所有可能的像素值范围。
4. 算法计算:为了得到均匀分布的新像素值,我们需要找到一个新的映射函数。一种常见的做法是使用累积分布函数(CDF),将原像素值对应的累积概率转换到新的像素值上:
```python
cdf = hist.cumsum() / hist.sum() # 累积分布函数
equivalent_hist = cdf * (255 - 0) + 0 # 归一化后的直方图,模拟新的像素值范围
```
5. 应用映射函数到原始图像:
```python
equipped_image = np.interp(image.flatten(), bins[:-1], equivalent_hist).reshape(image.shape)
```
这里使用了插值函数`interp`将原图像像素值映射到新像素值。
6. 最后显示处理后的图像:
```python
cv2.imshow("Original Image", image)
cv2.imshow("Equalized Image", equipped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文