在 skimage 中使用简单线性迭代聚类生成的分割边界没有明确定义?

Segmentation boundaries generated using Simple Linear Iterative Clustering in skimage are not well defined?

我正在使用 skimage 切片聚类算法来分割生物医学图像(整个幻灯片图像)。当我用段边界绘制图像时,我发现边界没有明确定义。下面是我的代码和相应的图片。当我使用更高分辨率的图像时,我仍然遇到同样的问题。这是因为聚类算法找不到定义明确的段吗?有没有办法获得明确定义的边界?

from skimage.segmentation import slic
from skimage.segmentation import mark_boundaries
import matplotlib.pyplot as plt
import cv2

image = cv2.imread('testPatch2.png')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

segments = slic(image, n_segments=500, sigma=5, enforce_connectivity=True, convert2lab=True)

plt.figure(figsize=(10,10))
plt.imshow(mark_boundaries(image, segments, mode='thick'))
plt.show()

这不是分割的问题,而是显示的问题。 Matplotlib 默认情况下会粗略地对输出图像进行下采样。有关更多详细信息,请参阅 、其中链接的内容和答案。您可以通过不同的方式解决此问题:

  1. 通过将 dpi=300(例如)传递给 plt.figure() 调用来设置更高的 DPI(每英寸点数)。
  2. 使用skimage.io.imsave保存mark_boundaries返回的图像,然后用标准图像查看器打开它。