Documentation

graydist

Gray-weighted distance transform of grayscale image

Syntax

T = graydist(A,mask)
T = graydist(A,C,R)
T = graydist(A,ind)
T = graydist(...,method)

Description

T = graydist(A,mask) computes the gray-weighted distance transform of the grayscale image A. Locations where mask is true are seed locations.

T = graydist(A,C,R) uses vectors C and R to specify the row and column coordinates of seed locations.

T = graydist(A,ind) specifies the linear indices of seed locations using the vector ind.

T = graydist(...,method) specifies an alternate distance metric. method determines the chamfer weights that are assigned to the local neighborhood during outward propagation. Each pixel's contribution to the geodesic time is based on the chamfer weight in a particular direction multiplied by the pixel intensity.

Input Arguments

A

Grayscale image.

mask

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

C,R

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

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

T

Array the same size as A that specifies the gray-weighted distance transform. If the input numeric type of A is double, the output numeric type of T is double. If the input is any other numeric type, the output T is single.

Class Support

A can be numeric or logical, and it must be nonsparse. mask is a logical array of the same size as A. C, R, and ind are numeric vectors that contain positive integer values.

The output T is an array of the same size as A. If the input numeric type of A is double, the output T is double. If the input is any other numeric type, the output T is single.

Examples

Matrices generated by the magic function have equal row, column and diagonal sums. The minimum path between the upper left and lower right corner is along the diagonal. The following example demonstrates how the graydist function computes this path:

A  = magic(3)
T1 = graydist(A,1,1);
T2 = graydist(A,3,3);
T  = T1 + T2
A =

     8     1     6
     3     5     7
     4     9     2
     


T =

     10    11    17
     13    10    13
     17    17    10

As expected, there is a constant-value minimum path along the diagonal.

More About

collapse all

Algorithms

graydist uses the geodesic time algorithm described in Soille, P., Generalized geodesy via geodesic time,, Pattern Recognition Letters, vol.15, December 1994; pp. 1235–1240

The basic equation for geodesic time along a path is:

τf(P)=f(po)2+f(pl)2+i=1l1f(pi)

Was this topic helpful?