Marker-Controlled分水岭分割
这个例子展示了如何使用分水岭分割单独触摸对象在一个图像。分水岭变换发现“汇水盆地”和“分水岭脊线”在一个图像,把它作为一个表面亮像素很高,暗像素很低。
使用分水岭变换分割效果更好如果你能确定,或“马克,”前景物体和背景的位置。Marker-controlled分水岭分割遵循这一基本过程:
计算一个分段函数。这是一个形象的黑暗区域的对象你想段。
计算前景标记。这些连接块内像素的每一个对象。
计算背景标记。这些像素不属于任何对象。
修改细分功能,以便它只有最小值在前景和背景标记的位置。
计算的分水岭变换分割函数修改。
步骤1:在彩色图像转换成灰度
rgb = imread (“pears.png”);I = im2gray (rgb);imshow (I)文本(732501“图片由Corel (R)”,…“字形大小”7“HorizontalAlignment”,“正确”)
步骤2:使用梯度大小作为细分功能
计算梯度大小。梯度高的边界内的对象和低(大部分)对象。
gmag = imgradient(我);imshow (gmag[])标题(“梯度大小”)
你能段直接使用分水岭变换的图像梯度大小?
L =分水岭(gmag);Lrgb = label2rgb (L);imshow (Lrgb)标题(“梯度的分水岭变换级”)
不。没有额外的下面的标记计算等预处理,直接使用分水岭变换往往导致“oversegmentation。”
步骤3:马克前景对象
各种各样的程序可以应用在这里找到前台标记,必须在每个连接的像素的前景对象。在本例中,您使用形态学技术称为“opening-by-reconstruction”和“closing-by-reconstruction”“干净”的形象。这些操作将创建平极大值在每个对象,可以使用imregionalmax
。
开放是一种侵蚀,后跟一个扩张,而opening-by-reconstruction是一种侵蚀,后跟一个形态学重建。让我们来比较一下这两个概念。首先,计算开放使用imopen
。
se = strel (“磁盘”,20);Io = imopen(我,se);imshow (Io)标题(“开放”)
接下来计算opening-by-reconstruction使用imerode
和imreconstruct
。
Ie = imerode(我,se);Iobr = imreconstruct(即我);imshow (Iobr)标题(“Opening-by-Reconstruction”)
打开与关闭后可以消除黑斑和干细胞标志。比较常规的形态与closing-by-reconstruction关闭。第一次尝试imclose
:
国际奥委会= imclose (Io, se);imshow (Ioc)标题(“开合”)
现在使用imdilate
紧随其后的是imreconstruct
。请注意你必须补充图像的输入和输出imreconstruct
。
Iobrd = imdilate (Iobr, se);Iobrcbr = imreconstruct (imcomplement (Iobrd) imcomplement (Iobr));Iobrcbr = imcomplement (Iobrcbr);imshow (Iobrcbr)标题(“重建开合”)
正如你所看到的比较Iobrcbr
与国际奥委会
,reconstruction-based打开和关闭比标准更有效的打开和关闭删除小瑕疵不影响整体形状的对象。计算区域的最大值Iobrcbr
获得良好的前景标记。
女性生殖器切割= imregionalmax (Iobrcbr);imshow(女性生殖器切割)标题(“地区Maxima开合的重建”)
帮助解释结果,将原始图像的前景标记图像。
I2 = labeloverlay(我、女性生殖器切割);imshow (I2)标题(“地区Maxima叠加在原始图像”)
注意到一些mostly-occluded和阴影对象并不明显,这意味着这些对象将无法正确分割的最终结果。同时,前台标记在某些对象到对象的边缘。这意味着你应该干净的边缘标记斑点和缩小一点。你可以通过关闭一个侵蚀紧随其后。
se2 = strel(的(5,5));fgm2 = imclose(女性生殖器切割,se2);fgm3 = imerode (fgm2 se2);
这个过程往往会留一些流浪孤立像素,必须删除。您可以使用bwareaopen
删除所有斑点,有少于一定数量的像素。
fgm4 = bwareaopen (fgm3 20);I3 = labeloverlay(我fgm4);imshow (I3)标题(“修改区域极大值叠加在原始图像”)
第四步:计算背景标记
现在您需要马克的背景。净化后的图像,Iobrcbr
黑暗的像素属于背景,所以你可以先阈值操作。
bw = imbinarize (Iobrcbr);imshow (bw)标题(“重建阈值开合”)
在黑色背景像素,但理想情况下我们不需要背景标记太接近物体的边缘我们试图段。我们将“瘦”背景下通过计算“骨架影响区”,或SKIZ的前景bw
。可以通过计算的距离变换的分水岭变换bw
,然后寻找分水岭脊线(戴斯。莱纳姆:= = 0
)的结果。
D = bwdist (bw);DL =分水岭(D);bgm = DL = = 0;imshow (bgm)标题(“分水岭脊线”)
第五步:计算的分水岭变换分割函数
这个函数imimposemin
可以用来修改一个图像,区域最小值只在某些预期的位置。在这里您可以使用imimposemin
修改梯度图像大小,以便它唯一的区域最小值出现在前景和背景标记像素。
gmag2 = imimposemin (gmag bgm | fgm4);
最后,计算出watershed-based分割。
L =分水岭(gmag2);
第六步:可视化结果
一个可视化技术是将前台标记,背景标记,在原始图像和分割对象边界。您可以使用扩张所需的某些方面,例如对象边界,更可见。对象边界位于的地方L = = 0
。二进制前景和背景标记扩展到不同的整数值,这样他们被分配不同的标签。
标签= imdilate (L = = 0, (3)) + 2 * bgm + 3 * fgm4;当= labeloverlay(我、标签);imshow(预告)标题(“标记和对象边界叠加在原始图像”)
该可视化展示了前景和背景的位置标记如何影响结果。在两个位置,部分闭塞的深色物体与光明的邻居合并对象,因为阻挡物体没有前景标记。
另一个有用的可视化技术是显示标签作为一个彩色图像矩阵。标签矩阵,如产生的分水岭
和bwlabel
,可以被转换成真彩图像可视化的目的使用label2rgb
。
Lrgb = label2rgb (L,“喷气机”,“w”,“洗牌”);imshow (Lrgb)标题(“彩色标签分水岭矩阵”)
可以使用透明度添加这个伪色彩标签矩阵上的原始强度图像。
图imshow(我)在himage = imshow (Lrgb);himage。AlphaData = 0.3;标题(“原始图像彩色标签叠加透明”)
另请参阅
分水岭
|imopen
|imreconstruct
|imclose
|imdilate
|imregionalmax
|imerode
|bwareaopen
|bwdist
|label2rgb
|imcomplement
|labeloverlay
|imgradient