2値化画像(バイナリ​イメージ)のオブジェ​クトの輪郭を切り取る​。

37 ビュー (過去 30 日間)
HIGUCHI 樋口
HIGUCHI 樋口 2021 年 11 月 10 日
コメント済み: HIGUCHI 樋口 2022 年 3 月 11 日
細胞1つ1つをトリミングしたいのですが、正方形でトリミングを行うと境界面に他の細胞が映り込んできてします(画像①)。
そこで、「目的の細胞部分だけをトリミング」してから、「他の画像(背景)に張り付ける」という事を考えています。
「目的の細胞部分だけをトリミング」の方法としては以下の図のように、2値化して目的の細胞部分だけ残し(画像②)、その輪郭元画像(画像①)に反映させて切り取るといった流れです
2値化画像で目的の細胞を残すところまでは出来ているのですが、
2値化画像の白い部分の輪郭で元画像(画像①)を切り取って別紙に張り付ける箇所で難航しています。
何か良い案がありますでしょうか、よろしくお願いします。画像①、画像②、背景の画像を添付しておきます。
また、他にも細胞1つ1つを抽出する案がございましたら、ご提案頂けると幸いです。

採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 11 月 10 日
編集済み: Atsushi Ueno 2021 年 11 月 10 日
org = imread('original_image.jpg');
bin = imread('binary_image.jpg') > 128; % 0-255なのでFalse/Trueのマスクにする
bgd = imread('background.jpg');
masked_org = org .* uint8(repmat(bin,[1 1 3])); % 元画像とマスクのANDを取る
masked_bgd = bgd .* uint8(repmat(~bin,[1 1 3])); % 背景画像と反転したマスクのANDを取る
final_image = masked_org + masked_bgd; % 最終的に得たい画像
montage({org, bgd, bin, masked_org, masked_bgd, final_image},'Size', [2 3], 'BorderSize', [50 50], 'BackgroundColor', 'white');
  1 件のコメント
HIGUCHI 樋口
HIGUCHI 樋口 2022 年 3 月 11 日
大変参考になりました。ありがとうございます。

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!