直方图均衡化python代码
时间: 2023-10-12 19:16:34 浏览: 18
当然可以,下面是一个简单的直方图均衡化的 Python 代码实现:
```python
import numpy as np
import cv2
#load grayscale image
img = cv2.imread('example.jpg', 0)
#calculate histogram
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
#calculate cumulative sum of histogram
cdf = hist.cumsum()
#create lookup table
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')
#apply lookup table
img_eq = cdf[img]
#display original and equalized image
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', img_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
代码解析:
- 首先,我们加载了一张灰度图片作为输入。
- 然后,我们计算了图像的直方图,它有 256 个 bins。
- 接着,我们计算了直方图的累计和。
- 然后,我们根据累计和创建了一个查找表 LUT,用于对输入图像进行均衡化。
- 最后,我们应用 LUT 对输入图像进行均衡化,并将结果输出到另一张图像上进行比较。
相信这样的代码可以满足你的需要。