原理
代码实践
from skimage.segmentation import slic
from skimage.segmentation import mark_boundaries
from skimage.util import img_as_float
from skimage import io
import matplotlib.pyplot as plt
#加载图片
image = img_as_float(io.imread("/home/xray/LXM/yolov5-official/datasets/opixray/images/val/010533.jpg"))
#
for numSegments in (100, 200, 300, 400, 500):
#SLIC
segments = slic(image, n_segments = numSegments, sigma = 5) # (M, N) array of int : Label array where regions are marked by different integer values.
# show the output of SLIC
fig = plt.figure("Superpixels -- %d segments" % (numSegments))
ax = fig.add_subplot(1, 1, 1)
ax.imshow(mark_boundaries(image, segments))
plt.axis("off")
# show the plots
plt.show()
优缺点
优点:1.算法思路简单快速,分割性能不错;2.在skimage有现成的包可调用
缺点:1.算法是不可微的,不能整合到deep network中进行端到端的学习;2.skimage中现成的算法不支持批量分割