N-dimensional find

バージョン (1.99 KB) 作成者: Sven
FIND_NDIM Finds the first or last nonzero element indices along a given matrix dimension.
ダウンロード: 835
更新 2012/8/20


This function finds the 'first' pixel in an N-dimensional image, along any dimension. This is somewhat like measuring from the top row of an image towards the bottom row of the image, and recording the first collision with an "on" pixel.

FIND_NDIM Finds first/last nonzero element indices along a dimension.
I = FIND_NDIM(BW,DIM) returns the subscripts of the first nonzero
elements of BW along the dimension DIM. Output I will contain zeros in
element locations where no nonzero elements were found

I = FIND_NDIM(BW,DIM,'first) is the same as I = FIND_NDIM(BW,DIM).

I = FIND_NDIM(BW,DIM,'last') returns the subscripts of the last nonzero
elements of BW along the dimension DIM.

[I,MASK] = FIND_NDIM(BW,DIM,...) also returns a MASK the same size as
BW with only the first/last pixels in dimension DIM on.

Example 1:
If X = [0 1 0
1 1 0]
then find_ndim(X,1) returns [2 1 0], find_ndim(X,1,'last')
returns [2 2 0], and find_ndim(X,2) returns [2 1]';

Example 2:
I = imread('rice.png');
greyIm = imadjust(I - imopen(I,strel('disk',15)));
BW = imclearborder(bwareaopen(im2bw(greyIm, graythresh(greyIm)), 50));
topMostOnInds = find_ndim(BW, 1, 'first');
rightMostOnInds = find_ndim(BW, 2, 'last');
figure, imshow(BW), hold on
plot(1:size(BW,2), topMostOnInds, 'r.')
plot(rightMostOnInds, 1:size(BW,1), '.b')

A discussion of how this came about is at:


Sven (2024). N-dimensional find (https://www.mathworks.com/matlabcentral/fileexchange/27755-n-dimensional-find), MATLAB Central File Exchange. 取得済み .

MATLAB リリースの互換性
作成: R2010a
Windows macOS Linux
Help Center および MATLAB AnswersFeature Detection and Extraction についてさらに検索
タグ タグを追加

Community Treasure Hunt

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

Start Hunting!
バージョン 公開済み リリース ノート

Added mask second output argument

Updated icon and help