グレースケールの画像を元に高い精度でセグメンテーションするアイデアはありますか
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
現在、蛍光画像を使用して細胞のセグメンテーションに取り組んでいます。
ここでは、核(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 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur イメージのセグメンテーション dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!