Computer Assisted Medical Intervention Tool Kit version 6.0
 
Loading...
Searching...
No Matches
camitk::ImageComponent Class Reference

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

#include <ImageComponent.h>

+ Inheritance diagram for camitk::ImageComponent:
+ Collaboration diagram for camitk::ImageComponent:

Public Member Functions

virtual vtkSmartPointer< vtkActor > get3DCursor () override
 Get a vtkActor to display a 3D cursor at the last picked position If the last picked pixel is invalid, this returns a nullptr.
 
double getActualMaxColor () const
 Max gray level found in the image given its data type.
 
double getActualMinColor () const
 Min gray level found in the image given its data type.
 
int getActualNumberOfColors () const
 Actual Number of colors: difference betweent the maximun and the minimum gray levels found in the image.
 
ArbitrarySingleImageComponentgetArbitrarySlices ()
 Returns the arbitrary slice.
 
SingleImageComponentgetAxialSlices ()
 Returns the axial slice.
 
SingleImageComponentgetCoronalSlices ()
 Returns the coronal slice.
 
vtkSmartPointer< vtkImageData > getImageData () const override
 get the image volume managed by this Component
 
vtkSmartPointer< vtkImageData > getImageDataWithFrameTransform ()
 Compute a copy of the original image data on which the frame transform has been applied.
 
ImageOrientationHelper::PossibleImageOrientations getInitialOrientation () const
 Get the initial image orientation.
 
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)
 
void getLastPointPickedDataFrame (double *x, double *y, double *z)
 Get the last point picked using CTRL + LEFT/RIGHT CLICK in the data frame coordinates (this takes into account voxel size)
 
void getLastPointPickedWorldFrame (double *x, double *y, double *z)
 Get Get the last point picked using CTRL + LEFT/RIGHT CLICK in the world coordinates This takes into account voxel size and image origin (and possible image rigid transforms).
 
virtual vtkSmartPointer< vtkWindowLevelLookupTable > getLut ()
 get the current lookup table
 
virtual const vtkSmartPointer< vtkWindowLevelLookupTable > getLut () const
 get the current lookup table (const version)
 
double getMaxColor () const
 Max possible gray level of the image given its data type.
 
double getMinColor () const
 Min possible gray level of the image given its data type.
 
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.
 
int getNumberOfSlices () const override
 Number of axial slices (i.e.
 
const vtkSmartPointer< vtkMatrix4x4 > getRotationMatrix ()
 
SingleImageComponentgetSagittalSlices ()
 Returns the sagittal slice.
 
MeshComponentgetVolumeRenderingChild ()
 Returns the MeshComponent which will contain the volume rendering actor.
 
 ImageComponent (const QString &file, const QString &name)
 Creates an ImageComponent from a file.
 
 ImageComponent (vtkSmartPointer< vtkImageData > anImageData, const QString &name, bool copy=false, ImageOrientationHelper::PossibleImageOrientations initialOrientation=ImageOrientationHelper::RAI)
 Creates an ImageComponent from a vtkImageData.
 
void pixelPicked (double x, double y, double z) override
 Method called when a pixel has been picked in the 3D view.
 
void refresh () override
 force refresh of all interactive viewers that are displaying sub-components as ImageComponent is not itself displayed by any viewer
 
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.
 
void setLastPointPickedFromPixel (int x, int y, int z)
 Set the last point picked coordinates to the center of the x,y,z voxel.
 
virtual void setLut (vtkSmartPointer< vtkWindowLevelLookupTable > lookupTable)
 Update the lookup table of the image viewer (see InterfaceBitMap).
 
void setSelected (const bool b, const bool recursive=false) override
 set selected will select all the Image components (axial, sagittal and coronal).
 
virtual void setVisibility (QString, bool) override
 set the visibility inside the viewer of the given name (override required to manage the specific case of the 3D viewer)
 
 ~ImageComponent () override
 Destructor.
 
InterfaceProperty

InterfaceProperty implemented methods

void propertyValueChanged (QString) override
 
unsigned int getNumberOfPropertyWidget () override
 return number of tabs in property explorer: there is more than one widget
 
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
 
Frame management
  • Override to force subComponents to have the same data and main frame than this Component
virtual void setFramesAndTransformation (const std::shared_ptr< FrameOfReference > &mainFrame, const std::shared_ptr< FrameOfReference > &dataFrame, const std::shared_ptr< Transformation > &mainTransformation)
 
const FrameOfReferencegetDataFrame () const
 get the data FrameOfReference (i.e., the vtkImageData frame)
 
virtual void setFrame (const std::shared_ptr< FrameOfReference > &frame) override
 set the main FrameOfReference overriden to manage subcomponents
 
virtual void setFrameFrom (const InterfaceFrame *) override
 
virtual void resetFrame () override
 Reset this object's FrameOfReference, that is call setFrame with a newly created frame of reference.
 
virtual const std::vector< std::shared_ptr< FrameOfReference > > & getAdditionalFrames () const
 get the other frames (neither data nor main)
 
virtual void addAdditionalFrame (const std::shared_ptr< FrameOfReference > &fr)
 add an additional frame (neither data nor main)
 
virtual void removeAdditionalFrame (const FrameOfReference *fr)
 remove an additional frame
 
virtual const std::vector< std::shared_ptr< Transformation > > & getAdditionalTransformations () const
 get the additional Transformations
 
virtual void addAdditionalTransformation (const std::shared_ptr< Transformation > tr)
 add an additional Transformation
 
virtual void removeAdditionalTransformation (const Transformation *tr)
 Remove an additional Transformation from the Component.
 
virtual QMultiMap< const FrameOfReference *, Component * > getAllFrames (bool includeChildrenFrames=true) override
 Get all FrameOfReference owned by this image.
 
virtual QMultiMap< const Transformation *, Component * > getAllTransformations (bool includeChildrenTransformations=true) override
 Get all Transformation owned by this image.
 
virtual TransformationgetMainTransformation () const
 Get main Transformation (data -> main)
 
virtual void updateMainTransformation (vtkSmartPointer< vtkMatrix4x4 >)
 update the main transformation using the given 4x4 matrix
 
InterfacePersistence
virtual QVariant toVariant () const override
 
virtual void fromVariant (const QVariant &) override
 Load data from a QVariant to initialize the current object.
 
- Public Member Functions inherited from camitk::Component
 Component (QString file, QString name, Representation rep=NO_REPRESENTATION, bool createDefaultFrame=true)
 Component constructor for top-level component (please use the other constructor for sub-level components).
 
 Component (Component *parentComponent, const QString &name, Representation rep=NO_REPRESENTATION, bool createDefaultFrame=true)
 Component constructor for a Component that is a child of another Component You should not use this constructor for a top-level component.
 
virtual ~Component () override
 default destructor.
 
Representation getRepresentation () const
 return the type of representation concretely implemented by this Component in the InteractiveViewer.
 
bool isTopLevel () const
 return true if this component is a top-level component
 
ComponentgetParentComponent ()
 get the parent component
 
ComponentgetTopLevelComponent ()
 get the top-level component
 
virtual void setModified (bool modified=true)
 set the modified flag
 
virtual bool getModified () const
 set the modified flag
 
virtual bool getVisibility (QString) const
 get the visibility inside the viewer of the given name
 
virtual bool isSelected () const
 Check if this data component is selected.
 
const QString getFileName () const
 get the file name where the data have to be stored/were stored
 
void setFileName (const QString &)
 set the file name where the data have to be stored
 
bool event (QEvent *e) override
 Overriden from QObject, this one is only intercepting signal for dynamic property changed (see constructor).
 
QMenu * getActionMenu ()
 Get a QMenu that contains all the action that can be applied to this component.
 
virtual QUuid getUuid () const override
 Get the unique ID of the component.
 
virtual bool setUuid (QUuid) override
 Set the unique ID of the component.
 
QStringList getHierarchy () const override
 
bool isInstanceOf (QString className) const override
 Assert that a Component instance really inherits from a given className.
 
QObject * getPropertyObject () override
 Get the property object that could be understood by PropertyEditor.
 
const QObject * getPropertyObject () const override
 
void setIndexOfPropertyExplorerTab (unsigned int index) override final
 Set the index of the tab in the ProperlyExplorer to select for display.
 
unsigned int getIndexOfPropertyExplorerTab () override
 Get the index of the tab in the ProperlyExplorer to select for display.
 
Q_INVOKABLE camitk::PropertygetProperty (QString name) override
 Get a Property given its name.
 
bool addProperty (Property *) override
 Add a new CamiTK property to the component.
 
virtual QVariant getPropertyValue (const QString &name) const override
 get the property QVariant (same as property(const char*)) but check if it exists first.
 
virtual bool setPropertyValue (const QString &name, QVariant newValue) override
 set the property QVariant value (same as setProperty(const char*, newValue)) but check if it exists first.
 
void removeChild (InterfaceNode *) override
 remove a child node.
 
void setParent (InterfaceNode *) override
 set the parent Component.
 
bool doubleClicked () override
 This method is called each time the InterfaceNode is double clicked by the user.
 
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
 
void attachChild (InterfaceNode *) override
 add a child Component (but leave its parent unchanged)
 
void deleteChildren () override final
 delete all sub Component, but do not delete the pointer (only the top-level component has the right to do that)
 
QString getName () const override
 get the name to be displayed
 
void setName (const QString &) override
 set the name to be displayed
 
const ComponentListgetChildren () const override
 get the list of the InterfaceNode children (sub items in the hierarchy)
 
InterfaceNodegetParent () override
 get the parent Component
 
QPixmap getIcon () override
 Get the pixmap that will be displayed for this node.
 
void setNodeModified (bool) override final
 Set up the node modification flag.
 
bool getNodeModified () const override
 Get the current modification flag.
 
bool inItalic () const override
 A component name is not displayed in italic by default.
 
QMenu * getPopupMenu (QWidget *parent=nullptr) override
 get the popup menu to display (always return nullptr, overwrite this method if you want to give here you own popup)
 
virtual const FrameOfReferencegetFrame () const override
 Get the pointer to this object's FrameOfReference.
 
vtkSmartPointer< vtkAxesActor > getFrameAxisActor (QString viewerName) override
 get the Frame Actor for a viewer
 
virtual bool getFrameVisibility (QString viewerName) const override
 get the visibility of the Frame axis actor in the named viewer
 
virtual void setFrameVisibility (QString viewerName, bool visibility) override
 set the visibility of the Frame axis actor
 
 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 delegate1 (myGeometry, setColorMode, int) delegate1(myGeometry
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > const RenderingModes const QString &vtkSmartPointer< vtkProp > getProp (const QString &param) override
 Return the vtkProp (actors, volumes and annotations) corresponding to the given name.
 
unsigned int getNumberOfProp () const override
 return the number of additional prop
 
vtkSmartPointer< vtkProp > getProp (unsigned int index) override
 return an additional prop by its index
 
bool addProp (const QString &name, vtkSmartPointer< vtkProp > prop) override
 insert an additional prop, defining it by its name (default visibility = false).
 
bool removeProp (const QString &name) override
 remove a given additional prop.
 
void pointPicked (vtkIdType, bool) override
 an inherited class can redefine this method something specific.
 
void cellPicked (vtkIdType, bool) override
 an inherited class can redefine this method something specific.
 
void getBounds (double *bounds) override
 compute the object's bounding box [xmin,xmax, ymin,ymax, zmin,zmax], see Component.cpp
 
double getBoundingRadius () override
 compute the object's bounding sphere radius,
 
 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
 
 delegateAndInvokeChildren1 (myGeometry, setEnhancedModes, const EnhancedModes) virtual const EnhancedModes getEnhancedModes() const override
 
 delegateAndInvokeChildren1Array (myGeometry, setActorColor, const RenderingModes, double, 4) delegateAndInvokeChildren4(myGeometry
 
const const const const double void getActorColor (const RenderingModes, double[4], bool ignoreEnhancedModes=false) const override
 see Component.cpp
 
 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
 
virtual void setLinesAsTubes (bool isTubes=true, bool radiusFromLength=true, double radiusFactor=1.0/40.0, int numberOfSides=5) override
 Set the lines as tubes (works only for vtkDataSet representation that contains lines)
 
vtkSmartPointer< vtkImageData > delegate1 (mySlice, setOriginalVolume, vtkSmartPointer< vtkImageData >) delegateConstGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > delegateConstGet0 (mySlice, get3DImageActor, vtkSmartPointer< vtkImageActor >) delegateConstGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > delegateGet0 (mySlice, getPixelActor, vtkSmartPointer< vtkActor >) delegate3(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double delegate0 (mySlice, updatePickPlane) delegate1(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int delegate3 (mySlice, setSlice, double, double, double) delegateConstGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int int delegate3 (mySlice, setPixelRealPosition, double, double, double) delegate1(mySlice
 
int getSlice () const override
 see Component.cpp
 
- Public Member Functions inherited from camitk::InterfaceProperty
 ~InterfaceProperty ()=default
 empty virtual destructor, to avoid memory leak
 
- Public Member Functions inherited from camitk::InterfaceNode
virtual ~InterfaceNode ()=default
 empty virtual destructor, to avoid memory leak
 
- Public Member Functions inherited from camitk::InterfaceGeometry
virtual ~InterfaceGeometry ()=default
 empty virtual destructor, to avoid memory leak
 
virtual vtkSmartPointer< vtkPointSet > getPointSet ()=0
 
virtual void setPointSet (vtkSmartPointer< vtkPointSet >)=0
 set the low-level data set.
 
virtual void setPointData (vtkSmartPointer< vtkDataArray >)=0
 set the point data (may contains a lookup table).
 
virtual void setMeshWorldTransform (vtkSmartPointer< vtkTransform >)=0
 set the transformation for 3D representation
 
virtual vtkSmartPointer< vtkAlgorithmOutput > getDataPort () const =0
 get the custom algorithm pipeline input.
 
virtual void setDataConnection (vtkSmartPointer< vtkAlgorithmOutput >)=0
 Set/reset the connection for the InterfaceGeometry internal algorithm.
 
virtual void setTexture (vtkSmartPointer< vtkTexture >)=0
 Set a texture to this object.
 
virtual vtkSmartPointer< vtkActor > getActor (const RenderingModes)=0
 Return the actor for the representation mode, nullptr if the actor doesn't exist.
 
virtual void updateLabel (const QString &label)=0
 update position and text of the label prop
 
virtual void setPointPosition (const unsigned int orderNumber, const double x, const double y, const double z)=0
 set a given point position
 
virtual void setRenderingModes (const RenderingModes)=0
 
virtual void setEnhancedModes (const EnhancedModes)=0
 set the enhanced mode
 
virtual const EnhancedModes getEnhancedModes () const =0
 get the current enhanced mode
 
virtual void setActorColor (const RenderingModes, double *color)=0
 Set the color of given representation modes.
 
virtual void setActorColor (const RenderingModes, const double, const double, const double)=0
 Set the color of given representation modes.
 
virtual void getActorColor (const RenderingModes mode, double *color, bool ignoreEnhancedModes=false) const =0
 Get the color of given representation modes in the second parameter.
 
virtual void setColor (const double, const double, const double)=0
 Set an (r,g,b) color to all representation modes, without changing the opacity.
 
virtual void setColor (const double, const double, const double, const double)=0
 Set an (r,g,b,a) color to all representation modes.
 
virtual void setActorOpacity (const RenderingModes, const double)=0
 Set the opacity of this representation modes. WARNING color field (surfaceColor, ...) are not modified!
 
virtual double getActorOpacity (const RenderingModes) const =0
 Return the opacity of a given renderng mode.
 
virtual void setOpacity (const double)=0
 Set the opacity of this object. WARNING color field (surfaceColor, ...) are not modified!
 
virtual void setMapperScalarRange (double min, double max)=0
 Set the mapper scalar range.
 
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).
 
virtual void setColorMode (int vtkColorMode=VTK_COLOR_MODE_DEFAULT)=0
 
- 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.
 
virtual vtkSmartPointer< vtkImageActor > get3DImageActor () const =0
 Return the vtkImageActor (vtkProp) representing a slice to be displayed in 3D viewers.
 
virtual vtkSmartPointer< vtkActor > getPickPlaneActor () const =0
 Return the vtkActor used to pick pixels in the slices.
 
virtual vtkSmartPointer< vtkActor > getPixelActor ()=0
 Return the vtkActor used to pick pixels in the slices.
 
virtual void setArbitraryTransform (vtkSmartPointer< vtkTransform >)=0
 Set the pointer to the image transformation.
 
virtual void setOriginalVolume (vtkSmartPointer< vtkImageData >)=0
 set the original volume image data (the source vtkImageData before any reslice) and refresh the vtk pipeline
 
virtual void setPixelRealPosition (double, double, double)=0
 move the pixel selection green indicator (pixelActor) to the given real position
 
virtual void setSlice (double x, double y, double z)=0
 Set the slice corresponding to the given image coordinates (in RAI convention)
 
virtual void setSlice (int s)=0
 Set the current slice index.
 
virtual void updatePickPlane ()=0
 update the position of the plane surrounding the currently selected slice
 
virtual ~InterfaceBitMap ()=default
 virtual destructor
 
- Public Member Functions inherited from camitk::InterfaceFrame
virtual ~InterfaceFrame ()=default
 empty virtual destructor, to avoid memory leak
 
- Public Member Functions inherited from camitk::InterfacePersistence
virtual ~InterfacePersistence ()=default
 

Protected Member Functions

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.
 
bool setMainTransformation (const std::shared_ptr< Transformation > &tr)
 Set main Transformation (dataFrame -> mainFrame) return false if the main transformation was not modified (that is tr was nullptr)
 
void setSingleImageComponents (SingleImageComponent *axialSlices, SingleImageComponent *sagittalSlices, SingleImageComponent *coronalSlices, ArbitrarySingleImageComponent *arbitrarySlices)
 Set all single images.
 

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 >
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > const RenderingModes updateLabel
 
 setRenderingModes
 
 setActorColor
 
const RenderingModes
 
const const double
 
const const const double
 
 setColor
 
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
 
 getImageData
 
vtkSmartPointer< vtkImageData > get2DImageActor
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > getPickPlaneActor
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > pixelPicked
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double setSlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int getNumberOfColors
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int int setArbitraryTransform
 
- Protected Attributes inherited from camitk::Component
ComponentList childrenComponent
 The explorer sub items.
 
std::shared_ptr< FrameOfReferenceframeOfReference = nullptr
 The FrameOfReference in which this component's data is represented.
 
unsigned int indexOfPropertyExplorerTab
 The PropertyExplorer tab index to select once refreshed.
 
bool isSelectedFlag
 tells if this particular Component is selected or not
 
bool modifiedFlag
 the modification flag (could be extended to manage a undo/redo list)
 
QString myFileName
 the file name from which the Component is loaded
 
InterfaceGeometrymyGeometry
 myGeometry is the 3d representation of this Component, the Component delegates all InterfaceGeometry activity to myGeometry (delegation pattern)
 
InterfaceNodemyParentNode
 who is the boss? The Component!
 
InterfaceBitMapmySlice
 mySlice is the slice representation of this data component, the Component delegates all InterfaceBitMap activity to mySlice (delegation pattern)
 

Detailed Description

The manager of the Image Volume data.

An image volume data has no concrete 3D representation, as its representation is provided by its sub-components (axial, sagittal, coronal and arbitrary slices as well as volume rendering).

It builds a complete/ready-to-use VTK pipeline:

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

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

Constructor & Destructor Documentation

◆ ImageComponent() [1/2]

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

Creates an ImageComponent from a file.

This method is called from a ComponentExtension derived class that support the given file format.

This method may throw an AbortException if a problem occurs.

Parameters
filethe complete path to the image file
namename to be given to the Component (this name will appear in the explorer)

◆ 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.

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).

This method may throw an AbortException if a problem occurs.

Parameters
anImageDatavolume image of the new ImageComponent
namename to be given to the Component (this name will appear 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.

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

+ Here is the call graph for this function:

◆ ~ImageComponent()

camitk::ImageComponent::~ImageComponent ( )
override

Destructor.

Member Function Documentation

◆ addAdditionalFrame()

virtual void camitk::ImageComponent::addAdditionalFrame ( const std::shared_ptr< FrameOfReference > &  fr)
inlinevirtual

add an additional frame (neither data nor main)

◆ addAdditionalTransformation()

virtual void camitk::ImageComponent::addAdditionalTransformation ( const std::shared_ptr< Transformation tr)
inlinevirtual

add an additional Transformation

◆ fromVariant()

void camitk::ImageComponent::fromVariant ( const QVariant &  variant)
overridevirtual

Load data from a QVariant to initialize the current object.

Reimplemented from camitk::Component.

References CAMITK_ERROR, CAMITK_WARNING_ALT, camitk::Component::fromVariant(), camitk::TransformationManager::getFrameOfReferenceOwnership(), getLut(), camitk::Component::getName(), camitk::TransformationManager::getTransformationOwnership(), setFramesAndTransformation(), and camitk::ArbitrarySingleImageComponent::updatePropertyFromTransformation().

+ Here is the call graph for this function:

◆ get3DCursor()

vtkSmartPointer< vtkActor > camitk::ImageComponent::get3DCursor ( )
overridevirtual

Get a vtkActor to display a 3D cursor at the last picked position If the last picked pixel is invalid, this returns a nullptr.

Reimplemented from camitk::Component.

◆ getActualMaxColor()

double camitk::ImageComponent::getActualMaxColor ( ) const

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

◆ getActualMinColor()

double camitk::ImageComponent::getActualMinColor ( ) const

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

◆ getActualNumberOfColors()

int camitk::ImageComponent::getActualNumberOfColors ( ) const

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

◆ getAdditionalFrames()

virtual const std::vector< std::shared_ptr< FrameOfReference > > & camitk::ImageComponent::getAdditionalFrames ( ) const
inlinevirtual

get the other frames (neither data nor main)

Referenced by getAllFrames().

+ Here is the caller graph for this function:

◆ getAdditionalTransformations()

virtual const std::vector< std::shared_ptr< Transformation > > & camitk::ImageComponent::getAdditionalTransformations ( ) const
inlinevirtual

get the additional Transformations

Referenced by getAllTransformations().

+ Here is the caller graph for this function:

◆ getAllFrames()

QMultiMap< const FrameOfReference *, Component * > camitk::ImageComponent::getAllFrames ( bool  includeChildrenFrames = true)
overridevirtual

Get all FrameOfReference owned by this image.

  • includeChildrenFrames Include the frames of this image's children along with its own

Reimplemented from camitk::Component.

References getAdditionalFrames(), camitk::Component::getChildren(), getDataFrame(), and camitk::Component::getFrame().

+ Here is the call graph for this function:

◆ getAllTransformations()

QMultiMap< const Transformation *, Component * > camitk::ImageComponent::getAllTransformations ( bool  includeChildrenTransformations = true)
overridevirtual

Get all Transformation owned by this image.

  • includeChildrenTransformations Include the Transformation of this image's children along with its own

Reimplemented from camitk::Component.

References getAdditionalTransformations(), camitk::Component::getChildren(), and getMainTransformation().

+ Here is the call graph for this function:

◆ getArbitrarySlices()

ArbitrarySingleImageComponent * camitk::ImageComponent::getArbitrarySlices ( )

Returns the arbitrary slice.

Referenced by ShowArbitrarySliceIn3D::apply(), and ShowArbitrarySliceIn3D::getQAction().

+ Here is the caller graph for this function:

◆ getAxialSlices()

SingleImageComponent * camitk::ImageComponent::getAxialSlices ( )

Returns the axial slice.

Referenced by ShowAxialSliceIn3D::apply(), ShowAxialSliceIn3D::getQAction(), and MultiPickingWidget::manuallyModified().

+ Here is the caller graph for this function:

◆ getCoronalSlices()

SingleImageComponent * camitk::ImageComponent::getCoronalSlices ( )

Returns the coronal slice.

Referenced by ShowCoronalSliceIn3D::apply(), and ShowCoronalSliceIn3D::getQAction().

+ Here is the caller graph for this function:

◆ getDataFrame()

const FrameOfReference * camitk::ImageComponent::getDataFrame ( ) const
inline

get the data FrameOfReference (i.e., the vtkImageData frame)

Referenced by ImageReconstructionAction::apply(), camitk::ArbitrarySingleImageComponent::ArbitrarySingleImageComponent(), DicomComponent::DicomComponent(), getAllFrames(), setFrame(), and setImageData().

+ Here is the caller graph for this function:

◆ getImageData()

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

◆ getImageDataWithFrameTransform()

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

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

This allows one 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.

◆ getInitialOrientation()

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

Get the initial image orientation.

◆ 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)

Referenced by PickedPixelMap::addPixel(), PixelColorChanger::apply(), PickedPixelMap::modifyPixel(), and pixelPicked().

+ Here is the caller graph for this function:

◆ getLastPointPickedDataFrame()

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

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

Referenced by PickedPixelMap::addPixel(), and PickedPixelMap::modifyPixel().

+ Here is the caller graph for this function:

◆ getLastPointPickedWorldFrame()

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

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

References camitk::TransformationManager::getTransformation(), and camitk::TransformationManager::getWorldFrame().

Referenced by PickedPixelMap::addPixel(), PickedPixelMap::modifyPixel(), and pixelPicked().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLut() [1/2]

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

get the current lookup table

Referenced by PixelColorChanger::apply(), DicomComponent::DicomComponent(), fromVariant(), ImageLutAction::getWidget(), toVariant(), and ImageLutWidget::updateComponent().

+ Here is the caller graph for this function:

◆ getLut() [2/2]

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

get the current lookup table (const version)

◆ getMainTransformation()

virtual Transformation * camitk::ImageComponent::getMainTransformation ( ) const
inlinevirtual

Get main Transformation (data -> main)

Referenced by VolumeRenderingAction::createVolumeRendering(), getAllTransformations(), pixelPicked(), resetFrame(), VtkImageComponentExtension::save(), and setFrame().

+ Here is the caller graph for this function:

◆ getMaxColor()

double camitk::ImageComponent::getMaxColor ( ) const

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

Referenced by getNumberOfColors().

+ Here is the caller graph for this function:

◆ getMinColor()

double camitk::ImageComponent::getMinColor ( ) const

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

Referenced by getNumberOfColors().

+ Here is the caller graph for this function:

◆ 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().

+ Here is the call graph for this function:

◆ 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])

Reimplemented from camitk::Component.

References camitk::Component::getNumberOfSlices().

+ Here is the call graph for this function:

◆ 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.

◆ getRotationMatrix()

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

◆ getSagittalSlices()

SingleImageComponent * camitk::ImageComponent::getSagittalSlices ( )

Returns the sagittal slice.

Referenced by ShowSagittalSliceIn3D::apply(), and ShowSagittalSliceIn3D::getQAction().

+ Here is the caller graph for this function:

◆ getVolumeRenderingChild()

MeshComponent * camitk::ImageComponent::getVolumeRenderingChild ( )

Returns the MeshComponent which will contain the volume rendering actor.

Referenced by VolumeRenderingAction::apply(), VolumeRenderingAction::createVolumeRendering(), VolumeRenderingAction::getQAction(), and VolumeRenderingAction::getWidget().

+ Here is the caller graph for this function:

◆ pixelPicked()

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

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 coordinates of the 3D point.

Implements camitk::InterfaceBitMap.

References CAMITK_TRACE, camitk::Component::getChildren(), getLastPixelPicked(), getLastPointPickedWorldFrame(), getMainTransformation(), camitk::Transformation::getTransform(), camitk::Component::setIndexOfPropertyExplorerTab(), setLastPointPickedFromPixel(), and camitk::Component::setSlice.

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

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ propertyValueChanged()

void camitk::ImageComponent::propertyValueChanged ( QString  name)
overridevirtual

manages dynamic property viewIn3D

Reimplemented from camitk::Component.

References camitk::Component::propertyValueChanged().

+ Here is the call graph for this function:

◆ refresh()

void camitk::ImageComponent::refresh ( )
overridevirtual

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

Reimplemented from camitk::Component.

References camitk::Component::childrenComponent.

◆ removeAdditionalFrame()

virtual void camitk::ImageComponent::removeAdditionalFrame ( const FrameOfReference fr)
inlinevirtual

remove an additional frame

◆ removeAdditionalTransformation()

virtual void camitk::ImageComponent::removeAdditionalTransformation ( const Transformation tr)
inlinevirtual

Remove an additional Transformation from the Component.

◆ 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
copyif it 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 camitk::Component::removeChild(), and setImageData().

+ Here is the call graph for this function:

◆ resetFrame()

void camitk::ImageComponent::resetFrame ( )
overridevirtual

Reset this object's FrameOfReference, that is call setFrame with a newly created frame of reference.

Note
if the given object is an ImageComponent, this will call setFramesAndTransformation using newly created main and data frames, and a new transformation (preserving the current main transformation matrix)

Reimplemented from camitk::Component.

References camitk::TransformationManager::addFrameOfReference(), camitk::TransformationManager::addTransformation(), getMainTransformation(), camitk::Component::getName(), and setFramesAndTransformation().

+ Here is the call graph for this function:

◆ setFrame()

void camitk::ImageComponent::setFrame ( const std::shared_ptr< FrameOfReference > &  frame)
overridevirtual

set the main FrameOfReference overriden to manage subcomponents

Warning
if the transformation from the data frame to the new main frame already exists, it will be used as the new main transformation, removing the previous main transformation If there is currently no transformation from the data frame to the new main frame, it will try to create a new main transformation using the same matrix. If this cannot be done, this generates a CamiTK error

Reimplemented from camitk::Component.

References camitk::TransformationManager::addTransformation(), CAMITK_ERROR, camitk::Component::frameOfReference, getDataFrame(), getMainTransformation(), camitk::Component::getName(), camitk::TransformationManager::getTransformationOwnership(), camitk::Component::setFrame(), and setMainTransformation().

+ Here is the call graph for this function:

◆ setFrameFrom()

void camitk::ImageComponent::setFrameFrom ( const InterfaceFrame from)
overridevirtual
Note
if the given object is an ImageComponent, this will call setFramesAndTransformation using the object main and data frame and its main transformation

Reimplemented from camitk::Component.

References camitk::Component::frameOfReference, camitk::Component::setFrameFrom(), and setFramesAndTransformation().

+ Here is the call graph for this function:

◆ setFramesAndTransformation()

void camitk::ImageComponent::setFramesAndTransformation ( const std::shared_ptr< FrameOfReference > &  mainFrame,
const std::shared_ptr< FrameOfReference > &  dataFrame,
const std::shared_ptr< Transformation > &  mainTransformation 
)
virtual

set the main and data FrameOfReference as well as the transformation between them

References camitk::Component::getChildren(), and camitk::Component::setFrame().

Referenced by fromVariant(), resetFrame(), and setFrameFrom().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setImageData()

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

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(), camitk::TransformationManager::addTransformation(), camitk::Component::frameOfReference, getDataFrame(), camitk::Component::getFrame(), camitk::ImageOrientationHelper::getOrientationAsQString(), camitk::TransformationManager::getTransformationOwnership(), camitk::ImageOrientationHelper::getTransformToRAI(), setMainTransformation(), camitk::Property::setReadOnly(), and camitk::TransformationManager::updateTransformation().

Referenced by DicomComponent::DicomComponent(), ImageComponent(), and replaceImageData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setLastPointPickedFromPixel()

void camitk::ImageComponent::setLastPointPickedFromPixel ( int  x,
int  y,
int  z 
)

Set the last point picked coordinates to the center of the x,y,z voxel.

References camitk::Component::double.

Referenced by pixelPicked().

+ Here is the caller graph for this function:

◆ setLut()

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

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

◆ setMainTransformation()

bool camitk::ImageComponent::setMainTransformation ( const std::shared_ptr< Transformation > &  tr)
protected

Set main Transformation (dataFrame -> mainFrame) return false if the main transformation was not modified (that is tr was nullptr)

Referenced by setFrame(), and setImageData().

+ Here is the caller graph for this function:

◆ 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::setActorColor, camitk::Component::setSelected(), camitk::SingleImageComponent::singleImageSelected(), and camitk::InterfaceGeometry::Wireframe.

+ Here is the call graph for this function:

◆ setSingleImageComponents()

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

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 arbitrary slices representation (use getArbitrarySlices() if you don't need to modify this particular orientation)

References camitk::Component::removeChild().

+ Here is the call graph for this function:

◆ setVisibility()

void camitk::ImageComponent::setVisibility ( QString  viewerName,
bool  b 
)
overridevirtual

set the visibility inside the viewer of the given name (override required to manage the specific case of the 3D viewer)

Reimplemented from camitk::Component.

References camitk::Component::setVisibility().

+ Here is the call graph for this function:

◆ toVariant()

QVariant camitk::ImageComponent::toVariant ( ) const
overridevirtual

Convert all data from the object to a QVariant (usually a QVariantMap)

Reimplemented from camitk::Component.

References camitk::ArbitrarySingleImageComponent::getArbitraryFrame(), getLut(), camitk::FrameOfReference::getUuid(), and camitk::Component::toVariant().

+ Here is the call graph for this function:

◆ updateMainTransformation()

void camitk::ImageComponent::updateMainTransformation ( vtkSmartPointer< vtkMatrix4x4 >  newMatrix)
virtual

update the main transformation using the given 4x4 matrix

References camitk::TransformationManager::updateTransformation().

Referenced by DicomComponent::DicomComponent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

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