主要内容

使用边缘检测和形态学检测细胞

这个例子展示了如何使用边缘检测和基本形态学来检测一个细胞。如果物体与背景有足够的对比度,那么在图像中可以很容易地检测到物体。

第一步:阅读图像

读的cell.tif图像,这是前列腺癌细胞的图像。图中有两个细胞,但只能看到一个完整的细胞。目标是检测或分割完全可见的细胞。

我= imread ('cell.tif');imshow(i)标题(原始图像的);文本(大小(我,2),大小(我,1)+ 15,...图片由Alan Partin提供...“字形大小”7“HorizontalAlignment”'对');文字(大小(i,2),尺寸(i,1)+25,...'约翰霍普金斯大学'...“字形大小”7“HorizontalAlignment”'对');

图包含一个坐标轴对象。标题为Original Image的轴对象包含Image、text类型的3个对象。

步骤2:检测整个单元格

待分割的物体与背景图像有很大的差异。计算图像梯度的操作人员可以检测到对比度的变化。为了创建一个包含分割单元的二进制掩码,计算梯度图像并应用一个阈值。

边缘和Sobel算子计算阈值。调优阈值和使用边缘再次获得包含分割单元的二进制掩码。

[〜,阈值] =边缘(I,'sobel');fudgeFactor = 0.5;受虐妇女综合症=边缘(我'sobel',阈值*柔软剂);

显示生成的二进制梯度掩模。

imshow(受虐妇女综合症)标题('二进制渐变面膜'

图包含一个坐标轴对象。带有标题二值渐变蒙版的轴对象包含一个图像类型的对象。

步骤3:放大图像

二值梯度蒙版显示了图像中高对比度的线条。这些线条并不能很好地勾勒出感兴趣的对象的轮廓。与原始图像相比,在渐变蒙版中,物体周围的线条有缝隙。如果使用线性结构元素放大Sobel图像,这些线性间隙将消失。创建两个垂直的线性结构元素strel函数。

se90 = strel (“行”,3,90);se0 = strel(“行”3 0);

使用垂直结构元素和水平结构元素来扩展二元梯度掩模。的imdilate功能扩展了图像。

BWsdil = imdilate(BWs,[se90 se0]);imshow (BWsdil)标题(“扩张梯度面具”

图包含一个坐标轴对象。带有标题膨胀渐变蒙版的轴对象包含一个图像类型的对象。

第4步:填补内部空白

扩张的梯度掩模非常好地显示细胞的轮廓,但细胞内部存在仍然存在孔。要填补这些孔,请使用imfer.函数。

bwdfill = imfill(bwsdil,'洞');imshow(bwdfill)标题(“填满洞的二值图像”

图包含一个坐标轴对象。带有填充孔的标题二进制图像的轴对象包含类型图像的对象。

步骤5:移除边界上的连接对象

感兴趣的细胞已经被成功分割,但它不是找到的唯一对象。对象可以删除连接到图像边界的任何对象imclearborder函数。要删除对角线连接,请设置连接中的连接imclearborder函数4

BWnobord = imclearborder (BWdfill 4);imshow (BWnobord)标题('清除边框图像'

图包含一个坐标轴对象。具有标题清除边框图像的轴对象包含类型图像的对象。

第6步:平滑对象

最后,为了使分割出来的物体看起来自然,使用菱形结构元素对图像进行两次腐蚀,使物体平滑。创建菱形结构元素strel函数。

seD = strel (“钻石”,1);bwfinal = imerode(bwnobord,sed);BWFINAL = IMERODE(BWFINAL,SED);imshow(bwfinal)标题('分段图像');

图包含一个坐标轴对象。标题为分段图像的轴对象包含一个图像类型的对象。

步骤7:可视化分割

你可以使用labeloverlay函数在原始图像上显示掩码。

imshow(Labeloverlay(i,bwfinal))标题(“原始图像蒙版”

图包含一个坐标轴对象。具有OR原始图像上标题掩码的轴对象包含类型图像的对象。

显示分段对象的替代方法是绘制围绕分段单元的轮廓。使用绘制轮廓bwperim函数。

bwoutline = bwperim(bwfinal);segout = i;SEGOUT(BWOUTLINE)= 255;imshow(segout)标题(概述了原始图像的

图包含一个坐标轴对象。具有标题的轴对象原始图像包含类型图像的对象。

另请参阅

||||||

相关话题