主要内容

grabcut

利用基于迭代图的分割方法将图像分割为前景和背景

描述

例子

BW= grabcut (一个,l,ROI分割图像一个分成前景和背景区域。标签矩阵l指定映像的子区域。ROI指定感兴趣的初始区域的逻辑掩码。

BW= grabcut (一个,l,ROI,foremask,backmask分割图像一个,在那里foremaskbackmask是掩码,分别将图像中的像素指定为前景和背景。

BW= grabcut (一个,l,ROI,foreind,backind分割图像一个,在那里foreindbackind指定图像中分别标记为前景和背景的像素的线性索引。

BW= grabcut (___,名称,值使用名称-值对控制分割的各个方面来分割图像。

例子

全部折叠

将RGB图像读入工作区。

RGB = imread(“peppers.png”);

生成标签矩阵。

L =超像素(RGB,500);

指定感兴趣的区域并创建掩码映像。

imshow(RGB) h1 = drawpolygon(“位置”, 72105;1231;0366;104359;394307;518343;510年,39岁;149年、72年);

图中包含一个轴对象。axis对象包含两个image、images.roi.polygon类型的对象。

roiPoints = h1.Position;投资回报率= poly2mask (roiPoints (: 1), roiPoints(:, 2),大小(L, 1),大小(L, 2));

执行抓取切割操作,指定原始图像、标签矩阵和ROI。

BW =抓割(RGB,L,roi);imshow (BW)

图中包含一个轴对象。axis对象包含一个image类型的对象。

创建蒙版映像。

maskedImage = RGB;maskedImage(repmat(~BW,[1 1 3])) = 0;imshow (maskedImage)

图中包含一个轴对象。axis对象包含一个image类型的对象。

加载三维体积数据。

负载mristackV = mristack;

为初始前景和背景种子点创建2-D蒙版。

seedLevel = 10;fseed = V(:,:,seedLevel) > 75;bseed = V(:,:,seedLevel) == 0;

显示前景和背景种子点。

imshow (fse)

图中包含一个轴对象。axis对象包含一个image类型的对象。

imshow(疯牛病)

图中包含一个轴对象。axis对象包含一个image类型的对象。

将种子点放入空的3-D蒙版中。

fmask = 0 (size(V));Bmask = fmask;fmask(:,:,seedLevel) = fseed;bmask(:,:,seedLevel) = bseed;

创建感兴趣的初始区域。

roi = false(大小(V));Roi (10:end-10,10:end-10,:) = true;

生成标签矩阵。

L = superpixels3(V,500);

执行GrabCut。

bw = grabcut(V,L,roi,fmask,bmask);

显示三维分割图像。

蒙太奇(重塑(bw,大小(V)))

图中包含一个轴对象。axis对象包含一个image类型的对象。

输入参数

全部折叠

输入图像或体积,指定为2-D灰度图像、2-D真彩色图像或3-D灰度体积。只有灰度图像可以是数据类型int16

数据类型:||int16|uint8|uint16

标签矩阵,指定为数值数组。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

感兴趣的区域,指定为逻辑数组。定义感兴趣区域的所有像素都等于真正的

数据类型:逻辑

前台掩码,指定为逻辑数组。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

背景掩码,指定为逻辑数组。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

前景像素的指数,指定为线性指数的向量。

数据类型:

背景像素的索引,指定为线性索引的向量。

数据类型:

名称-值参数

的可选逗号分隔对名称,值参数。名字参数名称和价值对应的值。名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:BW = grabcut(A,L,ROI,'Connectivity',4)

连接组件的连接性,指定为以下值之一。默认连通性为2-D图像为8,3-D图像为26。

价值

意义

二维的连接性

4

四连接社区

当前像素显示为灰色。

8

8-connected附近

当前像素显示为灰色。

三维的连接性

6

6-connected附近

当前像素为立方体的中心。

18

18-connected附近

当前像素为立方体的中心。

26

26-connected附近

当前像素为立方体的中心。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

算法执行的最大迭代次数。该算法可以在达到最大迭代次数之前收敛到一个解。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

输出参数

全部折叠

分割图像,返回为与标签矩阵大小相同的二值图像l

提示

  • 图片,grabcut假设图像的范围为[0 1]。为uint16,int16,uint8图片,grabcut假设范围为给定数据类型的完整范围。

  • 对于灰度图像,的大小l,foremask,backmask必须匹配图像的大小一个。对于彩色和多通道图像,l,foremask,backmask必须是二维数组,其中前两个维度与图像的前两个维度相同一个

算法

  • 该算法将感兴趣区域掩码外的所有子区域视为属于背景。为了获得最佳分割,确保要分割的对象完全包含在ROI内,周围有少量背景像素。

  • 不要将标签矩阵的子区域标记为同时属于前景蒙版和背景蒙版。如果标签矩阵的一个区域包含同时属于前景掩码和背景掩码的像素,该算法有效地将该区域视为未标记区域。

  • 该算法假设感兴趣区域以外的所有子区域都属于背景。将这些子区域之一标记为属于前景或背景掩码对所得到的分割没有影响。

参考文献

Rother, C., V. Kolmogorov和A. Blake。“GrabCut -使用迭代图切割的交互式前景提取”。美国计算机学会图形学汇刊。Vol. 23, no . 3, 2004, pp. 309-314。

在R2018a中引入