opencv 直方图均衡化
时间: 2023-09-01 10:11:45 浏览: 99
OpenCV中的直方图均衡化是一种用于增加图像对比度的方法,它通过调整图像中像素灰度级的分布来实现。简单来说,直方图均衡化将图像中的灰度级从较暗的区域分布到较亮的区域,从而使图像看起来更加清晰和对比度更高。
具体实现方法如下:
1. 将图像转换为灰度图像。
2. 计算图像的直方图,即统计每个灰度级的像素数量。
3. 计算灰度级的累计分布函数(CDF),即每个灰度级像素数量的累计和。
4. 计算新的灰度级值,即将CDF映射到0-255的范围内。
5. 将新的灰度级值应用到图像中的每个像素,生成均衡化后的图像。
下面是示例代码:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 将图像转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算直方图
hist, bins = cv2.calcHist([gray_img], [0], None, [256], [0, 256])
# 计算累计分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * float(hist.max()) / cdf.max()
# 计算新的灰度级值
new_gray_levels = cdf_normalized.astype('uint8')
# 将新的灰度级值应用到图像中的每个像素
equalized_img = cv2.LUT(gray_img, new_gray_levels)
# 显示原始图像和均衡化后的图像
cv2.imshow('Original', gray_img)
cv2.imshow('Equalized', equalized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先读取图像并将其转换为灰度图像。然后,使用`cv2.calcHist`函数计算灰度级的直方图。接下来,我们计算灰度级的累计分布函数,并将其映射到0-255的范围内,以计算新的灰度级值。最后,我们使用`cv2.LUT`函数将新的灰度级值应用到图像中的每个像素,生成均衡化后的图像。最后,我们显示原始图像和均衡化后的图像。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)