グレースケールの画像​を元に高い精度でセグ​メンテーションするア​イデアはありますか

2 visualizzazioni (ultimi 30 giorni)
謙介 山下
謙介 山下 il 2 Giu 2023
現在、蛍光画像を使用して細胞のセグメンテーションに取り組んでいます。
ここでは、核(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]);

Risposte (0)

Prodotti


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!