MATLAB で関数を使用する場合regionprops
、各接続コンポーネントのバイナリ イメージを抽出するオプションがあります。バイナリ イメージのサイズは、連結要素のサイズに縮小されます。バイナリ イメージのサイズを小さくしたくありません。バイナリ イメージのサイズを元のサイズのままにし、選択した連結成分のみを元のイメージ サイズの対応する位置に表示したい。元の画像サイズで連結成分を抽出するにはどうすればよいですか?
質問する
388 次
1 に答える
2
元の画像と同じサイズの空白の画像を作成し、ブロブごとに画像を抽出する代わりに、各ブロブの元の画像を参照して実際のピクセル位置を抽出し、これらの場所をtrue
この空白でバイナリに設定して空白の画像を入力します画像。PixelIdxList
from 属性を使用しregionprops
て目的のコンポーネントの列の主要な位置を取得し、これらを使用して同じ位置の出力画像を に設定しますtrue
。
regionprops
構造体が に保存されていて、 th コンポーネントS
を抽出したい場合、および元の画像が に保存されていると仮定すると、次の手順を実行します。k
A
% Allocate blank image
out = false(size(A, 1), size(A, 2));
% Run regionprops
S = regionprops(A, 'PixelIdxList');
% Determine which object to extract
k = ...; % Fill in ID here
% Obtain the indices
idx = S(k).PixelIdxList;
% Create the mask to be the same size as the original image
out(idx) = true;
imshow(out); % Show the final mask
複数のオブジェクトがあり、オブジェクトごとに個別に画像の元のサイズであるこのマスクを作成したい場合は、for
ループを使用してそれを行うことができます。
% Run regionprops
S = regionprops(A, 'PixelIdxList');
% For each blob...
for k = 1 : numel(S)
out = false(size(A, 1), size(A, 2)); % Allocate blank image
% Extract out the kth object's indices
idx = S(k).PixelIdxList;
% Create the mask
out(idx) = true;
% Do your processing with out ...
% ...
end
于 2016-08-15T21:06:52.987 に答える