主要内容

grabcut.

段图像进入前景和背景使用基于迭代图形的分段

描述

例子

BW.= grabcut(一种L.ROI.段图像一种进入前景和背景区域。标签矩阵L.指定图像的子区域。ROI.是指定初始感兴趣区域的逻辑面具。

BW.= grabcut(一种L.ROI.前所话背后掩拍段图像一种, 在哪里前所话背后掩拍是否分别是指定图像中的像素作为前景和背景的掩模。

BW.= grabcut(一种L.ROI.前言段图像一种, 在哪里前言分别指定标记为前景和背景的图像中的像素的线性指标。

BW.= grabcut(___名称,价值使用名称值对分段为控制分割的方面。

例子

全部收缩

将RGB图像读入工作区。

rgb = imread('peppers.png');

生成标签矩阵。

L =超像素(RGB,500);

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

图imshow(RGB)H1 = DrawPolygon(GCA,'位置',[72,105;1,231;0,366;104,359;......394,307;518,343;510,39;149,72]);

图包含轴。轴包含2个类型图像的对象,images.roi.polygon。

roIpoints = h1.Position;ROI = Poly2mask(RoIpoints(:,1),roIpoints(:,2),尺寸(L,1),尺寸(L,2));

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

bw = grabcut(RGB,L,ROI);图imshow(bw)

图包含轴。轴包含类型图像的对象。

创建蒙版图像。

maskedimage = RGB;maskedimage(Repmat(〜bw,[1 1 3]))= 0;数字;imshow(maskedimage)

图包含轴。轴包含类型图像的对象。

负载3-D体积数据。

加载马士克v = mristack;

为初始前景和背景种子点创建一个2-D掩模。

Seedlevel = 10;fseed = V(:,:,苗佛)> 75;Bseed = V(:,:,Seedlevel)== 0;

显示前景和背景种子点。

imshow(fseed)

图包含轴。轴包含类型图像的对象。

imshow(bseed)

图包含轴。轴包含类型图像的对象。

将种子点放入空3-D掩模中。

Fmask =零(大小(v));BMASK = FMASK;Fmask(:,:,Seedlevel)= fse;BMASK(:,:,Seedlevel)= Bseed;

创建初始感兴趣的区域。

roi = false(大小(v));ROI(10:ex-10,10:ex-10,:) =真;

生成标签矩阵。

L = Superpixels3(V,500);

执行grabcut。

BW = Grabcut(V,L,ROI,Fmask,BMASK);

显示3D分段图像。

蒙太奇(重塑(BW,尺寸(v))))

图包含轴。轴包含类型图像的对象。

输入参数

全部收缩

输入图像或卷,指定为2-D灰度图像,2-D TrueColor图像或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,...,namen,valuen

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

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

价值

意义

二维连接

4.

4个连接的邻居

电流像素以灰色显示。

8.

8个连接的邻居

电流像素以灰色显示。

三维连接性

6.

6个连接的邻居

目前的像素是立方体的中心。

18.

18个连接的邻居

目前的像素是立方体的中心。

26.

26个连接的邻居

目前的像素是立方体的中心。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

算法执行的最大迭代次数。在达到最大迭代次数之前,该算法可以收敛到解决方案。

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

输出参数

全部收缩

分段图像,返回与标签矩阵相同大小的二进制图像L.

尖端

  • 为了双倍的单身的图片,grabcut.假设图像的范围[0 1]。为了uint16int16, 和uint8.图片,grabcut.假设给定数据类型的全部范围的范围。

  • 对于灰度图像,大小L.前所话, 和背后掩拍必须匹配图像的大小一种。对于颜色和多通道图像,L.前所话, 和背后掩拍必须是2-d阵列,前两个尺寸与图像的前两个维度相同一种

算法

  • 该算法在ROI掩码外完全或空间地处理所有子区域,属于背景。要获得最佳分割,请确保要分段的对象完全包含在ROI内,由少量背景像素包围。

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

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

参考

[1] Rother,C.,V.Kolmogorov和A. Blake。“Grabcut - 使用迭代图切割的交互式前景提取”。图形上的ACM事务(Siggraph)。卷。23,第3,2004,第3号,第309-314页。

在R2018A介绍