グレースケールの画像を元に高い精度でセグメンテーションするアイデアはありますか
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
現在、蛍光画像を使用して細胞のセグメンテーションに取り組んでいます。
ここでは、核(Nuc)を指標として細胞質(Cyto)を個別にセグメントすることが目標です。
以下のコードで、ある程度セグメントできたのですが、
グレースケールのCyto画像と重ねるとセグメント結果と細胞の境界がズレてしまいます。
Cyto画像の細胞境界も指標に加味してセグメントすることで、
より高い精度でセグメントできないかと考えています。
何かいい方法があればご教授頂きたいです。
%画像の読み込みと重ね合わせ
Nuc = imread('Nuclear.png');
Cyto = imread('Cytosol.png');
merge = imfuse(Cyto,Nuc,'falsecolor','Scaling','joint','ColorChannels',[2 1 2]);
merge_crop = imcrop(merge,[10 125 165 165]);
%背景ノイズの除去
NucwoBG=imtophat(Nuc,strel('disk',25));
CytowoBG=imtophat(Cyto,strel('disk',25));
%フィルター処理
medNuc = medfilt2(NucwoBG-10,[5 5]);
medCyto = medfilt2(CytowoBG-10,[5 5]);
%二値化、局所的な最大値の抽出
medNucBW = (medNuc>15);
marker = imextendedmax(medNuc,20);
medCytoBW = (medCyto>0);
%wartershedでセグメンテーション
ws = watershed(imimposemin(-1.0*double(medNuc).*medCytoBW,marker))>0;
mask = medCytoBW.*ws;
%調整と描画
mask_fill = imfill(mask,'holes');
mask_perim = bwperim(mask_fill);
Nuc_perim = bwperim(medNucBW);
overlay = imoverlay(imadjust(Cyto), mask_perim, 'green');
overlay = imoverlay(overlay, Nuc_perim, 'magenta');
overlay_crop = imcrop(overlay,[10 125 165 165]);
montage({merge_crop,overlay_crop},"Size",[1 2]);
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu イメージのセグメンテーション finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!