MeVisLab Toolbox Reference
|
ManagedSubImage is derived from SubImage and frees its allocated memory automatically when it is destructed. More...
#include <mlManagedSubImage.h>
Public Member Functions | |
ManagedSubImage () | |
Constructor. | |
ManagedSubImage & | operator= (const SubImage &si) |
Copy operator from SubImage. | |
~ManagedSubImage () override | |
Destruct the object and freeing the memory. | |
void * | takeData () |
Returns the data pointer and set the internal data to NULL (so it passes the ownership of the data to the caller) Note: This should only be used on images that where allocated via MLAlloc or with user provided memory. | |
![]() | |
const SubImageBox & | getBox () const |
Returns the box describing the origin/extent of the subimage. | |
void | setSourceImageExtent (const ImageVector &extent) |
Sets the image extent of the source image that was used to create this SubImage to extent . | |
ImageVector | getSourceImageExtent () const |
Returns the image extent of the source image that was used to create this SubImage. | |
SubImageBox | getValidRegion () const |
Returns the valid region of the SubImage, which is defined by the intersection of the SubImage::getBox() and the SubImageBox(ImageVector(0), SubImage::getSourceImageExtent()-1). | |
MLint | getNumVoxels () const |
Returns number of voxels in (sub)image. | |
MLint | getSizeInBytes () const |
Returns number of potential bytes in (sub)image. | |
ImageVector | getStride () const |
Returns a stride vector to address the memory efficiently. | |
MLint | getOffset (const ImageVector &voxelPosition) const |
Returns the array index offset from the origin (0,0,0,0,0,0) to the voxelPosition . | |
void | setDataType (MLDataType dataType) |
Override the inherited setDataType method to set type of data to dataType . | |
MLDataType | getDataType () const |
Returns the type of image data. | |
const MLTypeInfos * | getDataTypeInfos () const |
Returns MLTypeInfos for image data type. | |
MLEXPORT ImageProperties | toImageProperties () const |
Converts the Subimage's data type and extend to an ImageProperties object. | |
MLEXPORT void | setFromImageProperties (const ImageProperties &imageProperties) |
Sets the image box and data type from the imageProperties extent and data type. | |
void | toStream (std::ostream &ostr) const |
SubImage () | |
Constructor: Creates a subimage with no data. | |
SubImage (const SubImage &si) | |
Copy constructor to get identical copy. | |
SubImage (const SubImageBox &box, MLDataType datatype, void *data=nullptr) | |
Constructor for a rectangular 6D image region with position and extent given by box, with data type data type and memory given by the pointer data . | |
SubImage (const SubImage &si, const ImageVector &offset) | |
Copy constructor to get identical copy. | |
virtual | ~SubImage ()=default |
Virtual destructor to suppress compiler warnings. | |
SubImage & | operator= (const SubImage &si) |
Assignment operator to get identical copy. | |
void | setBox (const SubImageBox &subImageBox) |
Sets a rectangular 6D region of the subimage to subImageBox . | |
void | setBox (const ImageVector &imageExtent) |
Sets a rectangular 6D region of the subimage to imageExtent . | |
void | translate (const ImageVector &offset) |
Translates the box of the subimage by adding the vector offset . | |
const ImageVector & | getOrigin () const |
Returns the origin of the subimage, which is identical to getBox().v1. | |
void | setOrigin (const ImageVector &newOrigin) |
Sets the origin of the subimage, which moves the box of the subimage to newOrigin . | |
ImageVector | getExtent () const |
Returns the extent of the subimage, which is identical to getBox().getExtent(). | |
void | setExtent (MLint x, MLint y, MLint z=1, MLint c=1, MLint t=1, MLint u=1) |
Sets the extent of the subimage to newExtent . | |
void | setExtent (const ImageVector &newExtent) |
Sets the extent of the subimage to newExtent . This also changes the strides. | |
SubImageBox | getBoxFromExtent () const |
Returns the size of image as box with origin 0. | |
SubImageBox | getBoxFromImageExtent () const |
ImageVector | getImageExtent () const |
void | setImageExtent (const ImageVector &newExtent) |
void * | getSubImagePointer (const ImageVector &voxelPosition) const |
Returns a pointer to voxel data of image voxel at 6D voxelPosition relative to the origin of the subimage region. | |
void * | getSubImagePointer (MLint x, MLint y, MLint z) const |
Returns a pointer to voxel data of image voxel at 3D position p=(x ,y ,z ) relative to the origin of the subimage region. | |
void * | getImagePointer (const ImageVector &voxelPosition) const |
Returns a pointer to voxel data of image voxel at 6D position voxelPosition relative to the origin of the complete image region. | |
void * | getImagePointer (MLint x, MLint y, MLint z) const |
Returns a pointer to voxel data of image voxel at 3D position p=(x , y , z ) relative to the origin of the complete image region. | |
MLEXPORT void | copySubImage (const SubImage &fromImage, const ScaleShiftData &scaleShiftData) |
Copies image data from the subimage fromImage into the overlapping region of this subimage. | |
MLEXPORT void | copySubImage (const SubImage &fromImage) |
Implements a special case for void copySubImage(const TSubImage<FROM_DATATYPE> &typedFromImg,
const ScaleShiftData& scaleShiftData) where scaleShiftData is default. | |
bool | isValidSubImagePosition (const ImageVector &voxelPosition) const |
Returns true if the 6D voxelPosition is a valid position within the subimage region, i.e., if voxelPosition is within (0,0,0,0,0,0) and subimage extents. | |
bool | isValidSubImagePosition (MLint x, MLint y, MLint z) const |
Returns true if the 3D position p=(x , y , z ) is a valid position within the subimage region, i.e., if the position is within (0,0,0) and subimage extents. | |
bool | isValidImagePosition (const ImageVector &voxelPosition) const |
Returns true if the 6D voxelPosition is a valid position within the subimage region, i.e., if voxelPosition is within subImgBox.v1 and subImgBox.v2. | |
bool | isValidImagePosition (MLint x, MLint y, MLint z) const |
Returns true if the 3D position p=(x , y , z ) is a valid position within the subimage region, i.e., if the position is within subImgBox.v1 and subImgBox.v2. | |
MLEXPORT void | allocate (MLMemoryErrorHandling handleFailure) |
Allocates data with MLAlloc(). | |
MLEXPORT void | allocateAsMemoryBlockHandle (MLMemoryErrorHandling handleFailure=ML_RETURN_NULL) |
Allocates data using the ML memory manager. For failure handing, see SubImage::allocate(). | |
MLEXPORT void | free () |
Frees data pointed to by getData() with MLFree(). | |
MLEXPORT bool | isOneValued () const |
Returns true if all page voxels have the same value or if the page contains only one voxel. | |
MLEXPORT MLint | calculateMinMax (MLdouble &minValue, MLdouble &maxValue, const SubImageBox *const validBox=nullptr) const |
Scans subimage and determines minimum and maximum values on region, which is part of subimage box and of validBox. | |
MLEXPORT void | compare (const SubImage &subImage2, bool *regionsMatch, bool *dataTypesMatch, bool *thisBoxIsPartOfRegion2, bool *region2IsPartOfThisBox, bool *overlapHasSameValues, ImageVector *firstMismatchPos) const |
Compares two subimages with respect to their regions and their contents. | |
MLEXPORT void | fill (MLdouble value) |
Fills the subimage with a value that is cast to the data type of the subimage. | |
MLEXPORT void | fillWithTypeData (const MLTypeData *value) |
Fills the subimage with a value given as MLTypeData. | |
MLEXPORT void | fillBordersWithScalarValue (const SubImageBox &box, MLdouble fillValue) |
Fills all regions with the fill value fillValue that are not covered by box . | |
MLEXPORT void | fillBordersWithTypeData (const SubImageBox &box, const MLTypeData *fillValue) |
Fills all regions with the fill value fillValue which are not covered by box . | |
MLEXPORT void | fillBordersWithInputValues (const SubImageBox &box, const SubImage &inputSubImage) |
Fills all regions with values from inputSubImage which are not covered by box ; however, only valid regions of inputSubImage are read. | |
MLEXPORT void | fillBordersWithBorderValues (const SubImageBox &box) |
Each voxel that is not inside box is filled with the voxel value of the nearest voxel that is inside box . | |
void | fillInvalidRegionWithScalarValue (MLdouble value) |
Fills the invalid region (everything outside of getValidRegion()) with the given value . | |
void | fillInvalidRegionWithTypeData (const MLTypeData *value) |
Fills the invalid region (everything outside of getValidRegion()) with the given value . | |
void | fillInvalidRegionWithBorderValues () |
Fills the invalid region. | |
MLEXPORT bool | isValid () const |
Returns 1 (=true) if image region and data is valid. | |
void * | getData () const |
Returns the memory address of the memory managed by the subimage. | |
MLEXPORT void | setData (void *data) |
Sets data as a new memory block for the subimage. | |
MLEXPORT void | setDataFromMemoryBlockHandle (const MLMemoryBlockHandle &data) |
Sets the managed data from a given MLMemoryBlockHandle, the subimage will store this handle and thus reference count the memory managed by the handle as long as the SubImage stays alive. | |
const MLMemoryBlockHandle & | getMemoryBlockHandle () const |
Returns the memory block handle that manages the data of this SubImage if it has been set via setDataFromMemoryBlockHandle(). | |
Additional Inherited Members | |
![]() | |
static MLEXPORT MLint | coordToIndex (MLint x, MLint y, MLint z, MLint c, MLint t, MLint u, const ImageVector &size) |
Converts the coordinate (x , y , z , c , t ,u ) to an index into an image with 6D extents given by size . | |
static MLEXPORT MLint | coordToIndex (const ImageVector &voxelPosition, const ImageVector &size) |
Converts the coordinate voxelPosition into the image with extents size to an index. | |
static MLEXPORT ImageVector | indexToCoord (MLint index, const ImageVector &extent) |
Converts an index into an array with extents extent to a coordinate. | |
![]() | |
void | _calcFillAreaParams (const SubImageBox &box, const SubImageBox &maxValidInputRegion, ImageVector &boxV1, ImageVector &boxV2, ImageVector &outputTSubImageV1, ImageVector &outputTSubImageV2, MLint &fullLineLenX, MLint &fullLineLenXB, MLint &leftLineStartX, MLint &leftLineLenX, MLint &leftLineLenXB, MLint &rightLineStartX, MLint &rightLineLenX, MLint &rightLineLenXB) |
Helper method to calculate important parameters for page based border filling. | |
void | _copySubImageGeneric (const SubImage &fromImage, const ScaleShiftData &scaleShiftData) |
Generic, non-optimized version of copySubImage. | |
const MLTypeInfos * | _getDataTypeInfos (MLDataType dt) const |
Returns MLTypeInfos for used datatypes, indicates error if the type dt is not registered. | |
![]() | |
SubImageBox | _box |
The box of the subimage. | |
ImageVector | _sourceImageExtent |
The extent of the source image, which is used for getValidRegion(). | |
void * | _data |
Memory chunk managed by this subimage. | |
MLMemoryBlockHandle | _memoryBlock |
Memory block used by this subimage. | |
ImageVector | _stride |
Stride vector to address the memory efficiently. | |
MLDataType | _dataType |
Data type of the image. | |
ManagedSubImage is derived from SubImage and frees its allocated memory automatically when it is destructed.
If you make use of TileRequest::AllocationPolicy == TileRequest::ExternalBuffer, make sure that you call takeData(); otherwise, this class will delete your external buffer in its destructor!
The class is not exported to make inlining possible.
Definition at line 30 of file mlManagedSubImage.h.
|
inline |
Constructor.
Definition at line 35 of file mlManagedSubImage.h.
|
inlineoverride |
Destruct the object and freeing the memory.
Definition at line 44 of file mlManagedSubImage.h.
|
inline |
Copy operator from SubImage.
Definition at line 38 of file mlManagedSubImage.h.
References mlrange_cast().
|
inline |
Returns the data pointer and set the internal data to NULL (so it passes the ownership of the data to the caller) Note: This should only be used on images that where allocated via MLAlloc or with user provided memory.
It will not work correctly on memory allocated by the MemoryManager, as one has to use getMemoryBlockHandle() instead to get the data.
Definition at line 52 of file mlManagedSubImage.h.