This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


Gray-weighted distance transform of grayscale image


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


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


Grayscale image.


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


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


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


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



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


The chessboard distance is


The quasi-Euclidean distance is

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

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

Default: 'chessboard'

Output Arguments


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.


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


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:


Introduced in R2011b

Was this topic helpful?