全局阈值分割——直方图法具体代码
时间: 2023-09-30 13:11:00 浏览: 191
直方图阈值分割.py
全局阈值分割是图像处理中常用的一种方法,其中直方图法是其中的一种常用实现方式。下面是直方图法的具体代码实现:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg', 0)
# 计算图像的直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算直方图的累积分布函数
cdf = hist.cumsum()
# 找到cdf中的最小值的位置
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')
# 根据直方图的均衡化函数计算图像的均衡化值
img2 = cdf[img]
# 显示图像
cv2.imshow('image', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该代码首先读取一张灰度图像,然后使用 `numpy` 库的 `histogram` 函数计算图像的直方图,并使用 `cumsum` 函数计算直方图的累积分布函数。接着,使用 `numpy` 库的 `masked_equal` 函数找到cdf中的最小值的位置,并将cdf进行归一化处理。最后,根据直方图的均衡化函数计算图像的均衡化值,并将其显示出来。
阅读全文