Computes region adjacency graph of a labeled 2D or 3D image.
Two regions are considered as neighbor if they are separated by a background (i. e. with color 0) pixel in the horizontal or vertical direction, as well as depth direction for 3D images.
The result is a N*2 array, containing 2 indices for each couple of neighbor regions.
usage:
ADJ = imRAG(IMG);
ADJ has the format [LBL1 LBL2], LBL1 and LBL2 being vertical arrays the same size.
LBL1 is given in ascending order, LBL2 is given in ascending order for each LBL1. Ex :
[1 2]
[1 3]
[1 4]
[2 3]
[2 5]
[3 4]
Alternative syntax:
[NODES, ADJ] = imRAG(IMG);
Return two arrays: the first one is a [N*2] array containing centroids of the N labeled region, and ADJ is the adjacency previously described.
For 3D images, the node array is [N*3].
The algorithm proceed in scanning each line (horizontal, vertical, and in z-direction for 3D images), and by detection transitions in the labels. A background gap of width 1 pixel/voxel is assumed to exist between regions. It is possible to specify different gaps:
* gap = 0 if regions are contiguous (no background),
* gap = 2, when considering the result of a watershed with connectivity 8, resulting in thicker boundaries.
|