主要内容

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

k均值クラスタリングを使った色ベースのセグメンテーション

この例では,的L * a * b *表色空间とk均值クラスタリングを使って自动的に色をセグメント化する方法を示します。

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

hestain.pngを読み取ります。これはヘマトキシリンとエオシン(H&E)で染色された组织のイメージです。この染色方法は,病理学者が组织の种类を区别するのに役立ちます。

他= imread('hestain.png');imshow(他),标题('H&E图像');文本(大小(他,2),尺寸(他,1)15,......“艾伦PARTIN图片由约翰·霍普金斯大学......'字体大小',7,'水平对齐''对');

手顺2:イメージをRGB色空间から的L * a * b *表色空间に変换

明度のばらつきを无视した场合に,どのくらいの色を确认できるでしょうか?3つの色があります。白,青,ピンクです。これらの色を视覚的に简単に区别できることに注目してください.L *A * b *色空间(CIELABまたはCIE的L * a * b *表)を使用すると,このような视覚的差异を定量化できます。

的L * a * b *表色空间はCIE XYZ三刺激値から导出されます.L * A * B *空间は,辉度レイヤー 'L *',色が赤 - 绿の轴に沿って位置する场所を示す色度レイヤー 'A *',および色が青 - 黄の轴に沿って位置する场所を示す色度レイヤー 'b *' から构成されますすべての色情报は, 'A *' および“b *“レイヤーにあります。ユークリッド距离计量を使用して,2つの色の间の距离を测定できます。

rgb2labを使用して,イメージを的L * a * b *表色空间に変换します。

lab_he = rgb2lab(他);

手顺3:k均值クラスタリングを使用した 'A * B *' 空间の色の分类

クラスタリングはオブジェクトのグループを区分する方法です.K-装置クラスタリングは,各オブジェクトを空间配置されたオブジェクトとして取り扱います。これは,各クラスター内のオブジェクトができるだけ互いに近くにあり,他のクラスターのオブジェクトからはできるだけ远くにある分割を探します.K-装置クラスタリングでは,分割するクラスターの数と距离计量を指定し,2つのオブジェクトが互いにどのくらい近いかを定量化する必要があります。

色情报が 'A * B *' 色空间に存在するので,オブジェクトは '的a *' および 'B *' 値を持つピクセルです。imsegkmeansで使用するために,データをデータ型单身的に変换します。imsegkmeansを使用して,オブジェクトを3つのクラスターに分类します。

AB = lab_he(:,:,2:3);AB = im2single(AB);NCOLORS = 3;%重复聚类3次,以避免局部极小pixel_labels = imsegkmeans(AB,NCOLORS,'NumAttempts',3);

入力内のすべてのオブジェクトに対して,imsegkmeansはクラスターに対応するインデックス(ラベル)を返します。イメージ内のすべてのピクセルに,そのピクセルラベルでラベル付けします。

imshow(pixel_labels,[])标题(“图片由群集索引标记为”);

手顺4:H&Eイメージを色でセグメント化するイメージの作成

pixel_labelsを使用して,hestain.pngのオブジェクトを色分けできます。この结果,3つのイメージになります。

MASK1 = pixel_labels == 1;cluster1中=他* UINT8(MASK1)。imshow(cluster1中)标题(“对象群集1”);

MASK2 = pixel_labels == 2;Cluster2中=他* UINT8(MASK2)。imshow(Cluster2中)标题(“对象集群2”);

MASK3 = pixel_labels == 3;cluster3 =他* UINT8(MASK3)。imshow(cluster3)标题(“对象集群3”);

手顺5:细胞核のセグメント化

クラスター3には青いオブジェクトが含まれています。绀色と水色のオブジェクトがあることに注目してください.L * A * B *色空间の 'L *' レイヤーを使用して,水色から绀色を分离します。细胞核は绀色です。

'L *' レイヤーには各色の明度値が含まれていることを思い出してください。このクラスターのピクセルの明度の値を抽出し,imbinarizeでグローバルしきい値を使用してそれらの値をしきい値处理します。マスクis_light_blueによって水色のピクセルのインデックスが取得されます。

L = lab_he(:,:,1);L_blue = L *双(MASK3)。L_blue =重新调整(L_blue);idx_light_blue = imbinarize(非零元素(L_blue));

青いオブジェクトのマスク掩码3をコピーし,そのマスクから水色のピクセルを削除します。元のイメージに新しいマスクを适用し,结果を表示します。绀色の细胞核のみ表示されます。

blue_idx =查找(MASK3);mask_dark_blue = MASK3;mask_dark_blue(blue_idx(idx_light_blue))= 0;blue_nuclei =他* UINT8(mask_dark_blue)。imshow(blue_nuclei)标题(“蓝核”);