0

MATLAB で関数を使用する場合regionprops、各接続コンポーネントのバイナリ イメージを抽出するオプションがあります。バイナリ イメージのサイズは、連結要素のサイズに縮小されます。バイナリ イメージのサイズを小さくしたくありません。バイナリ イメージのサイズを元のサイズのままにし、選択した連結成分のみを元のイメージ サイズの対応する位置に表示したい。元の画像サイズで連結成分を抽出するにはどうすればよいですか?

4

1 に答える 1

2

元の画像と同じサイズの空白の画像を作成し、ブロブごとに画像を抽出する代わりに、各ブロブの元の画像を参照して実際のピクセル位置を抽出し、これらの場所をtrueこの空白でバイナリに設定して空白の画像を入力します画像。PixelIdxListfrom 属性を使用しregionpropsて目的のコンポーネントの列の主要な位置を取得し、これらを使用して同じ位置の出力画像を に設定しますtrue

regionprops構造体が に保存されていて、 th コンポーネントSを抽出したい場合、および元の画像が に保存されていると仮定すると、次の手順を実行します。kA

% 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 に答える