scikit-image库--超像素分割算法比较(十一)

超像素分割算法比较

本例比较了四种常用的低阶图像分割方法。由于很难获得良好的分割,“良好”的定义往往取决于应用,这些方法通常用于获得过度分割,也称为超像素。然后,这些超像素作为更复杂的算法(如条件随机场(CRF))的基础。

基于菲尔森茨瓦布高效图的分割(Felzenszwalb’s efficient graph based segmentation.2004)

该算法有一个影响段大小的单尺度参数。实际大小和段数可能会有很大的差异,这取决于局部对比度。

快速移位图像分割(Quickshift image segmentation.2008)

快速移动是一种相对较新的二维图像分割算法,基于核平均移动的近似值。因此,它属于局部模式搜索算法家族,适用于由颜色信息和图像位置组成的5D空间。

Quickshift的一个好处是它实际上同时在多个尺度上计算分层分段。

Quickshift有两个主要参数:sigma控制局部密度近似值的比例,max-dist在生成的分层分段中选择一个级别。颜色空间中的距离和图像空间中的距离之间也存在着一种折衷,由比率给出。

基于SLIC-K均值的图像分割SLIC - K-Means based image segmentation.2012)

该算法简单地在5D颜色信息空间和图像位置空间中执行K均值,因此与快速移位密切相关。由于聚类方法简单,效率很高。该算法必须在实验室颜色空间中工作,才能获得良好的效果。该算法很快获得了势头,现在得到了广泛的应用。详见[3]。紧凑性参数权衡颜色相似性和接近性,就像快速移动一样,而n_段为kmeans选择中心数。

分水岭分割(Compact watershed segmentation .2014)

分水岭不需要以彩色图像作为输入,而是需要灰度渐变图像,其中亮像素表示区域之间的边界。该算法将图像视为一个景观,由亮像素形成高峰值。然后,这些景观被给定的标志淹没,直到单独的洪水流域在山峰处汇合。然后,每个不同的盆地形成不同的图像段。


import matplotlib.pyplot as plt
import numpy as np

from skimage.data import astronaut
from skimage.color import rgb2gray
from skimage.filters import sobel
from skimage.segmentation import felzenszwalb, slic, quickshift, watershed
from skimage.segmentation import mark_boundaries
from skimage
### 使用 scikit-image 删除图像中的特定内容或特征 为了实现从图像中删除特定的内容或特征,可以采用多种方法和技术。具体取决于要移除的对象特性及其与背景的关系。以下是几种常见的技术: #### 1. 基于形态学操作去除噪声或其他不需要的小结构 对于一些简单的场景,比如要去除小斑点或者填充孔洞,可以直接应用形态学变换。 ```python from skimage.morphology import binary_opening, disk import numpy as np # 创建一个二值化后的测试图片 image = ... # 加载待处理的二值图像数据 cleaned_image = binary_opening(image, selem=disk(5)) ``` 此代码片段展示了如何通过开运算来清理图像中小尺寸的目标对象[^1]。 #### 2. 利用区域属性筛选法排除不想要的部分 当目标具有明显的面积差异时,可以通过测量连通组件大小并设定阈值的方式保留较大或较小的区域。 ```python from skimage.measure import label, regionprops import numpy as np labeled_image = label(binary_image) regions = regionprops(labeled_image) filtered_regions = [region for region in regions if region.area >= min_area_threshold] mask = np.zeros_like(binary_image, dtype=bool) for r in filtered_regions: mask[tuple(r.coords.T)] = True final_image = image * mask.astype(int) ``` 上述脚本说明了怎样基于面积标准挑选感兴趣的物体,并构建掩码以遮蔽其他部分。 #### 3. 结合机器学习模型识别并擦除复杂模式 如果需要更精确地定位和消除某些类型的图案,则可能需要用到训练好的分类器来进行像素级别的预测。 ```python from sklearn.ensemble import RandomForestClassifier from skimage.segmentation import slic from skimage.util import img_as_float from skimage.future.graph import rag_mean_color from skimage.color import rgb2gray segments_slic = slic(img_as_float(color_image), n_segments=200, compactness=10, sigma=1) g = rag_mean_color(color_image, segments_slic) labels = np.array([RandomForestClassifier().predict(...)[i] for i in range(len(g.nodes()))]) segment_mask = labels != target_class_label output_img = color_image.copy() output_img[~segment_mask[:, :, None]] = (0, 0, 0) # 将不属于指定类别的地方设为黑色 ``` 这段程序举例说明了利用随机森林算法配合超像素分割完成对特定类别元素的选择性清除过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值