主要内容

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

此示例演示如何使用边缘检测和基本形态学检测细胞。如果对象与背景的对比度足够大,则可以在图像中轻松检测到对象。

步骤1:读取图像

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

I=imread(“cell.tif”);imshow (I)标题(“原始图像”);文本(大小(I,2),大小(I,1)+15,...“艾伦·帕廷提供的图像”,...“字体大小”7.“水平对齐”,“对”);文本(大小(I,2),大小(I,1)+25,....约翰霍普金斯大学的,...“字体大小”7.“水平对齐”,“对”);

步骤2:检测整个细胞

要分割的对象与背景图像的对比度差异很大。计算图像梯度的操作符可以检测到对比度的变化。要创建包含分割单元的二值遮罩,请计算梯度图像并应用阈值。

使用边缘以及Sobel算子来计算阈值。调整阈值并使用边缘再次获得包含分段单元的二进制掩码。

[~,阈值]=边缘(I,“索贝尔”); fudgeFactor=0.5;BWs=边缘(I,“索贝尔”阈值* fudgeFactor);

显示产生的二元梯度掩模。

imshow(BWs)标题(“二元梯度面具”)

步骤3:放大图像

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

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

使用垂直结构元素和水平结构元素展开二元渐变遮罩扩大函数放大图像。

BWsdil=IMDISPLATE(BWs,[se90 se0]);imshow(BWsdil)标题(“放大梯度遮罩”)

第四步:填充内部间隙

放大的渐变遮罩很好地显示了细胞的轮廓,但是细胞内部仍然有洞imfill函数。

BWdfill = imfill (BWsdil,“洞”);imshow(BWdfill)标题(“带填充孔的二值图像”)

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

感兴趣的单元格已成功分割,但它不是找到的唯一对象。可以使用imclearborder函数。若要拆除对角线连接,请在imclearborder作用于4..

BWnobord=imclearborder(BWdfill,4);imshow(BWnobord)标题(“清除边界图像”)

步骤6:平滑对象

最后,为了使分割的对象看起来自然,使用菱形结构元素对图像进行两次腐蚀以平滑对象斯特雷函数。

seD=strel(“钻石”,1);BWfinal=imerode(BWnobord,seD);BWfinal=imerode(BWfinal,seD);imshow(BWfinal)标题(“分割图像”);

步骤7:可视化分割

你可以使用拉贝洛弗雷函数在原始图像上显示遮罩。

imshow (labeloverlay(我BWfinal)标题(“原始图像上的遮罩”)

显示分割对象的另一种方法是在分割单元周围绘制轮廓bwperim函数。

BWoutline=bwperim(BWfinal);Segout=I;Segout(BWoutline)=255;imshow(Segout)标题(“概述原始图像”)

另见

||||||

相关的话题