Python 在撇渣过程中使用简单线性迭代聚类生成的分割边界没有得到很好的定义?

Python 在撇渣过程中使用简单线性迭代聚类生成的分割边界没有得到很好的定义?,python,computer-vision,cluster-analysis,image-segmentation,scikit-image,Python,Computer Vision,Cluster Analysis,Image Segmentation,Scikit Image,我使用skimage slic聚类算法分割生物医学图像(整个幻灯片图像)。当我用线段边界绘制图像时,我发现边界没有很好地定义。下面是我的代码和相应的图像。当我使用更高分辨率的图像时,我仍然有同样的问题。这是因为聚类算法无法找到定义良好的分段吗?有没有办法获得一个明确的边界 from skimage.segmentation import slic from skimage.segmentation import mark_boundaries import matplotlib.pyplot a

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

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将粗略地对输出图像进行下采样。有关更多详细信息,请参阅其中的链接和答案。您可以通过不同的方式解决此问题:

  • 通过将
    DPI=300
    (例如)传入
    plt.figure()
    调用,设置更高的DPI(每英寸点数)
  • 使用
    skimage.io.imsave
    保存
    mark_bounders
    返回的图像,然后用标准图像查看器打开

  • 您是对分段本身不满意,还是对matplotlib显示分段的方式不满意?如果是后者,我会提到@Juan。如果是分割结果,我建议您尝试slic的替代方案。只需显示maplotlib,将dpi设置为300即可。谢谢!