bwdistgeodesic

Geodesic distance transform of binary image

Syntax

D = bwdistgeodesic(BW,mask)
D = bwdistgeodesic(BW,C,R)
D = bwdistgeodesic(BW,ind)
D = bwdistgeodesic(...,method)

Description

D = bwdistgeodesic(BW,mask) computes the geodesic distance transform, given the binary image BW and the seed locations specified by mask. Regions where BW is true represent valid regions that can be traversed in the computation of the distance transform. Regions where BW is false represent constrained regions that cannot be traversed in the distance computation. For each true pixel in BW, the geodesic distance transform assigns a number that is the constrained distance between that pixel and the nearest true pixel in mask. Output matrix D contains geodesic distances.

D = bwdistgeodesic(BW,C,R) computes the geodesic distance transform of the binary image BW. Vectors C and R contain the column and row coordinates of the seed locations.

D = bwdistgeodesic(BW,ind) computes the geodesic distance transform of the binary image BW. ind is a vector of linear indices of seed locations.

D = bwdistgeodesic(...,method) specifies an alternate distance metric.

Input Arguments

BW

Binary image.

mask

Logical image the same size as BW that specifies seed locations.

C,R

Numeric vectors that contain the positive integer column and row coordinates of the seed locations. Coordinate values are valid C,R subscripts in BW.

ind

Numeric vector of positive integer, linear indices of seed locations.

method

Type of distance metric. method can have any of these values.

MethodDescription

'cityblock'

In 2-D, the cityblock distance between (x1,y1) and (x2,y2) is │x1x2│ + │y1y2│.

'chessboard'

The chessboard distance is
max(│x1x2│,│y1y2│).

'quasi-
euclidean'

The quasi-Euclidean distance is

|x1x2|+(21)|y1y2|, |x1x2|>|y1y2|

(21)|x1x2|+|y1y2|, otherwise.

Default: 'chessboard'

Output Arguments

D

Numeric array of class single, with the same size as input BW, that contains geodesic distances.

Class Support

BW is a logical matrix. C, R, and ind are numeric vectors that contain positive integer values. D is a numeric array of class single that has the same size as the input BW.

Examples

Compute the geodesic distance transformation of BW based on the seed locations specified by vectors C and R. Output pixels for which BW is false have undefined geodesic distance and contain NaN values. Because there is no connected path from the seed locations to element BW(10,5), the output D(10,5) has a value of Inf.

BW = [1 1 1 1 1 1 1 1 1 1;...
     1 1 1 1 1 1 0 0 1 1;...
     1 1 1 1 1 1 0 0 1 1;...
     1 1 1 1 1 1 0 0 1 1;...
     0 0 0 0 0 1 0 0 1 0;...
     0 0 0 0 1 1 0 1 1 0;...
     0 1 0 0 1 1 0 0 0 0;...
     0 1 1 1 1 1 1 0 1 0;...
     0 1 1 0 0 0 1 1 1 0;...
     0 0 0 0 1 0 0 0 0 0];
 
BW = logical(BW);
C = [1 2 3 3 3];
R = [3 3 3 1 2];

D = bwdistgeodesic(BW,C,R);

More About

expand all

Algorithms

bwdistgeodesic uses the geodesic distance algorithm described in Soille, P., Morphological Image Analysis: Principles and Applications, 2nd Edition, Secaucus, NJ, Springer-Verlag, 2003, pp. 219–221.

See Also

|

Was this topic helpful?