主要内容

lazysnapping

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

描述

例子

BW= lazysnapping (一个lforemaskbackmask部分图片一个进入前景和背景区域使用惰性捕捉。矩阵的标签l指定图像的子区域。foremaskbackmask分别指定图像中的像素作为前景和背景的掩码。

例子

BW = lazysnapping (一个lforeindbackind部分图片一个进入前景和背景区域。foreindbackind指定图像中分别标记为前景和背景的像素的线性索引。

BW = lazysnapping (___名称,值使用名称-值对对图像或体积进行分割,以控制分割的各个方面。

例子

全部折叠

读取并显示图像。

RGB = imread (“peppers.png”);imshow (RGB)

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

创建一个标签矩阵。

L = superpixels (RGB, 500);

控件在前景中指定一个矩形ROIdrawrectangle函数。“Position”名称-值对参数指定ROI的左上角坐标、宽度和高度作为4元素向量(xmin ymin、宽度、高度)。如果想以交互方式绘制矩形,则省略'Position'名称-值对参数。

f = drawrectangle (gca),“位置”,[100 128 350 150],“颜色”‘g’);

图中包含一个轴对象。axis对象包含两个类型为image的对象,images.roi.rectangle。

创建包含前景像素的蒙版。

前景= createMask (f, RGB);

指定背景roi。为了提高分割精度,本例在背景的不同区域指定了两个矩形roi。

b1 = drawrectangle (gca),“位置”,[130 30 40 30],“颜色”“r”);b2 = drawrectangle (gca),“位置”,[6 368 500 10],“颜色”“r”);

图中包含一个轴对象。axis对象包含4个类型为image的对象,images.roi.rectangle。

创建一个包含背景像素的蒙版。该掩码是两个背景roi的联合。

background = createMask(b1,RGB) + createMask(b2,RGB);

执行延迟拍摄。

BW = lazysnapping (RGB、L、前景、背景);

通过突出显示绿色前景来可视化分割的结果。

imshow (labeloverlay (RGB, BW,“Colormap”, (0 1 0)))

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

创建一个背景为黑色的蒙面图像。

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

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

读取并显示图像。

RGB = imread (“peppers.png”);imshow (RGB)

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

创建一个标签矩阵。

L = superpixels (RGB, 500);

指定前景中像素的x和y坐标。

foregroundX = [34 114 195 259 392 467 483];foregroundY = [298 140 135 200 205 283 104];

将坐标转换为线性指标。sub2ind接受(行,列)坐标,因此在x坐标之前指定输入参数为y坐标。

foregroundInd = sub2ind(大小(RGB)、foregroundY foregroundX);

指定背景中像素的x和y坐标。

backgroundX = [130 170];background = [52 32];

将坐标转换为线性指标。

backgroundInd = sub2ind(大小(RGB)、backgroundY backgroundX);

执行延迟拍摄。

BW = lazysnapping (RGB, L, foregroundInd backgroundInd);

显示分段掩码。前景像素是真正的背景像素是

imshow (BW)

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

在原始图像上显示蒙版,突出显示绿色的前景像素。

imshow (labeloverlay (RGB, BW,“Colormap”, (0 1 0)))

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

将三维立体图像加载到工作区中。

D =负载(“mri.mat”);V =挤压(d);

创建一个2-D蒙版,识别初始前景和背景种子点。

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

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

图;imshow(疯牛病)

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

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

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

生成3-D标签矩阵。

L = superpixels3 (V, 500);

使用Lazy snap将图像分割为前景和背景。

bw = lazysnapping (V, L, fmask bmask);

显示三维分割图像。

图;p =补丁(等值面(双(bw)));p.FaceColor =“红色”;p.EdgeColor =“没有”;daspect ([1] 1 27/128);camlight;照明冯氏

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

输入参数

全部折叠

要分割的图像,指定为二维灰度、真彩色或多光谱图像或三维灰度体积。为图片,lazysnapping假设图像的范围为[0,1]。为uint16int16,uint8图片,lazysnapping假设该范围是给定数据类型的完整范围。如果值不符合基于数据类型的预期范围,则将图像缩放到预期范围或进行调整EdgeWeightScaleFactor改善的结果。

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

输入图像或音量的标记矩阵,指定为数字数组。对于二维灰度图像和三维灰度体积,其大小为l必须匹配输入图像的大小一个。对于彩色图像和多通道图像,l必须是一个二维数组,其中前二维与输入图像的前二维匹配一个

不要将标签矩阵的给定子区域标记为同时属于前景掩码和背景掩码。如果标签矩阵的一个区域包含同时属于前景蒙版和背景蒙版的像素,lazysnapping将区域分割为背景。

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

定义前台的掩码图像,指定为逻辑数组。对于二维灰度图像和三维灰度体积,其大小为foremask必须匹配输入图像的大小一个。对于彩色图像和多通道图像,foremask必须是一个二维数组,其中前二维与输入图像的前二维匹配一个

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

定义背景的掩码图像,指定为逻辑数组。对于二维灰度图像和三维灰度体积,其大小为backmask必须匹配输入图像的大小一个。对于彩色图像和多通道图像,backmask必须是一个二维数组,其中前二维与输入图像的前二维匹配一个

数据类型:||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,…,的家

例子:“连接”,6

连接组件的连接性,指定为逗号分隔对组成“连接”2-D图像为4或8,3-D图像为6、18或26(体积)。

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

标签矩阵的子区域之间的边权的比例因子,指定为逗号分隔对组成“EdgeWeightScaleFactor”和一个正数。典型值范围为[10,1000]。增加这个值会增加lazysnapping标签相邻的子区域一起作为前景或背景。

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

输出参数

全部折叠

分割后的图像,作为与标签矩阵大小相同的逻辑数组返回,l

数据类型:逻辑

提示

  • Li等人开发的lazy snap算法使用K-means方法对前景和背景值进行聚类。这种延迟捕捉算法的实现并不聚类相似的前景或背景像素。为了提高性能,减少与前景或背景值相似的像素数量。

  • 获得面具foremaskbackmask交互式地,您可以在图像上绘制一个ROI,然后通过使用createMask函数。有关更多信息,请参见创建ROI的形状

  • 获取像素指数foreindbackind交互式地,你可以画一个多段线ROI对象drawpolyline函数。得到了x- - -y的顶点坐标位置财产的多段线。最后,将坐标转换为线性指标sub2ind函数。请注意,sub2ind函数使用()坐标而不是(xy)坐标。

参考文献

[1]李颖,简淑珍,邓志强,沈鸿章,懒惰的拍摄第31届计算机图形与交互技术国际会议论文集,2004。

介绍了R2017a