主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

エッジ検出とモルフォロジーを使用した細胞の検出

この例では,エッジ検出と基本的なモルフォロジーを使用して細胞を検出する方法を示します。オブジェクトは,背景と十分なコントラストがある場合,イメージ内で簡単に検出されます。

手順1:イメージの読み取り

cell.tifイメージを読み取ります。これは前立腺癌細胞のイメージです。このイメージには2つの細胞がありますが,1つの細胞だけ全体が表示されています。目標は,完全に表示されている細胞を検出,すなわちセグメント化することです。

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

图中包含一个坐标轴。标题为“原始图像”的轴包含3个类型为图像、文本的对象。

手順2:細胞全体の検出

セグメント化するオブジェクトは,コントラストが背景のイメージと大きく異なります。コントラストの変化は,画像勾配を計算する演算子によって検出できます。セグメント化された細胞を含んでいるバイナリマスクを作成するには,画像勾配を計算し,しきい値を適用します。

边缘とソーベル演算子を使用してしきい値を計算します。しきい値を調整し再度边缘を使用して,セグメント化された細胞を含んでいるバイナリマスクを取得します。

[~,阈值]=边缘(我“索贝尔”);fudgeFactor = 0.5;受虐妇女综合症=边缘(我“索贝尔”阈值* fudgeFactor);

結果のバイナリ勾配マスクを表示します。

imshow(受虐妇女综合症)标题(“二元梯度面具”

图中包含一个坐标轴。标题为二元渐变蒙版的轴包含一个类型为image的对象。

手順3:イメージの膨張

バイナリの勾配マスクでは,イメージに高いコントラストの線が示されます。これらの線は,対象オブジェクトの輪郭を正確には表しません。元のイメージと比べて,勾配マスクのオブジェクトの周囲の線にはギャップがあります。これらの線のギャップは,線形構造化要素を使用してソーベルイメージを膨張させると見えなくなります。関数strelを使用して2つの垂直な線形構造化要素を作成します。

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

縦方向の構造化要素を使用し,次に横方向の構造化要素を使用して,バイナリ勾配マスクを膨張します。関数imdilateはイメージを膨張します。

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

图中包含一个坐标轴。标题为“膨胀渐变蒙版”的轴包含一个类型为image的对象。

手順4:内部ギャップの塗りつぶし

膨張した勾配マスクでは細胞の輪郭がよく見えますが,細胞の内部にはまだ穴があります。これらの穴を塗りつぶすために,関数imfillを使用します。

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

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

手順5:境界に接触するオブジェクトの削除

対象細胞は適切にセグメント化されましたが,検出されたのはこのオブジェクトのみではありません。イメージの境界に接触するオブジェクトは,関数imclearborderを使用して削除できます。斜め方向の接触部分を削除するには,関数imclearborderの連結性を4に設定します。

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

图中包含一个坐标轴。标题为“清除边界图像”的轴包含一个类型为“图像”的对象。

手順6:オブジェクトの平滑化

最後に,セグメント化されたオブジェクトが自然に見えるように,ダイヤモンド構造化要素でイメージを2回収縮してオブジェクトを平滑にします。関数strelを使用してダイヤモンド構造化要素を作成します。

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

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

手順7:セグメンテーションの可視化

関数labeloverlayを使用して,マスクを元のイメージの上に重ねて表示することができます。

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

图中包含一个坐标轴。标题蒙版覆盖原始图像的轴包含一个类型为Image的对象。

セグメント化したオブジェクトを表示する別の方法は,セグメント化された細胞の周りに輪郭を描くことです。関数bwperimを使用して輪郭を描きます。

BWoutline = bwperim (BWfinal);Segout =我;Segout (BWoutline) = 255;imshow (Segout)标题(概述了原始图像的

图中包含一个坐标轴。标题为“轮廓原始图像”的轴包含一个类型为“图像”的对象。

参考

||||||

関連するトピック