用K-means聚类算法增强图像的对比度的代码
时间: 2023-07-24 19:08:09 浏览: 48
以下是使用K-means聚类算法增强图像对比度的Python代码:
```python
import cv2
import numpy as np
def kmeans_contrast(image, k=3):
# 将图像转为一维数组
img = image.reshape((-1, 3))
# 定义K-means模型
kmeans = cv2.KMeans(n_clusters=k, max_iter=100, n_init=10, random_state=42)
# 训练K-means模型
kmeans.fit(img)
# 获取每个像素的标签
labels = kmeans.labels_
# 获取聚类中心
centers = kmeans.cluster_centers_
# 根据标签重构图像
new_img = np.zeros_like(img)
for i in range(k):
new_img[labels == i] = centers[i]
# 将一维数组转为图像
new_image = new_img.reshape(image.shape)
# 返回增强对比度后的图像
return new_image
# 测试代码
image = cv2.imread('test.jpg')
contrast = kmeans_contrast(image)
cv2.imshow('Original', image)
cv2.imshow('K-means Contrast', contrast)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先将图像转为一维数组,然后使用K-means聚类算法将像素分为k个簇。接着获取每个簇的聚类中心,并根据标签重构图像。最后将重构后的一维数组转为图像并返回增强对比度后的图像。在测试代码中,我们加载了一张测试图像,并将其增强对比度后显示出来。