グレースケールの画像を元に高い精度でセグメンテーションするアイデアはありますか
조회 수: 2 (최근 30일)
이전 댓글 표시
現在、蛍光画像を使用して細胞のセグメンテーションに取り組んでいます。
ここでは、核(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
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 イメージのセグメンテーション에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!