# 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

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);```

collapse 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.