我正在使用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将对输出图像进行粗采样。有关更多详细信息,请参见this question,其中链接的内容以及答案。您可以通过其他方式解决此问题:
dpi=300
传递给plt.figure()
呼叫来设置较高的DPI(每英寸点数)。>skimage.io.imsave
保存由mark_boundaries
返回的图像,然后使用标准图像查看器将其打开。