grabcut


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

Syntax

BW = grabcut(A,L,ROI)
BW = grabcut(A,L,ROI,foremask,backmask)
BW = grabcut(A,L,ROI,foreind,backind)
BW = grabcut(___,Name,Value)

Description

BW = grabcut(A,L,ROI)将图像A分为前景和背景区域。 标签矩阵L指定图像的子区域。 
ROI是指定初始感兴趣区域的逻辑掩码。
BW = grabcut(A,L,ROI,foremask,backmask)分割图像A,其中前遮罩和后遮罩是分别
将图像中的像素指定为前景和背景的遮罩。
BW = grabcut(A,L,ROI,foreind,backind)分割图像A,其中foreind和backind指定
分别标记为前景和背景的图像中像素的线性索引。
BW = grabcut(___,Name,Value)
使用名称/值对对图像进行分割,以控制分割的各个方面。

Examples

使用Grabcut分割图像中的背景前景

clear all
close all
clc
RGB = imread('peppers.png');
%生成标签矩阵。
L = superpixels(RGB,500);
%指定感兴趣的区域并创建遮罩图像。
figure
imshow(RGB)
h1 = drawpolygon(gca,'Position',[72,105; 1,231; 0,366; 104,359;...
        394,307; 518,343; 510,39; 149,72]);
roiPoints = h1.Position;
roi = poly2mask(roiPoints(:,1),roiPoints(:,2),size(L,1),size(L,2));
%执行抓取剪切操作,指定原始图像,标签矩阵和ROI。
BW = grabcut(RGB,L,roi);
figure
imshow(BW)
%创建遮罩的图像。
maskedImage = RGB;
maskedImage(repmat(~BW,[1 1 3])) = 0;
figure;
imshow(maskedImage)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用Grabcut分割3-D图像

clear all
close all
clc
load mristack
V = mristack;
%为初始前景和背景种子点创建一个二维蒙版。
seedLevel = 10;
fseed = V(:,:,seedLevel) > 75;
bseed = V(:,:,seedLevel) == 0;
%显示前景和背景种子点。
imshow(fseed)
imshow(bseed)
%将种子点放入空的3D蒙版中。
fmask = zeros(size(V));
bmask = fmask;
fmask(:,:,seedLevel) = fseed;
bmask(:,:,seedLevel) = bseed;
%创建感兴趣的初始区域。
roi = false(size(V));
roi(10:end-10,10:end-10,:) = true;
%生成标签矩阵。
L = superpixels3(V,500);
%执行GrabCut。
bw = grabcut(V,L,roi,fmask,bmask);
%显示3D分割图像。
montage(reshape(bw,size(V)))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Input Arguments

L —标签矩阵
数值数组
标签矩阵,指定为数字数组。
ROI—感兴趣的区域
逻辑数组
感兴趣的区域,指定为逻辑数组。 定义关注区域的所有像素均等于true。
foremask—前景面具
逻辑数组
前景蒙版,指定为逻辑数组。
backmask—背景掩膜
逻辑数组
背景掩码,指定为逻辑数组。
foreind—前景中的像素的索引
矢量
前景中的像素索引,指定为线性索引的向量。
backind —背景中的像素的索引
矢量
背景中的像素索引,指定为线性索引的向量。
名称-值对参数
‘Connectivity’—所连接组件的连通性
4 | 8 | 6 | 18 | 26
连接的组件的连接性,指定为下列值之一。 对于2D图像,默认连接为8,对于3D图像,默认连接为26。
‘MaximumIterations’-最大迭代次数
5(默认)| 正标量
该算法执行的最大迭代次数。 该算法可以在达到最大迭代次数之前收敛到解决方案。

Tips

对于双张和单张图像,抓取假定图像的范围为[0 1]。 对于uint16,int16和uint8图像,抓取会将范围假定为给定数据类型的完整范围。

对于灰度图像,L,前掩膜和后掩膜的大小必须与图像A的大小匹配。对于彩色和多通道图像,L,前掩膜和后掩膜的大小必须是二维数组,且前两个维度与 图像A的前两个维度。

猜你喜欢

转载自blog.csdn.net/qq_34562355/article/details/109221923