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 toconsult@rpi.edu