代码语言:javascript复制
import cv2
import numpy as np
from skimage.segmentation import felzenszwalb, slic, quickshift, watershed
from skimage.segmentation import mark_boundaries
from skimage.util import img_as_float
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
cv2.imshow("img",img)
segments_quick=quickshift(img,kernel_size=3,max_dist=6,ratio=0.5)#quickshift分割
print('Quickshift number of segments: {}'.format(len(np.unique(segments_quick))))
result=mark_boundaries(img,segments_quick)#标记边界
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
Quickshift number of segments: 636
算法:快速移位图像分割算法(QuickShift)是一种与基于核均值漂移算法近似的二维图像分割算法,属于局部的(非参数)模式搜索算法系列(每个数据点关联到基础概率密度函数模式),QuickShift图像分割同时在多个尺度上计算分层分段并应用于由颜色空间和图像位置组成的五维空间中。dst=skimage.segmentation.quickshift(img, ratio, kernel_size, max_dist, return_tree, sigma, convert2lab, random_seed)
- img表示输入图像
- ratio表示量化比率
- kernel_size表示用于平滑样本密度的高斯核的宽度
- max_dist表示数据距离的分界点
- return_tree表示是否返回完整的细分层次树和距离
- sigma表示高斯平滑的宽度作为预处理
- convert2lab表示分割之前是否应将输入转换为Lab色彩空间
- random_seed表示随机种子
文献:Vedaldi, A. , & Soatto, S. . (2008). Quick shift and kernel methods for mode seeking. European Conference on Computer Vision.