2値化画像(バイナリイメージ)のオブジェクトの輪郭を切り取る。
10 views (last 30 days)
Show older comments
細胞1つ1つをトリミングしたいのですが、正方形でトリミングを行うと境界面に他の細胞が映り込んできてします(画像①)。
そこで、「目的の細胞部分だけをトリミング」してから、「他の画像(背景)に張り付ける」という事を考えています。
「目的の細胞部分だけをトリミング」の方法としては以下の図のように、2値化して目的の細胞部分だけ残し(画像②)、その輪郭を元画像(画像①)に反映させて切り取るといった流れです。
2値化画像で目的の細胞を残すところまでは出来ているのですが、
2値化画像の白い部分の輪郭で元画像(画像①)を切り取って別紙に張り付ける箇所で難航しています。
何か良い案がありますでしょうか、よろしくお願いします。画像①、画像②、背景の画像を添付しておきます。
また、他にも細胞1つ1つを抽出する案がございましたら、ご提案頂けると幸いです。
0 Comments
Accepted Answer
Atsushi Ueno
on 10 Nov 2021
Edited: Atsushi Ueno
on 10 Nov 2021
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');
More Answers (0)
See Also
Categories
Find more on 大規模なイメージ ファイル in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!