NAME

chamfer_transform - Computes the chamfer distance transform of a binary edge image.

SYNOPSIS

#include "g/g_chamfer.h"

Example compile flags (system dependent):
  -DLINUX_X86_64 -DLINUX_X86_64_OPTERON  -DGNU_COMPILER 
   -I/home/kobus/include
   -L/home/kobus/misc/load/linux_x86_64_opteron -L/usr/lib/x86_64-linux-gnu
  -lKJB                               -lfftw3  -lgsl -lgslcblas -ljpeg  -lSVM -lstdc++                    -lpthread -lSLATEC -lg2c    -lacml -lacml_mv -lblas -lg2c      -lncursesw 


int chamfer_transform
(
	const Matrix *in,
	int size,
	Matrix **distances_out,
	Int_matrix_vector **locations_out
);

DESCRIPTION

Input is a binary edge image represented as a Matrix, and output is a map of the distance and location of the nearest edge point in the input image. The local maxima of the distance map is the voronoi diagram of the edge points. The size parameter sets the neighborhood size when propagating distance values; higher value will result in lower approximation error but increases running time. Valid values for size are 3, 5, or 7. After returning, distances_out will hold the distance map, and locations_out will hold two matrices representing the x and y locations of the nearest edge point, respectively.

RETURNS

NO_ERROR on success, and ERROR on failure, with an error message being set.

WARNING

As the exact distance transform is expensive to compute, the chamfer distance transform is a fast approximation. When the voronoi diagram has corners with very acute angles, the chamfer transform may report the nearest edge point incorrectly. Also, distances are not computed directly but instead are propogated from neighboring pixels and are subject to approximation error. Using higher size values diminshes this effect somewhat. These errors are generally of little concern, but do be aware of them.

RELATED

image_to_matrix

DISCLAIMER

This software is not adequatedly tested. It is recomended that results are checked independantly where appropriate.

AUTHOR

Kyle Simek

DOCUMENTER

Kobus Barnard

SEE ALSO

chamfer_transform_2 , sum_sq_distance , chamfer_distance , oriented_sum_sq_distance , oriented_chamfer_distance