直方图均衡增强图像效果
时间: 2024-05-13 21:15:10 浏览: 15
直方图均衡是一种常用的图像增强技术,它可以通过改变图像的像素值分布来增强图像的对比度和亮度。直方图均衡的基本思路是将图像的灰度值分布进行均匀化,使得原本分布不均匀的灰度值变得更加均匀,从而达到增强图像的目的。
直方图均衡的具体实现可以分为以下几个步骤:
1. 计算图像的灰度直方图。灰度直方图是图像中各灰度级的像素数目的统计分布。
2. 计算灰度直方图均衡化映射函数。该函数将原始图像中的灰度级映射到均衡化后的灰度级。
3. 对每个像素应用灰度直方图均衡化映射函数,得到均衡化后的图像。
下面是 Python 代码实现直方图均衡化:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('lena.jpg', 0)
# 计算灰度直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算累计分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算均衡化映射函数
cdf_m = np.ma.masked_equal(cdf, 0)
cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min())
cdf = np.ma.filled(cdf_m, 0).astype('uint8')
# 应用均衡化映射函数
img_eq = cdf[img]
# 显示结果
cv2.imshow('Original', img)
cv2.imshow('Equalized', img_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,使用 `cv2.imread()` 函数读取了一张灰度图像,然后通过 `np.histogram()` 函数计算了图像的灰度直方图。接着,使用 `cumsum()` 函数计算了灰度直方图的累计分布函数,并通过归一化将其映射到 [0, 255] 范围内。然后,计算了图像的均衡化映射函数,最后将该映射函数应用到原始图像上,得到均衡化后的图像。最后使用 `cv2.imshow()` 函数将原始图像和均衡化后的图像显示出来。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)