在 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 默认情况下会粗略地对输出图像进行下采样。有关更多详细信息,请参阅 、其中链接的内容和答案。您可以通过不同的方式解决此问题:
- 通过将
dpi=300
(例如)传递给 plt.figure()
调用来设置更高的 DPI(每英寸点数)。
- 使用
skimage.io.imsave
保存mark_boundaries
返回的图像,然后用标准图像查看器打开它。
我正在使用 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 默认情况下会粗略地对输出图像进行下采样。有关更多详细信息,请参阅
- 通过将
dpi=300
(例如)传递给plt.figure()
调用来设置更高的 DPI(每英寸点数)。 - 使用
skimage.io.imsave
保存mark_boundaries
返回的图像,然后用标准图像查看器打开它。