m x n
次のような白い領域の論理画像がある場合:
白と黒の領域の境界線のインデックスを取得するにはどうすればよいですか?
m x n
次のような白い領域の論理画像がある場合:
白と黒の領域の境界線のインデックスを取得するにはどうすればよいですか?
これは単に、与えられた画像のエッジを検出することになります。MATLABには、edge
コマンドにそのための実装がすでに組み込まれています。I
キャニーフィルターを使用して画像の境界を検出する例を次に示します。
A = edge(I, 'canny');
結果の画像のゼロ以外の要素は、A
あなたが求めているものです。次に、を使用find
してそれらのインデックスを取得できます。
edge
入力はクリアなバイナリイメージであるため、@EitanTで提案されているように使用する必要はありません。
モルフォロジー演算を使用して周囲長を取得するimdilate
、imerode
およびregionprops
:
% let input image be bw
we = bw & ~imerode( bw, strel('disk', 1) ); % get a binary image with only the boundary pixels set
st = regionprops(we, 'PixelIdxList'); % get the linear indices of the boundary
% get a binary image with pixels on the outer side of the shape set
be = ~bw & imdilate( bw, strel('disk', 1) );
st = regionprops(be, 'PixelList'); % get the row-col indices of the boundary