Computer Assited Medical Intervention Tool Kit  version 4.1
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
camitk::ImageComponent Class Reference

The manager of the Image Volume data. More...

#include <ImageComponent.h>

Inherits camitk::Component.

Inherited by DicomComponent, ItkImageComponent, RawImageComponent, and VtkImageComponent.

Public Member Functions

double getActualMaxColor () const
 Max gray level found in the image given its data type. More...
 
double getActualMinColor () const
 Min gray level found in the image given its data type. More...
 
int getActualNumberOfColors () const
 Actual Number of colors: difference betweent the maximun and the minimum gray levels found in the image. More...
 
SingleImageComponentgetArbitrarySlices ()
 Returns the arbitrary slice. More...
 
SingleImageComponentgetAxialSlices ()
 Returns the axial slice. More...
 
SingleImageComponentgetCoronalSlices ()
 Returns the coronal slice. More...
 
vtkSmartPointer< vtkImageData > getImageData () const
 get the image volume managed by this Component More...
 
vtkSmartPointer< vtkImageData > getImageDataWithFrameTransform ()
 Compute a copy of the original image data on which the frame transform has been applied. More...
 
QString getImageName () const
 getter/setter for the property More...
 
ImageOrientationHelper::PossibleImageOrientations getInitialOrientation () const
 Get the initial image orientation. More...
 
void getLastPixelPicked (int *x, int *y, int *z)
 Get the last pixel picked using CTRL + LEFT/RIGHT CLICK in voxel index (i, j, k) indicates the voxel index (no notion of voxel size) More...
 
void getLastPointPickedImageCoords (double *x, double *y, double *z)
 Get the last point picked using CTRL + LEFT/RIGHT CLICK in image real coordinates (this takes into account voxel size) More...
 
void getLastPointPickedWorldCoords (double *x, double *y, double *z)
 Get Get the last point picked using CTRL + LEFT/RIGHT CLICK in world coordinates This takes into account voxel size and image origin (and possible image rigid transforms). More...
 
virtual vtkSmartPointer< vtkWindowLevelLookupTable > getLut ()
 get the current lookup table More...
 
double getMaxColor () const
 Max possible gray level of the image given its data type. More...
 
double getMinColor () const
 Min possible gray level of the image given its data type. More...
 
int getNumberOfColors () const override
 Number of colors: number of possible gray levels in the image computed from the min and the max of the data type ; e.g. More...
 
int getNumberOfSlices () const override
 Number of axial slices (i.e. More...
 
const vtkSmartPointer< vtkMatrix4x4 > getRotationMatrix ()
 
SingleImageComponentgetSagittalSlices ()
 Returns the sagittal slice. More...
 
MeshComponentgetVolumeRenderingChild ()
 Returns the MeshComponent which will contain the volume rendering actor. More...
 
 ImageComponent (const QString &file)
 constructor This method may throw an AbortException if a problem occurs. More...
 
 ImageComponent (vtkSmartPointer< vtkImageData > anImageData, const QString &name, bool copy=false, ImageOrientationHelper::PossibleImageOrientations initialOrientation=ImageOrientationHelper::RAI)
 Creates an ImageComponent from a vtkImageData This method may throw an AbortException if a problem occurs. More...
 
void pixelPicked (double x, double y, double z, SingleImageComponent *whoIsAsking)
 Method called when a pixel has been picked in the 3D view. More...
 
void refresh () const override
 force refresh of all interactive viewers that are displayng sub-components as ImageComponent is not itself displayed by any viewer More...
 
virtual void replaceImageData (vtkSmartPointer< vtkImageData > anImageData, bool copy=false, ImageOrientationHelper::PossibleImageOrientations initialOrientation=ImageOrientationHelper::RAI)
 Replaces the current image volume by the one given in parameters. More...
 
void setImageName (const QString &)
 
virtual void setLut (vtkSmartPointer< vtkWindowLevelLookupTable > lookupTable)
 Update the lookup table of the image viewer (see InterfaceBitMap). More...
 
void setSelected (const bool b, const bool recursive=false) override
 set selected will select all the Image components (axial, sagittal and coronal). More...
 
 ~ImageComponent () override
 Destructor. More...
 
InterfaceProperty

InterfaceProperty implemented methods

void updateProperty (QString, QVariant) override
 
unsigned int getNumberOfPropertyWidget () override
 return number of tabs in property explorer: there is more than one widget More...
 
QWidget * getPropertyWidgetAt (unsigned int i) override
 get the property widget (to view as tabs in the property explorer): the default property widget and the selection view More...
 
- Public Member Functions inherited from camitk::Component
 Component (QString file, QString name, Representation rep=NO_REPRESENTATION)
 Component constructor for top-level component (please use the other constructor for sub-level components). More...
 
 Component (Component *parentComponent, const QString &name, Representation rep=NO_REPRESENTATION)
 Component constructor for a Component that is a child of another Component You should not use this constructor for a top-level component. More...
 
 ~Component () override
 default destructor. More...
 
Representation getRepresentation () const
 return the type of representation concretely implemented by this Component in the InteractiveViewer. More...
 
bool isTopLevel () const
 return true if this component is a top-level component More...
 
virtual ComponentgetParentComponent ()
 get the parent component More...
 
virtual ComponentgetTopLevelComponent ()
 get the top-level component More...
 
virtual InterfaceFramegetFrame ()
 get the associated frame More...
 
virtual void setModified (bool modified=true)
 set the modified flag More...
 
virtual bool getModified () const
 set the modified flag More...
 
virtual void setVisibility (Viewer *, bool)
 set the visibility for a viewer More...
 
virtual bool getVisibility (Viewer *) const
 get the visibility of a viewer More...
 
virtual void refreshInterfaceNode ()
 Asks all viewers that are currently displaying this Component to rebuild the representation of the InterfaceNode for this Component. More...
 
virtual bool isSelected () const
 Check if this data component is selected. More...
 
const QString getFileName () const
 get the file name where the data have to be stored/were stored More...
 
void setFileName (const QString &)
 set the file name where the data have to be stored More...
 
bool event (QEvent *e) override
 Overriden from QObject, this one is only intercepting signal for dynamic property changed (see constructor). More...
 
QMenu * getActionMenu ()
 Get a QMenu that contains all the action that can be applied to this component. More...
 
QStringList getHierarchy () const override
 
bool isInstanceOf (QString className) const override
 Assert that a Component instance really inherits from a given className. More...
 
QObject * getPropertyObject ()
 Get the property object that could be understood by PropertyEditor. More...
 
void setIndexOfPropertyExplorerTab (unsigned int index)
 Set the index of the tab in the ProperlyExplorer to select for display. More...
 
unsigned int getIndexOfPropertyExplorerTab ()
 Get the index of the tab in the ProperlyExplorer to select for display. More...
 
Q_INVOKABLE PropertygetProperty (QString name) override
 Get a Property given its name. More...
 
bool addProperty (Property *) override
 Add a new CamiTK property to the component. More...
 
void addChild (InterfaceNode *) override
 add a child Component (sub item in the hierarchy), and modify the child's parent to be equal to this instance More...
 
void attachChild (InterfaceNode *) override
 add a child Component (but leave its parent unchanged) More...
 
void removeChild (InterfaceNode *) override
 remove from the the sub item vector. More...
 
void setParent (InterfaceNode *) override
 set the parent Component. This method automatically remove this Component from its previous (if already had one parent Component) More...
 
void deleteChildren () override
 delete all sub Component, but do not delete the pointer (only the top-level component has the right to do that) More...
 
QString getName () const override
 get the name to be displayed More...
 
void setName (const QString &) override
 set the name to be displayed More...
 
const ComponentListgetChildren () override
 get the list of the InterfaceNode children (sub items in the hierarchy) More...
 
bool doubleClicked () override
 this method is called each time the InterfaceNode is double clicked by the user. More...
 
InterfaceNodegetParent () override
 get the parent Component More...
 
QPixmap getIcon () override
 Get the pixmap that will be displayed for this node. More...
 
bool inItalic () const override
 A component name is not displayed in italic by default. More...
 
QMenu * getPopupMenu (QWidget *parent=nullptr)
 get the popup menu to display (always return NULL, overwrite this method if you want to give here you own popup) More...
 
const QString getLabel () const override
 
void setLabel (QString newName) override
 set the string used to display the label, do the same as setName More...
 
 delegateGet0 (myGeometry, getPointSet, vtkSmartPointer< vtkPointSet >) delegate1(myGeometry
 
vtkSmartPointer< vtkPointSet > delegate1 (myGeometry, setPointData, vtkSmartPointer< vtkDataArray >) delegateConstGet0(myGeometry
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > delegate1 (myGeometry, setDataConnection, vtkSmartPointer< vtkAlgorithmOutput >) delegateGet1(myGeometry
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > const RenderingModes vtkSmartPointer< vtkProp > getProp (const QString &param)
 Return the vtkProp (actors, volumes and annotations) corresponding to the given name. More...
 
unsigned int getNumberOfProp () const
 return the number of additional prop More...
 
vtkSmartPointer< vtkProp > getProp (unsigned int index)
 return an additional prop by its index More...
 
bool addProp (const QString &name, vtkSmartPointer< vtkProp > prop)
 insert an additional prop, defining it by its name (default visibility = false) More...
 
bool removeProp (const QString &name)
 remove a given additional prop. More...
 
void pointPicked (vtkIdType, bool)
 an inherited class can redefine this method something specific. More...
 
void cellPicked (vtkIdType, bool)
 an inherited class can redefine this method something specific. More...
 
void getBounds (double *bounds) override
 compute the object's bounding box [xmin,xmax, ymin,ymax, zmin,zmax], see Component.cpp More...
 
double getBoundingRadius () override
 compute the object's bounding sphere radius, More...
 
 delegate4 (myGeometry, setPointPosition, const unsigned int, const double, const double, const double) delegateAndInvokeChildren1(myGeometry
 
const RenderingModes const InterfaceGeometry::RenderingModes getRenderingModes () const override
 see Component.cpp More...
 
 delegateAndInvokeChildren1 (myGeometry, setEnhancedModes, const EnhancedModes) delegateConstGet0(myGeometry
 
const EnhancedModes delegateAndInvokeChildren1Array (myGeometry, setActorColor, const RenderingModes, double, 4) delegateAndInvokeChildren4(myGeometry
 
const EnhancedModes const const const const double void getActorColor (const RenderingModes, double [4]) override
 see Component.cpp More...
 
 delegateAndInvokeChildren3 (myGeometry, setColor, const double, const double, const double) delegateAndInvokeChildren4(myGeometry
 
const const const const double delegateAndInvokeChildren2 (myGeometry, setActorOpacity, const RenderingModes, const double) delegateConstGet1(myGeometry
 
const const const const double const RenderingModes delegateAndInvokeChildren1 (myGeometry, setOpacity, const double) delegate2(myGeometry
 
const const const const double const RenderingModes double delegate1 (myGeometry, setTexture, vtkSmartPointer< vtkTexture >) void setGlyphType(const GlyphTypes type
 
 delegate1 (myGeometry, setLinesAsTubes, bool) delegate1(myGeometry
 
 delegateConstGet0 (mySlice, getImageData, vtkSmartPointer< vtkImageData >) delegate1(mySlice
 
vtkSmartPointer< vtkImageData > delegateConstGet0 (mySlice, get2DImageActor, vtkSmartPointer< vtkImageActor >) delegateConstGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > delegateConstGet0 (mySlice, getPickPlaneActor, vtkSmartPointer< vtkActor >) delegateGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > delegate3 (mySlice, pixelPicked, double, double, double) delegate0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane delegate1 (mySlice, setSlice, int) delegate3(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double delegateConstGet0 (mySlice, getNumberOfColors, int) delegate3(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double double delegate1 (mySlice, setImageWorldTransform, vtkSmartPointer< vtkTransform >) int getNumberOfSlices() const override
 see Component.cpp More...
 
int getSlice () const override
 see Component.cpp More...
 
const QString & getFrameName () const override
 Hierarchy accessors / Modifyers. More...
 
 delegate1 (myFrame, setFrameName, QString) InterfaceFrame *getParentFrame() const override
 
void setParentFrame (InterfaceFrame *frame, bool keepTransform=true) override
 Set the parent frame and update or not its transform during the parent transition. More...
 
const QVector< InterfaceFrame * > & getChildrenFrame () const override
 Get the Children Frames from the current Frame in the Frame Hierarchy The Frame hierarchy may not be the same as the Component Hierarchy. More...
 
const vtkSmartPointer< vtkTransform > getTransformFromWorld () const override
 Transforms accessors / Modifyers. More...
 
const vtkSmartPointer< vtkTransform > getTransform () const override
 Get the transformation with respect to the parent frame. More...
 
const vtkSmartPointer< vtkTransform > getTransformFromFrame (InterfaceFrame *frame) const override
 Compute the transformation from any other frame to the current frame. More...
 
 delegate1 (myFrame, setTransform, vtkSmartPointer< vtkTransform >) delegate0(myFrame
 
resetTransform delegate3 (myFrame, translate, double, double, double) delegate3(myFrame
 
resetTransform double delegate3 (myFrame, rotateVTK, double, double, double) delegate3(myFrame
 
resetTransform double double delegate3 (myFrame, setTransformTranslationVTK, double, double, double) delegate3(myFrame
 
resetTransform double double double delegate3 (myFrame, setTransformRotationVTK, double, double, double) vtkSmartPointer< vtkAxesActor > getFrameAxisActor() override
 
 delegate2 (myFrame, setFrameVisibility, Viewer *, bool) bool getFrameVisibility(Viewer *viewer) const override
 
 delegate1 (myFrame, addFrameChild, InterfaceFrame *) delegate1(myFrame
 
- Public Member Functions inherited from camitk::InterfaceProperty
 ~InterfaceProperty ()=default
 empty virtual destructor, to avoid memory leak More...
 
- Public Member Functions inherited from camitk::InterfaceNode
virtual ~InterfaceNode ()=default
 empty virtual destructor, to avoid memory leak More...
 
- Public Member Functions inherited from camitk::InterfaceGeometry
virtual ~InterfaceGeometry ()=default
 empty virtual destructor, to avoid memory leak More...
 
virtual vtkSmartPointer< vtkPointSet > getPointSet ()=0
 
virtual void setPointSet (vtkSmartPointer< vtkPointSet >)=0
 set the low-level data set. More...
 
virtual void setPointData (vtkSmartPointer< vtkDataArray >)=0
 set the point data (may contains a lookup table). More...
 
virtual void setMeshWorldTransform (vtkSmartPointer< vtkTransform >)=0
 set the transformation for 3D representation More...
 
virtual vtkSmartPointer< vtkAlgorithmOutput > getDataPort () const =0
 get the custom algorithm pipeline input. More...
 
virtual void setDataConnection (vtkSmartPointer< vtkAlgorithmOutput >)=0
 Set/reset the connection for the InterfaceGeometry internal algorithm. More...
 
virtual vtkSmartPointer< vtkActor > getActor (const RenderingModes)=0
 Return the actor for the representation mode, NULL if the actor doesn't exist. More...
 
virtual void setTexture (vtkSmartPointer< vtkTexture >)=0
 Set a texture to this object. More...
 
virtual void setPointPosition (const unsigned int orderNumber, const double x, const double y, const double z)=0
 set a given point position More...
 
virtual void setRenderingModes (const RenderingModes)=0
 
virtual void setEnhancedModes (const EnhancedModes)=0
 set the enhanced mode More...
 
virtual const EnhancedModes getEnhancedModes () const =0
 get the current enhanced mode More...
 
virtual void setActorColor (const RenderingModes, double *color)=0
 Set the color of given representation modes. More...
 
virtual void setActorColor (const RenderingModes, const double, const double, const double)=0
 Set the color of given representation modes. More...
 
virtual void getActorColor (const RenderingModes, double *color)=0
 Get the color of given representation modes in the second parameter. More...
 
virtual void setColor (const double, const double, const double)=0
 Set an (r,g,b) color to all representation modes, without changing the opacity. More...
 
virtual void setColor (const double, const double, const double, const double)=0
 Set an (r,g,b,a) color to all representation modes. More...
 
virtual void setActorOpacity (const RenderingModes, const double)=0
 Set the opacity of this representation modes. WARNING color field (surfaceColor, ...) are not modified! More...
 
virtual double getActorOpacity (const RenderingModes) const =0
 Return the opacity of a given renderng mode. More...
 
virtual void setOpacity (const double)=0
 Set the opacity of this object. WARNING color field (surfaceColor, ...) are not modified! More...
 
virtual void setMapperScalarRange (double min, double max)=0
 Set the mapper scalar range. More...
 
virtual void setGlyphType (const GlyphTypes type, const double size=0.0)=0
 Set the glyph type (a glyph is a geometric representation attached to every point in the input dataset). More...
 
virtual void setLinesAsTubes (bool)=0
 set the lines as tubes (works only for vtkDataSet representation that contains lines) More...
 
- Public Member Functions inherited from camitk::InterfaceBitMap
virtual vtkSmartPointer< vtkImageActor > get2DImageActor () const =0
 Return the vtkImageActor (vtkProp) representing a slice to be displayed in 2D viewers. More...
 
virtual vtkSmartPointer< vtkImageActor > get3DImageActor () const =0
 Return the vtkImageActor (vtkProp) representing a slice to be displayed in 3D viewers. More...
 
virtual vtkSmartPointer< vtkActor > getPickPlaneActor () const =0
 Return the vtkActor used to pick pixels in the slices. More...
 
virtual vtkSmartPointer< vtkActor > getPixelActor ()=0
 Return the vtkActor used to pick pixels in the slices. More...
 
virtual void pixelPicked (double, double, double)=0
 Return 2D Axes at the proper slice origin. More...
 
virtual void setImageWorldTransform (vtkSmartPointer< vtkTransform >)=0
 set the transformation for 3D image representation More...
 
virtual void setOriginalVolume (vtkSmartPointer< vtkImageData >)=0
 set the original volume image data (the source vtkImageData before any reslice) and refresh the vtk pipeline More...
 
virtual void setPixelRealPosition (double, double, double)=0
 move the pixel selection green indicator (pixelActor) to the given real position More...
 
virtual void setSlice (int s)=0
 Set the current slice index. More...
 
virtual void setSlice (double x, double y, double z)=0
 Set the slice corresponding to the given image coordinates (in RAI convention) More...
 
virtual void updatePickPlane ()=0
 
virtual ~InterfaceBitMap ()=default
 virtual destructor More...
 
- Public Member Functions inherited from camitk::InterfaceFrame
virtual void addFrameChild (InterfaceFrame *frame)=0
 Add the input frame as a child of the current frame. More...
 
virtual vtkSmartPointer< vtkAxesActor > getFrameAxisActor ()=0
 Gives the 3D representation of the frame (based on xyz arrows) More...
 
virtual bool getFrameVisibility (Viewer *viewer) const =0
 Get the Component Frame visibility for a given viewer. More...
 
virtual void removeFrameChild (InterfaceFrame *frame)=0
 Remove the input frame as a child of the current frame. More...
 
virtual void setFrameVisibility (Viewer *viewer, bool visible)=0
 Set the Component Frame visible for a given viewer. More...
 
virtual ~InterfaceFrame ()=default
 empty virtual destructor, to avoid memory leak More...
 
virtual void setFrameName (QString name)=0
 Set the Frame Unique identifyer. More...
 
virtual InterfaceFramegetParentFrame () const =0
 Get the parent frame. More...
 
virtual void setTransform (vtkSmartPointer< vtkTransform > transform)=0
 Set the current input frame position (according to its parent Frame) More...
 
virtual void resetTransform ()=0
 Set the current frame transform to identity. More...
 
virtual void translate (double x, double y, double z)=0
 Apply a translation relative to the current position. More...
 
virtual void rotate (double aroundX, double aroundY, double aroundZ)=0
 Apply rotations relative to the current position in the alphabetical order (X, Y, Z). More...
 
virtual void rotateVTK (double aroundX, double aroundY, double aroundZ)=0
 Apply a rotation relative to the current position, using the VTK rotation order (Z, X, Y) More...
 
virtual void setTransformTranslation (double x, double y, double z)=0
 Set the translation part of the 3D space transformation of the current frame. More...
 
virtual void setTransformTranslationVTK (double x, double y, double z)=0
 Set the translation part of the 3D space transformation of the current frame. More...
 
virtual void setTransformRotation (double aroundX, double aroundY, double aroundZ)=0
 Set the rotation part of the 3D space transformation of the current frame. More...
 
virtual void setTransformRotationVTK (double aroundX, double aroundY, double aroundZ)=0
 Set the rotation part of the 3D space transformation of the current frame. More...
 

Protected Member Functions

virtual void setImageData (vtkSmartPointer< vtkImageData > anImageData, bool copy, ImageOrientationHelper::PossibleImageOrientations initialOrientation=ImageOrientationHelper::RAI, vtkSmartPointer< vtkMatrix4x4 > initialTransformMatrix=nullptr)
 Set the image data of the volumic images with the given orientation options. More...
 
virtual void setSingleImageComponents (SingleImageComponent *axialSlices, SingleImageComponent *sagittalSlices, SingleImageComponent *coronalSlices, SingleImageComponent *arbitrarySlices)
 Set all single images. More...
 

Private Member Functions

void buildImageComponents ()
 build the SingleImageComponent (one for each image plane); More...
 
vtkSmartPointer< vtkPolyData > getBoundingBox ()
 internal method used to put a mesh in volumeRenderingChild and accessoiry display the bounding box More...
 
virtual void init ()
 initialize pointers to NULL and other attributes More...
 
virtual void initImageProperties ()
 Update the Properties displayed in the PropertyExplorer It should be called by setImageData to update the properties with respect to the new image data The properties updated are: More...
 
void initLookupTable ()
 
void initRepresentation ()
 the concrete building of the 3D objects (Slice/Geometry): none in this case! More...
 
void update3DViewer ()
 Update visibility in the 3D viewer. More...
 
void updateImageComponents ()
 update the image components vtkImageData of all the available SingleImageComponent More...
 

Private Attributes

SingleImageComponentarbitrarySlices
 the arbitrary slices representation (all intelligence is delegated to a Slice class instance) More...
 
SingleImageComponentaxialSlices
 the axial slices representation (all intelligence is delegated to a Slice class instance) More...
 
SingleImageComponentcoronalSlices
 the coronal slices representation (all intelligence is delegated to a Slice class instance) More...
 
double currentPixelPicked [3]
 Store the last pixel selected, in original slices ref. More...
 
vtkSmartPointer< vtkTransform > initialFrameTransform
 The initial frame of the image at opening. More...
 
vtkSmartPointer< vtkTransform > initialImageDataTransform
 The initial transform to the vtkImageData. More...
 
ImageOrientationHelper::PossibleImageOrientations initialOrientation
 Initial image orientation. More...
 
vtkSmartPointer< vtkWindowLevelLookupTable > lut
 the current lookup table More...
 
QStandardItemModel * model
 Model to display data. More...
 
vtkSmartPointer< vtkImageData > originalImageData
 the core Image Volume that is managed here More...
 
vtkSmartPointer< vtkMatrix4x4 > rotationMatrix
 The rotation matrix, that might have been altered by the user Will be saved in header file information as TransformMatrix tag. More...
 
SingleImageComponentsagittalSlices
 the sagittal slices representation (all intelligence is delegated to a Slice class instance) More...
 
QTableView * selectionView
 Tab displaying data selected point in the property explorer. More...
 
MeshComponentvolumeRenderingChild
 When an action computes volume rendering for an image, it stores the corresponding actor as a prop of this Component. More...
 

Additional Inherited Members

- Public Types inherited from camitk::Component
enum  Representation { GEOMETRY, SLICE, NO_REPRESENTATION }
 The different representation that can be implemented to represent this Component in the InteractiveViewer. More...
 
- Public Types inherited from camitk::InterfaceGeometry
enum  EnhancedMode { Normal = 0x0, Hidden = 0x1, Shaded = 0x2, Highlighted = 0x4 }
 (and QFlags EnhancedModes) handle the way the rendering actors will be enhanced or not (from completely hidden to highlighted) More...
 
enum  GlyphType { NoGlyph = 0x0, Sphere = 0x1 }
 (and QFlags GlyphTypes) is the type of glyph attached to the geometry representation More...
 
enum  RenderingMode { None = 0x0, Surface = 0x1, Wireframe = 0x2, Points = 0x4 }
 (and QFlags RenderingModes) handle actor rendering options (render this InterfaceGeometry as a surface, a wireframe and set of points). More...
 
- Public Attributes inherited from camitk::Component
 setPointSet
 
vtkSmartPointer< vtkPointSet > getDataPort
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > getActor
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > vtkSmartPointer< vtkActor >
 
 setRenderingModes
 
 getEnhancedModes
 
const EnhancedModes setActorColor
 
const EnhancedModes const RenderingModes
 
const EnhancedModes const const double
 
const EnhancedModes const const const double
 
 setColor
 
const double
 
const const double
 
const const const double
 
const const const const double getActorOpacity
 
const const const const double double
 
const const const const double const RenderingModes setMapperScalarRange
 
const const const const double const RenderingModes double
 
const const const const double const RenderingModes double const double size = 0.0) override
 
 setMeshWorldTransform
 
 setOriginalVolume
 
vtkSmartPointer< vtkImageData > get3DImageActor
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > getPixelActor
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane setSlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double setPixelRealPosition
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double double
 
resetTransform rotate
 
resetTransform double
 
resetTransform double setTransformTranslation
 
resetTransform double double
 
resetTransform double double setTransformRotation
 
resetTransform double double double
 
 removeFrameChild
 
- Public Attributes inherited from camitk::InterfaceBitMap
QMap< QString, vtkSmartPointer< vtkProp > > extraProp
 The additional map for prop (include at least "label" and "glyph". More...
 
- Protected Attributes inherited from camitk::Component
ComponentList childrenComponent
 The explorer sub items. More...
 
unsigned int indexOfPropertyExplorerTab
 The PropertyExplorer tab index to select once refreshed. More...
 
bool isSelectedFlag
 tells if this particular Component is selected or not More...
 
bool modifiedFlag
 the modificatio flag (could be extended to manage a undo/redo list) More...
 
QString myFileName
 the file name from which the Component is loaded More...
 
InterfaceFramemyFrame
 myFrame is the pose (position and orientation) of the Component in the world frame, the Component delegates all InterfaceFrame activity to myFrame (delegation pattern) More...
 
InterfaceGeometrymyGeometry
 myGeometry is the 3d representation of this Component, the Component delegates all InterfaceGeometry activity to myGeometry (delegation pattern) More...
 
InterfaceNodemyParentNode
 who is the boss? The Component! More...
 
InterfaceBitMapmySlice
 mySlice is the slice representation of this data component, the Component delegates all InterfaceBitMap activity to mySlice (delegation pattern) More...
 

Detailed Description

The manager of the Image Volume data.

An image volume data has no concrete 3D representation, but handles several sub-components for axial, sagittal and coronal slices.

Vtk Pipeline:

See also
Slice
Note
You can use the following properties to change the visualization of an ImageComponent and children components:
  • "Image Name" type QString
  • "Display Image in 3D Viewer" type boolean, controls what is displayed in the default 3D viewer

Everytime a property is changed using setProperty(QString propertyName, QVariant value), the ImageComponent will automatically update, thanks to the updateProperty(..) method.

Constructor & Destructor Documentation

◆ ImageComponent() [1/2]

camitk::ImageComponent::ImageComponent ( const QString &  file)

constructor This method may throw an AbortException if a problem occurs.

References init().

◆ ImageComponent() [2/2]

camitk::ImageComponent::ImageComponent ( vtkSmartPointer< vtkImageData >  anImageData,
const QString &  name,
bool  copy = false,
ImageOrientationHelper::PossibleImageOrientations  initialOrientation = ImageOrientationHelper::RAI 
)

Creates an ImageComponent from a vtkImageData This method may throw an AbortException if a problem occurs.

Parameters
anImageData: volume image of the new ImageComponent
namename to be given to the Component (this name will apear in the explorer)
copyperform or not a deep copy of the image given in parameters.
initialOrientationthe initial orientation of the image. This information may be stored in the file header or in some time (DICOM). If no orientation information is provided, assume the image orientation is RAI. By default, does not copy the original image, but references the corresponding smart pointer (for memory reasons, but if copy is set to true, performs a deep copy).

References init(), setImageData(), camitk::Component::setModified(), and camitk::Component::setName().

◆ ~ImageComponent()

camitk::ImageComponent::~ImageComponent ( )
override

Destructor.

References model, originalImageData, and selectionView.

Member Function Documentation

◆ buildImageComponents()

void camitk::ImageComponent::buildImageComponents ( )
private

◆ getActualMaxColor()

double camitk::ImageComponent::getActualMaxColor ( ) const

Max gray level found in the image given its data type.

References originalImageData.

Referenced by initLookupTable().

◆ getActualMinColor()

double camitk::ImageComponent::getActualMinColor ( ) const

Min gray level found in the image given its data type.

References originalImageData.

Referenced by initLookupTable().

◆ getActualNumberOfColors()

int camitk::ImageComponent::getActualNumberOfColors ( ) const

Actual Number of colors: difference betweent the maximun and the minimum gray levels found in the image.

References originalImageData.

Referenced by initLookupTable().

◆ getArbitrarySlices()

SingleImageComponent * camitk::ImageComponent::getArbitrarySlices ( )

Returns the arbitrary slice.

References arbitrarySlices.

Referenced by ShowArbitrarySliceIn3D::apply().

◆ getAxialSlices()

SingleImageComponent * camitk::ImageComponent::getAxialSlices ( )

◆ getBoundingBox()

vtkSmartPointer< vtkPolyData > camitk::ImageComponent::getBoundingBox ( )
private

internal method used to put a mesh in volumeRenderingChild and accessoiry display the bounding box

References originalImageData.

Referenced by buildImageComponents().

◆ getCoronalSlices()

SingleImageComponent * camitk::ImageComponent::getCoronalSlices ( )

Returns the coronal slice.

References coronalSlices.

Referenced by ShowCoronalSliceIn3D::apply().

◆ getImageData()

vtkSmartPointer<vtkImageData> camitk::ImageComponent::getImageData ( ) const
inlinevirtual

◆ getImageDataWithFrameTransform()

vtkSmartPointer< vtkImageData > camitk::ImageComponent::getImageDataWithFrameTransform ( )

Compute a copy of the original image data on which the frame transform has been applied.

This allows to keep all the frame transform information on the file when saving it.

Returns
a vtkImageData deep copied from the original image data on which the frame transform has been applied.

References camitk::Component::getTransform(), initialFrameTransform, initialImageDataTransform, originalImageData, and rotationMatrix.

Referenced by VtkImageComponentExtension::save().

◆ getImageName()

QString camitk::ImageComponent::getImageName ( ) const

getter/setter for the property

References camitk::Component::getName().

Referenced by MultiPickingWidget::savePixelList().

◆ getInitialOrientation()

ImageOrientationHelper::PossibleImageOrientations camitk::ImageComponent::getInitialOrientation ( ) const
inline

Get the initial image orientation.

References camitk::ImageOrientationHelper::RAI.

Referenced by VtkImageComponentExtension::save().

◆ getLastPixelPicked()

void camitk::ImageComponent::getLastPixelPicked ( int *  x,
int *  y,
int *  z 
)

Get the last pixel picked using CTRL + LEFT/RIGHT CLICK in voxel index (i, j, k) indicates the voxel index (no notion of voxel size)

References currentPixelPicked, and originalImageData.

Referenced by PixelColorChanger::apply(), and pixelPicked().

◆ getLastPointPickedImageCoords()

void camitk::ImageComponent::getLastPointPickedImageCoords ( double x,
double y,
double z 
)

Get the last point picked using CTRL + LEFT/RIGHT CLICK in image real coordinates (this takes into account voxel size)

References currentPixelPicked.

◆ getLastPointPickedWorldCoords()

void camitk::ImageComponent::getLastPointPickedWorldCoords ( double x,
double y,
double z 
)

Get Get the last point picked using CTRL + LEFT/RIGHT CLICK in world coordinates This takes into account voxel size and image origin (and possible image rigid transforms).

References currentPixelPicked, and camitk::Component::getTransformFromWorld().

Referenced by pixelPicked().

◆ getLut()

vtkSmartPointer< vtkWindowLevelLookupTable > camitk::ImageComponent::getLut ( )
virtual

◆ getMaxColor()

double camitk::ImageComponent::getMaxColor ( ) const

Max possible gray level of the image given its data type.

References originalImageData.

Referenced by getNumberOfColors().

◆ getMinColor()

double camitk::ImageComponent::getMinColor ( ) const

Min possible gray level of the image given its data type.

References originalImageData.

Referenced by getNumberOfColors().

◆ getNumberOfColors()

int camitk::ImageComponent::getNumberOfColors ( ) const
overridevirtual

Number of colors: number of possible gray levels in the image computed from the min and the max of the data type ; e.g.

for a volume coded on unsigned char, returns 256.

Implements camitk::InterfaceBitMap.

References getMaxColor(), and getMinColor().

◆ getNumberOfPropertyWidget()

unsigned int camitk::ImageComponent::getNumberOfPropertyWidget ( )
overridevirtual

return number of tabs in property explorer: there is more than one widget

Reimplemented from camitk::Component.

◆ getNumberOfSlices()

int camitk::ImageComponent::getNumberOfSlices ( ) const
overridevirtual

Number of axial slices (i.e.

dim[2])

Implements camitk::InterfaceBitMap.

References axialSlices, and camitk::InterfaceBitMap::getNumberOfSlices().

◆ getPropertyWidgetAt()

QWidget * camitk::ImageComponent::getPropertyWidgetAt ( unsigned int  i)
overridevirtual

get the property widget (to view as tabs in the property explorer): the default property widget and the selection view

Reimplemented from camitk::Component.

References selectionView.

◆ getRotationMatrix()

const vtkSmartPointer<vtkMatrix4x4> camitk::ImageComponent::getRotationMatrix ( )
inline

◆ getSagittalSlices()

SingleImageComponent * camitk::ImageComponent::getSagittalSlices ( )

Returns the sagittal slice.

References sagittalSlices.

Referenced by ShowSagittalSliceIn3D::apply().

◆ getVolumeRenderingChild()

MeshComponent * camitk::ImageComponent::getVolumeRenderingChild ( )

Returns the MeshComponent which will contain the volume rendering actor.

References volumeRenderingChild.

Referenced by VolumeRenderingAction::createVolumeRendering(), and VolumeRenderingAction::process().

◆ init()

void camitk::ImageComponent::init ( )
privatevirtual

◆ initImageProperties()

void camitk::ImageComponent::initImageProperties ( )
privatevirtual

Update the Properties displayed in the PropertyExplorer It should be called by setImageData to update the properties with respect to the new image data The properties updated are:

  • Image Name
  • Image Dimensions
  • Image Size
  • Voxel Size
  • Voxel Data Type
  • Display Image in 3D Viewer

References camitk::Component::getName(), and originalImageData.

Referenced by setImageData().

◆ initLookupTable()

void camitk::ImageComponent::initLookupTable ( )
private

◆ initRepresentation()

void camitk::ImageComponent::initRepresentation ( )
inlineprivatevirtual

the concrete building of the 3D objects (Slice/Geometry): none in this case!

Implements camitk::Component.

◆ pixelPicked()

void camitk::ImageComponent::pixelPicked ( double  x,
double  y,
double  z,
SingleImageComponent whoIsAsking 
)

Method called when a pixel has been picked in the 3D view.

This method tells all the scene3D to display the slice containing the picked pixel. The arguments are the ccordinates of the 3D point.

References currentPixelPicked, camitk::Component::getChildren(), getLastPixelPicked(), getLastPointPickedWorldCoords(), model, originalImageData, selectionView, camitk::Component::setIndexOfPropertyExplorerTab(), and camitk::Component::setSlice.

Referenced by MultiPickingWidget::manuallyModified(), and MultiPickingWidget::removeSeedNumber().

◆ refresh()

void camitk::ImageComponent::refresh ( ) const
overridevirtual

force refresh of all interactive viewers that are displayng sub-components as ImageComponent is not itself displayed by any viewer

Reimplemented from camitk::Component.

References camitk::Component::childrenComponent, and camitk::Component::refresh().

Referenced by ImageLutWidget::applyLUT().

◆ replaceImageData()

void camitk::ImageComponent::replaceImageData ( vtkSmartPointer< vtkImageData >  anImageData,
bool  copy = false,
ImageOrientationHelper::PossibleImageOrientations  initialOrientation = ImageOrientationHelper::RAI 
)
virtual

Replaces the current image volume by the one given in parameters.

Parameters
anImageDatathe replacement image data
Ifcopy is set to true, performs a deep copy before replacing the image. If copy is set to false, only takes the smart pointer as input.
initialOrientationthe initial orientation of the replacement image. If no orientation information is provided, assume the image orientation is RAI.

References arbitrarySlices, axialSlices, coronalSlices, camitk::Component::refreshInterfaceNode(), camitk::Component::removeChild(), sagittalSlices, setImageData(), and volumeRenderingChild.

Referenced by ReorientImage::process().

◆ setImageData()

void camitk::ImageComponent::setImageData ( vtkSmartPointer< vtkImageData >  anImageData,
bool  copy,
ImageOrientationHelper::PossibleImageOrientations  initialOrientation = ImageOrientationHelper::RAI,
vtkSmartPointer< vtkMatrix4x4 >  initialTransformMatrix = nullptr 
)
protectedvirtual

Set the image data of the volumic images with the given orientation options.

Parameters
anImageDataThe main vtkImageData of the volumic image.
copyIndicate if we do a vtk deep copy of these data or directly work on the one provided.
initialOrientationInitial image orientation
initialTransformMatrixInitial image rotation (provided as a 4x4 matrix)

References camitk::Component::addProperty(), buildImageComponents(), camitk::ImageOrientationHelper::getOrientationAsQString(), camitk::Component::getTransform(), camitk::ImageOrientationHelper::getTransformToRAI(), initialFrameTransform, initialImageDataTransform, initialOrientation, initImageProperties(), initLookupTable(), originalImageData, rotationMatrix, camitk::Property::setReadOnly(), and camitk::InterfaceFrame::setTransform().

Referenced by ItkImageComponent::createComponent(), VtkImageComponent::createComponent(), RawImageComponent::createComponent(), DicomComponent::DicomComponent(), ImageComponent(), and replaceImageData().

◆ setImageName()

void camitk::ImageComponent::setImageName ( const QString &  imageName)

◆ setLut()

void camitk::ImageComponent::setLut ( vtkSmartPointer< vtkWindowLevelLookupTable >  lookupTable)
virtual

Update the lookup table of the image viewer (see InterfaceBitMap).

References lut.

◆ setSelected()

void camitk::ImageComponent::setSelected ( const bool  b,
const bool  recursive = false 
)
overridevirtual

set selected will select all the Image components (axial, sagittal and coronal).

Reimplemented from camitk::Component.

References camitk::Component::getChildren(), camitk::Component::setSelected(), and camitk::SingleImageComponent::singleImageSelected().

◆ setSingleImageComponents()

void camitk::ImageComponent::setSingleImageComponents ( SingleImageComponent axialSlices,
SingleImageComponent sagittalSlices,
SingleImageComponent coronalSlices,
SingleImageComponent arbitrarySlices 
)
protectedvirtual

Set all single images.

The only time this method should be used is when you redefined the SingleImageComponent class. Warning: this overwrite the original single image components. Note: if you need to change only one of these SingleImageComponent instances, you'd better use the getter methods on the remaining instances.

Parameters
axialSlicesthe axial slices representation (use getAxialSlices() if you don't need to modify this particular orientation)
sagittalSlicesthe sagittal slices representation (use getSagittalSlices() if you don't need to modify this particular orientation)
coronalSlicesthe coronal slices representation (use getCoronalSlices() if you don't need to modify this particular orientation)
arbitrarySlicesthe arbirtrary slices representation (use getArbitrarySlices() if you don't need to modify this particular orientation)

References arbitrarySlices, axialSlices, coronalSlices, camitk::Component::removeChild(), and sagittalSlices.

◆ update3DViewer()

void camitk::ImageComponent::update3DViewer ( )
private

Update visibility in the 3D viewer.

Depending on the value of the "Display Image in 3D Viewer" property and the available SingleImageComponent actually instanciated, this method will update the visibility of the SingleImageComponent in the default 3D viewer.

References arbitrarySlices, axialSlices, coronalSlices, camitk::InteractiveViewer::get3DViewer(), sagittalSlices, camitk::SingleImageComponent::setViewSliceIn3D(), camitk::Component::setVisibility(), and volumeRenderingChild.

Referenced by updateProperty().

◆ updateImageComponents()

void camitk::ImageComponent::updateImageComponents ( )
private

update the image components vtkImageData of all the available SingleImageComponent

References arbitrarySlices, axialSlices, coronalSlices, originalImageData, sagittalSlices, and camitk::Component::setOriginalVolume.

◆ updateProperty()

void camitk::ImageComponent::updateProperty ( QString  name,
QVariant  value 
)
overridevirtual

Member Data Documentation

◆ arbitrarySlices

SingleImageComponent* camitk::ImageComponent::arbitrarySlices
private

the arbitrary slices representation (all intelligence is delegated to a Slice class instance)

Referenced by buildImageComponents(), getArbitrarySlices(), init(), replaceImageData(), setSingleImageComponents(), update3DViewer(), and updateImageComponents().

◆ axialSlices

SingleImageComponent* camitk::ImageComponent::axialSlices
private

the axial slices representation (all intelligence is delegated to a Slice class instance)

Referenced by buildImageComponents(), getAxialSlices(), getNumberOfSlices(), init(), replaceImageData(), setSingleImageComponents(), update3DViewer(), and updateImageComponents().

◆ coronalSlices

SingleImageComponent* camitk::ImageComponent::coronalSlices
private

the coronal slices representation (all intelligence is delegated to a Slice class instance)

Referenced by buildImageComponents(), getCoronalSlices(), init(), replaceImageData(), setSingleImageComponents(), update3DViewer(), and updateImageComponents().

◆ currentPixelPicked

double camitk::ImageComponent::currentPixelPicked[3]
private

Store the last pixel selected, in original slices ref.

Referenced by getLastPixelPicked(), getLastPointPickedImageCoords(), getLastPointPickedWorldCoords(), init(), and pixelPicked().

◆ initialFrameTransform

vtkSmartPointer<vtkTransform> camitk::ImageComponent::initialFrameTransform
private

The initial frame of the image at opening.

Note
This transform is equal to the initial image translation (Offset) multiplies by its rotation (TransformMatrix) multiplies by the reorientation transform (transform -> RAI)

Referenced by getImageDataWithFrameTransform(), and setImageData().

◆ initialImageDataTransform

vtkSmartPointer<vtkTransform> camitk::ImageComponent::initialImageDataTransform
private

The initial transform to the vtkImageData.

Note
This transform is equal to the initial image translation (Offset) multiplies by the reorientation transform (transform -> RAI)

Referenced by getImageDataWithFrameTransform(), and setImageData().

◆ initialOrientation

ImageOrientationHelper::PossibleImageOrientations camitk::ImageComponent::initialOrientation
private

Initial image orientation.

Referenced by setImageData().

◆ lut

vtkSmartPointer<vtkWindowLevelLookupTable> camitk::ImageComponent::lut
private

the current lookup table

Referenced by buildImageComponents(), getLut(), init(), initLookupTable(), and setLut().

◆ model

QStandardItemModel* camitk::ImageComponent::model
private

Model to display data.

Referenced by init(), pixelPicked(), and ~ImageComponent().

◆ originalImageData

vtkSmartPointer<vtkImageData> camitk::ImageComponent::originalImageData
private

◆ rotationMatrix

vtkSmartPointer<vtkMatrix4x4> camitk::ImageComponent::rotationMatrix
private

The rotation matrix, that might have been altered by the user Will be saved in header file information as TransformMatrix tag.

Referenced by VtkImageComponent::createComponent(), getImageDataWithFrameTransform(), VtkImageComponent::readMetaImageTransformMatrix(), and setImageData().

◆ sagittalSlices

SingleImageComponent* camitk::ImageComponent::sagittalSlices
private

the sagittal slices representation (all intelligence is delegated to a Slice class instance)

Referenced by buildImageComponents(), getSagittalSlices(), init(), replaceImageData(), setSingleImageComponents(), update3DViewer(), and updateImageComponents().

◆ selectionView

QTableView* camitk::ImageComponent::selectionView
private

Tab displaying data selected point in the property explorer.

Referenced by getPropertyWidgetAt(), init(), pixelPicked(), and ~ImageComponent().

◆ volumeRenderingChild

MeshComponent* camitk::ImageComponent::volumeRenderingChild
private

When an action computes volume rendering for an image, it stores the corresponding actor as a prop of this Component.

Referenced by buildImageComponents(), getVolumeRenderingChild(), init(), replaceImageData(), and update3DViewer().


The documentation for this class was generated from the following files: