主要内容

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 = superpixels (RGB, 500);

指定一个感兴趣的区域并创建一个面具的形象。

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

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

roiPoints = h1.Position;投资回报率= 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体积数据。

负载mristackV = mristack;

创建一个二维的面具最初的前景和背景的种子点。

seedLevel = 10;fse = V (:,:, seedLevel) > 75;疯牛病= V (:,:, seedLevel) = = 0;

显示前景和背景的种子点。

imshow (fse)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

imshow(疯牛病)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

将种子点放入空3 d面具。

fmask = 0(大小(V));bmask = fmask;fmask (:,:, seedLevel) =工程师;bmask (:,:, seedLevel) =疯牛病;

创建初始感兴趣的地区。

投资回报率= false(大小(V));roi (10: end-10 10: end-10:) = true;

矩阵生成标签。

L = superpixels3 (V, 500);

执行GrabCut。

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

显示3 d图像分割。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

输入参数

全部折叠

输入图像或体积,指定为一个二维灰度图像,二维真彩图像,或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,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

例子:grabcut (L, ROI,连接= 4)

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:grabcut (L, ROI,“连接”,4)

连接的连接组件,指定为以下值之一。二维图像的默认连接是8,26日3 d图像。

价值

意义

二维的连接性

4

边缘像素连接如果他们的联系。两个相邻的像素是相同的对象如果他们都和沿水平或垂直方向连接。

中心像素连接四个像素

当前像素显示在灰色。

8

像素连接如果边缘或角落联系。两个相邻像素属于同一对象如果他们都是沿着水平和连接,垂直或对角线方向。

中心像素与8个像素

当前像素显示在灰色。

三维的连接性

6

像素如果他们的脸碰相连。两个相邻的像素属于同一对象如果他们都和连接:

  • 其中一个方向:,,,,,

中心像素与6像素的面孔

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

18

边缘像素连接如果他们的脸或联系。两个相邻的像素属于同一对象如果他们都和连接:

  • 其中一个方向:,,,,,

  • 两个方向的组合,如完全地或在

连接到中心像素的面孔6像素和12个像素的边缘

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

26

像素连接如果他们的脸、边缘或角落联系。两个相邻的像素属于同一对象如果他们都和连接:

  • 其中一个方向:,,,,,

  • 两个方向的组合,如完全地或在

  • 三个方向的组合,如in-right-up或in-left-down

连接到中心像素的面孔6像素,12个像素的边缘,角落的8个像素

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

数据类型:||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掩模属于背景。得到一个最优的分割,确保对象分割是完全包含在ROI,周围少量背景像素。

  • 不一个次区域标签的矩阵标记为属于前景掩模和背景的面具。如果一个区域的标签矩阵包含像素属于前景和背景的面具,面具的算法将该地区视为无名。

  • 算法假定所有感兴趣的亚区以外的地区属于背景。标记一个亚区属于前景或背景掩盖对结果没有影响分割。

引用

[1]洛特,C。,V. Kolmogorov, and A. Blake. "GrabCut - Interactive Foreground Extraction using Iterated Graph Cuts".ACM交易图形(SIGGRAPH)。第三卷。23日,2004年,页309 - 314。

扩展功能

版本历史

介绍了R2018a

全部展开