用python代码实现中点分割算法并绘制图形
时间: 2024-03-12 15:43:21 浏览: 63
中点分割算法是一种简单的图像分割算法,可以将一幅图像分成两个部分,其中一个部分是与选定点灰度值相似的部分,另一个部分是与选定点灰度值不相似的部分。下面是用Python代码实现中点分割算法并绘制图形的示例:
```python
import numpy as np
import cv2
import matplotlib.pyplot as plt
# 加载图像
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 初始化中点
mid = np.mean(img)
# 中点分割算法
while True:
# 计算两个区域的平均灰度值
mean1 = np.mean(img[img <= mid])
mean2 = np.mean(img[img > mid])
# 更新中点
new_mid = (mean1 + mean2) / 2
# 如果中点不再变化,则退出循环
if abs(new_mid - mid) < 1:
break
mid = new_mid
# 分割图像
seg_img = np.zeros_like(img)
seg_img[img <= mid] = 255
# 绘制图像
fig, ax = plt.subplots(1, 2, figsize=(10, 5))
ax[0].imshow(img, cmap='gray')
ax[0].set_title('Original Image')
ax[1].imshow(seg_img, cmap='gray')
ax[1].set_title('Segmented Image')
plt.show()
```
在上面的代码中,我们首先加载了一张灰度图像,然后初始化中点,然后在while循环中不断计算两个区域的平均灰度值,并更新中点,直到中点不再变化为止。最后,我们根据中点将图像分成两个部分,并绘制原始图像和分割后的图像。
阅读全文