이페이지의최신내용은아직번역되지않았습니다。최신내용은영문으로볼수있습니다。

경계검출과모폴로지를사용하여세포검출하기

이예제에서는경계검출과기본모폴로지를사용하여세포를검출하는방법을보여줍니다。배경과두드러지게대비되는객체는영상에서쉽게검출할수있습니다。

1단계:영상읽어들이기

전립선암세포영상인cell.tif영상을읽어들입니다。이영상에는세포가두개있지만,완전히보이는세포는하나뿐입니다。목표는완전히보이는세포를검출또는분할하는것입니다。

I = imread('cell.tif');imshow(I)称号(“原始图像”);文本(大小(I,2),大小(I,1)15,...“艾伦PARTIN的图片由”...'字体大小',7,'水平对齐''对');文本(大小(I,2),大小(I,1)25,...“约翰·霍普金斯大学...'字体大小',7,'水平对齐''对');

2단계:완전한세포검출하기

분할할객체는배경영상과대비차이가큽니다。대비변화는영상기울기를계산하는연산자를통해검출할수있습니다。분할된세포를포함하는이진마스크를만들려면기울기영상을계산하고임계값을적용하십시오。

边缘와소벨(索贝尔)연산자를사용하여임계값을계산합니다。임계값을조정하고边缘를다시사용하여,분할된세포를포함하는이진마스크를얻습니다。

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

결과로생성된이진기울기마스크를표시합니다。

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

3단계:영상팽창시키기

이진기울기마스크에는영상의고대비를나타내는선이표시됩니다。이러한선으로원하는객체의윤곽을알기가어렵습니다。원본영상과비교해보면,기울기마스크의객체를둘러싼선들간에간격이있는것을알수있습니다。이러한선간격은선형구조요소를사용하여소벨영상을팽창시키면사라집니다。strel함수를사용하여두개의직교하는선형구조요소를만듭니다。

SE90 = strel('线',3,90);SE0 = strel('线',3,0);

세로구조요소다음에가로구조요소를사용하여이진기울기마스크를팽창시킵니다。imdilate함수는영상을팽창시킵니다。

BWsdil = imdilate(BW的,[SE90 SE0]);imshow(BWsdil)标题(“扩张型梯度面具”

4단계:내부간격채우기

팽창된기울기마스크는세포윤곽선이꽤깔끔하게정돈되었지만,셀내부에아직도구멍이있습니다。이러한구멍을채우려면imfill함수를사용하십시오。

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))标题(“面具戴在原始图像”

분할된객체를표시하는또다른방법은분할된세포주위에윤곽선을그리는것입니다。bwperim함수를사용하여윤곽선을그립니다。

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

참고항목

||||||

관련항목