skimage.segmentation.slic函数返回的超像素结果数量问题

问题描述 投票:0回答:1

为什么skimage.segmentation.slic函数返回的超像素结果数量不等于参数

n_segments
。 API 表示 n_segments:分段输出图像中标签的(大约)数量。那么,无法返回准确的超像素数量的原因是什么?

from skimage.segmentation import slic
import numpy as np
from torchvision import datasets
dataset = datasets.MNIST(root='../dataset', train=True, download=False)

n_segments = 50
for i in range(len(dataset)):
    segments = slic(dataset[i][0], n_segments=50, compactness=0.25)
    n_sp = len(np.unique(segments))
    print('image={}/{}, n_sp={}'.format(i + 1, len(dataset), n_sp))

输出切片:

image=3938/60000, n_sp=41
image=3939/60000, n_sp=41
image=3940/60000, n_sp=43
image=3941/60000, n_sp=44
image=3942/60000, n_sp=42
image=3943/60000, n_sp=44
image=3944/60000, n_sp=41
image=3945/60000, n_sp=46
image=3946/60000, n_sp=44
image=3947/60000, n_sp=43
image=3948/60000, n_sp=44
image=3949/60000, n_sp=42
image=3950/60000, n_sp=43
image=3951/60000, n_sp=41
image=3952/60000, n_sp=42
image=3953/60000, n_sp=44
image=3954/60000, n_sp=43
image=3955/60000, n_sp=48
image=3956/60000, n_sp=47
image=3957/60000, n_sp=45
image=3958/60000, n_sp=44
image=3959/60000, n_sp=45
image=3960/60000, n_sp=42
image=3961/60000, n_sp=43
image=3962/60000, n_sp=46
image=3963/60000, n_sp=47
image=3964/60000, n_sp=46
python image-processing computer-vision scikit-image
1个回答
0
投票

该算法无法产生精确数量的段。这就是它的定义方式。该算法从种子点的规则网格开始,但您无法制作一个用精确数量的点覆盖图像的规则网格。

© www.soinside.com 2019 - 2024. All rights reserved.