2

流域アルゴリズムを使用して、暗い背景の明るいスポットをセグメント化しています。コードは、それが生成するいくつかの画像とともに以下に提供されます。

2番目の画像では、「細胞」としてセグメント化された囲まれた背景の領域を赤い十字でマークしました(それらは生物学的細胞ではなく、単に単語を使用しています)-これは正しくありません。それらは背景の一部です. 「セル」で囲まれているだけです。これにより誤った最小値が作成されることがわかりました。これを防ぐ方法について何か助けはありますか?

    % Improve contrast, binarize
RFP_adjust = imadjust(RFP_blur, stretchlim(RFP_blur, 0.001));
figure, imshow(RFP_adjust), title('Contrast adjust');
RFP_binarized = imbinarize(RFP_adjust);
RFP_perimeters = bwperim(RFP_binarized);
% figure, imshow(RFP_binarized), title('Otsu thresholding');

    %2B - SEGMENTATION BY WATERSHED METHOD
    % Discover putative cell centroids and process
RFP_maxs = imextendedmax(RFP_adjust,  3000);
RFP_maxs = imclose(RFP_maxs, strel('disk',5));
RFP_maxs = imfill(RFP_maxs, 'holes');
RFP_maxs = bwareaopen(RFP_maxs, 5);
RFP_max_overlay = imoverlay(RFP_adjust, RFP_perimeters | RFP_maxs, [1 .3 .3]);
figure, imshow(RFP_max_overlay), title('Maxima');

    % Obtain complement - maxima become low-points (required for watershed)
RFP_comp = imcomplement(RFP_adjust);
RFP_imposemin = imimposemin(RFP_comp, ~RFP_binarized | RFP_maxs);
figure, imshow(RFP_imposemin), title('Inverted Maxima');

    % Apply watershed
RFP_watershed = watershed(RFP_imposemin);
mask = im2bw(RFP_watershed, 1);
overlay3 = imoverlay(RFP_adjust, mask, [1 .3 .3]);
figure, imshow(overlay3), title('Segmented cells');

    % Segment
RFP_cc = bwconncomp(RFP_watershed);
RFP_label_matrix = labelmatrix(RFP_cc);
whos labeled;
RFP_label = label2rgb(RFP_label_matrix, @spring, 'c', 'shuffle');
figure, imshow(RFP_label), title('Cells segmented');

画像 0 - 「Maxima」というタイトルの画像の結果 (つまり、最大値とアウトラインがオーバーレイされた元の画像を調整したもの)。ここに画像の説明を入力

画像 1 - 「反転最大値」というタイトルの画像の結果 'Inverted Maxima' というタイトルの画像の結果

画像 2 - 「Cells segmented」というタイトルの画像の結果 ここに画像の説明を入力

4

2 に答える 2