主要内容

K-평균군집화를사용한색기반분할

이예제에서는L * a * b *컬러스페이스와K -평균군집화를사용하여색을자동으로분할하는방법을보여줍니다。

1단계:단계상읽어들이기

헤마톡실린과에오신(h&e)으로염색한조직을촬헤마톡실린과에오신한hestain.png를읽어들입니다。이러한염색법을사용해병리학자는서로다른조직유형을쉽게구별할수있습니다。

He = imread)“hestain.png”);imshow(他)、标题(“他走时形象”);文本(大小(他,2),大小(他,1)+ 15,...图片由约翰霍普金斯大学的艾伦·帕丁提供...“字形大小”7“HorizontalAlignment”“对”);

图中包含一个轴。标题为H&E image的轴包含image、text类型的2个对象。

2단계:단계상을RGB컬러스페이스에서L*a*b*컬러스페이스로변환하기

밝기변화를무시할경우상에서몇가지색이보입니까?상에는세가지색,즉흰색,파란색,분홍색이있습니다。이러한색을눈으로얼마나쉽게구별할수있는지보십시오。L * a * b *컬러스페이스(CIELAB또는CIE L * a * b *라고도함)를사용하면이러한시각적차이를수량화할수있습니다。

L*a*b*컬러스페이스는CIE XYZ 3자극값에서파생됩니다。L * a * b *컬러스페이스는광도층' L *과색도층‘*’(빨간색——녹색축에놓인색의위치를나타냄)와색도층" b *’(파란색——노란색축에놓인색의위치를나타냄)로구성됩니다。모든색정보는'a*'층과'b*'층에있습니다。두색의차이는유클리드거리측정법을사용하여측정할수있습니다。

rgb2lab를사용하여상을L*a*b*컬러스페이스로변환합니다。

Lab_he = rgb2lab(he);

3단계:K-평균군집화를사용하여'a*b*'스페이스의색분류하기

군집화는객체그룹을분리하는방법입니다。K-평균군집화는각객체가스페이스에서한위치를차지하는것으로처리합니다。이함수는객체가각군집내에서는최대한서로가까이있고다른군집내의객체와는최대한멀리있도록하는파티션을찾습니다。K -평균군집화를사용하려면분할할군집수와두객체가서로얼마나가까운지를수량화하는거리측정법을지정해야합니다。

색정보가' a * b *컬러스페이스에있기때문에객체는' * '값과的b *값을갖는픽셀입니다。imsegkmeans에사용할수있도록데이터의데이터형을형으로변환합니다。imsegkmeans를사용하여객체를세개의군집으로군집화합니다。

Ab = lab_he(:,:,2:3);Ab = im2single(Ab);nColors = 3;%重复聚类3次以避免局部极小值pixel_labels = imsegkmeans(ab,nColors,“NumAttempts”3);

입력값의모든객체에대해imsegkmeans는군집에해당하는덱스또는레이블을반환합니다。픽셀레이블을사용하여상의모든픽셀에레이블을지정합니다。

imshow (pixel_labels[])标题(“由聚类索引标记的图像”);

图中包含一个轴。标题为Image的轴包含一个Image类型的对象。

4단계:h&e상을색으로분할한상만들기

pixel_labels를사용하여hestain.png의객체를색으로분리할수있습니다。그결과,세개의상이만들어집니다。

Mask1 = pixel_labels==1;Cluster1 = he .* uint8(mask1);imshow (cluster1)标题(“集群1中的对象”);

图中包含一个轴。Cluster 1中标题为Objects的轴包含一个image类型的对象。

Mask2 = pixel_labels==2;Cluster2 = he .* uint8(mask2);imshow (cluster2)标题(“集群2中的对象”);

图中包含一个轴。Cluster 2中标题为Objects的轴包含一个image类型的对象。

Mask3 = pixel_labels==3;Cluster3 = he .* uint8(mask3);imshow (cluster3)标题(“集群3中的对象”);

图中包含一个轴。集群3中标题为Objects的轴包含一个image类型的对象。

5단계:핵분할하기

군집3에파란색객체가포함되어있습니다。진한파란색객체와연한파란색객체가있습니다。L * a * b *컬러스페이스에서' L *층을사용하여연한파란색에서진한파란색을분리할수있습니다。진한파란색은세포핵입니다。

' l *'층에는각색의밝기값이포함되어있다는사실을기억하십시오。이군집에서픽셀의밝기값을추출한다음,그값을imbinarize를사용하여전역임계값으로이진화합니다。마스크is_light_blue는연한파란색픽셀의덱스를제공합니다。

L = lab_he(:,:,1);L_blue = L .* double(mask3);L_blue = rescale(L_blue);idx_light_blue = imbinalize(非零(L_blue));

파란색객체의마스크mask3을복사한다음,마스크에서연한파란색픽셀을제거합니다。원래상에새마스크를적용한후결과를시합니다。진한파란색세포핵만@ @시됩니다。

Blue_idx = find(mask3);Mask_dark_blue = mask3;Mask_dark_blue (blue_idx(idx_light_blue)) = 0;blue_nucleus = he .* uint8(mask_dark_blue);imshow (blue_nuclei)标题(“蓝色细胞核”);

图中包含一个轴。标题为Blue原子核的轴包含一个图像类型的对象。