The
ml::ImageVector
class manages a 6D point/vector with 6 components
x, y,
z, c,
t, u of the type
MLint. It is the main class used for voxel
positions, image extents, box corners or page extents. The typical
(integer) vector arithmetics is available as well as minimum and
maximum component search, lexicographical comparison, stride
operations and component-wise multiplication for voxel addressing,
etc. It offers different template specializations with 16, 32 and 64
bit integer components, because most ML image and voxel addressing is
done by this class. A ImageVector works with 64 bit
integers to support very large image addressing and should be used in
all image processing modules unless there are clear reasons for using
specialized versions. The most important methods are:
operators +, -, *, /, <<, >>, []
Operators as they are defined on integers, applied component-wise.
getStrides()
If a ImageVector is interpreted as an
image extent, this method returns another
ImageVector with voxel offsets (usually called
strides in such a context). To get from one
voxel position to a neighbor position, e.g., to y, the
corresponding stride getStrides().y has to
be added. The y strides are usually identical with the x extent of
the image, the z stride with the number of x extent multiplied by
the y extent, the c stride with x extent*y extent*z extent , etc.
Strides are typically needed for very fast voxel positioning with
indices into images.
getVectorPosition(offsetPos)
If the ImageVector is interpreted as the
extent of an image and offsetPos as an
index into the image, getVectorPosition()
returns the position of the voxel as
ImageVector.
getExtDimension()
If the ImageVector is interpreted as the
extent of an image, this method returns the highest
ImageVector component that cannot be used to get
the real dimension of an image.
hasNegativeComp()
This method returns true if any
component is negative, otherwise it returns
false. This method can be used to check
whether the position might be an invalid image coordinate
(negative components are not used for voxel addressing).
allBiggerZero()
This method returns true if all
components > 0, otherwise it returns
false.
Constructors, set and get methods to initialize the
ImageVector in different ways, maximum/minimum
component search, etc. are available.
The
ml::SubImageBox
class manages a rectangular 6D box given by two corners
that are specified by the Vectors
v1 and v2. It permits
volume intersection, calculation, etc.
SubImageBox is available in 16, 32 and 64 bit
template specializations (like the class
ImageVector). Use SubImageBox
without a number for all normal ML code. See
mlSubImageBox.h
in the project ML. A comparable
class with 6D float vector is available as
SubImageBoxd in file
mlSubImageBoxd.h
.
![]() | Important |
|---|---|
This class offers a set of useful methods, e.g.:
getSize()
Returns the number of voxels in the subimage region, i.e. the product of all extents if this is not empty; otherwise 0 is returned.
isEmpty()
Returns true if the box is empty;
otherwise false is returned.
intersect(loc2)
Returns the regions that overlap with subimage regions
loc2 as a SubImageBox.
In case of non-overlapping boxes, the returned box is
empty.
contains (pos)
Returns true if pos is within box;
otherwise false is returned.
getExtent()
Returns a vector with the extent of the box in all 6
dimensions (see Section 2.4.1, “ImageVector, ImageVector”).
translate(shift)
Translates the box by the vector shift.
get3DCorners(...)
Returns all eight corners of the box as vectors ( see Section 2.4.1, “ImageVector, ImageVector”).
Please refer to file
mlSubImageBox.h
for more
information.
© 2025 MeVis Medical Solutions AG