<<<<<<<<<<<<<<<<<

ivm_register(ivm) Interactive View and Measure ivm_register(ivm)

NAME

ivm_register - calculate rigid body transformation between sets of points

DESCRIPTION

The ivm_register class is used to compute rigid-body transformations between pairs of vectors representing identical points in two different data sets. This can be used, for instance, to register data sets from two different medical modalities.

It is important to note that ivm_register will not perform scaling, only rotation and translation. In practice, this may not be a serious limitation, because scaling transformations between different volume data sets tend to be rather simple (for instance, scaling a set of 128x128 PET images to 256x256 to match a corresponding set of CT images).

SUPERCLASS

object

INSTANCE VARIABLES

error is the RMS error of the last registration operation (read-only).

transform is the name of the generated transform object that contains the results.

MESSAGES

register! registers the two input vectors.

error? registers the two input vectors.

point_list_1=v set the first point list to the vector object named "v".

point_list_2=v set the second point list to the vector object named "v".

EXAMPLE

vector new: `v1' components= ( (0,1,0), (1,0,0), (0,0,1) ) ;

-- v2 represents a rotation of v1 about the y axis of about 45 degrees vector new: `v2'

components= ( (0,1,0), (0.7,0,-0.7), (0.7,0,0.7) ) ;

ivm_register new: `reg' point_list_1 = `v1' point_list_2 = `v2' register! print:`error' ;

object # [reg transform?] print:(`orientation',`position');

BUGS

The input point lists and the output transform should not be named objects. Arbitrary lists of coordinates (lists of floating point numbers) should be acceptable input, and the generated transform should be hidden, as it is in the camera class.

SEE ALSO

vector, transform


Please send comments and suggestions to
consult@rpi.edu