このページの翻訳は最新ではありません。ここをクリックして,英语の最新版を参照してください。
この例では,的L * a * b *表色空间とk均值クラスタリングを使って自动的に色をセグメント化する方法を示します。
hestain.png
を読み取ります。これはヘマトキシリンとエオシン(H&E)で染色された组织のイメージです。この染色方法は,病理学者が组织の种类を区别するのに役立ちます。
他= imread('hestain.png');imshow(他),标题('H&E图像');文本(大小(他,2),尺寸(他,1)15,......“艾伦PARTIN图片由约翰·霍普金斯大学那......'字体大小',7,'水平对齐'那'对');
明度のばらつきを无视した场合に,どのくらいの色を确认できるでしょうか?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(他);
クラスタリングはオブジェクトのグループを区分する方法です.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,[])标题(“图片由群集索引标记为”);
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”);
クラスター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)标题(“蓝核”);