Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkSlicerTransformLogic.h
Go to the documentation of this file.
1/*=auto=========================================================================
2
3 Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4
5 See COPYRIGHT.txt
6 or http://www.slicer.org/copyright/copyright.txt for details.
7
8 This file was partly developed by Andras Lasso and Franklin King at
9 PerkLab, Queen's University and was supported through the Applied Cancer
10 Research Unit program of Cancer Care Ontario with funds provided by the
11 Ontario Ministry of Health and Long-Term Care.
12
13=========================================================================auto=*/
14
19
20#ifndef __vtkSlicerTransformLogic_h
21#define __vtkSlicerTransformLogic_h
22
23// SlicerLogic includes
24#include "vtkSlicerBaseLogic.h"
25#include "vtkSlicerTransformsModuleLogicExport.h"
26
27// MRMLLogic includes
29
30// STD includes
31#include <vector>
32
33// MRML includes
38class vtkMRMLScene;
44
45// VTK includes
46class vtkImageData;
47class vtkMatrix4x4;
48class vtkPoints;
49class vtkPointSet;
50class vtkPolyData;
51class vtkUnstructuredGrid;
52
53class VTK_SLICER_TRANSFORMS_MODULE_LOGIC_EXPORT vtkSlicerTransformLogic : public vtkMRMLAbstractLogic
54{
55public:
59 void PrintSelf(ostream& os, vtkIndent indent) override { Superclass::PrintSelf(os, indent); }
60
66
69 vtkMRMLTransformNode* AddTransform(const char* filename, vtkMRMLScene* scene, vtkMRMLMessageCollection* userMessages = nullptr);
70
73 static bool GetVisualization2d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMRMLSliceNode* sliceNode, vtkMRMLMarkupsNode* glyphPointsNode = nullptr);
74
77 static bool GetVisualization2d(vtkPolyData* output_RAS,
78 vtkMRMLTransformDisplayNode* displayNode,
79 vtkMatrix4x4* sliceToRAS,
80 double* fieldOfViewOrigin,
81 double* fieldOfViewSize,
82 vtkPoints* samplePositions_RAS = nullptr);
83
88 static bool GetVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMatrix4x4* roiToRAS, int* roiSize, vtkPoints* samplePositions_RAS = nullptr);
89
94 static bool GetVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMRMLNode* regionNode, vtkMRMLMarkupsNode* glyphPointsNode = nullptr);
95
99
106 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
107 bool magnitude = true,
108 vtkMRMLVolumeNode* existingOutputVolumeNode = nullptr);
109
114 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
115 vtkMRMLTransformNode* existingOutputTransformNode = nullptr);
116
123 static bool GetTransformedPointSamplesAsMagnitudeImage(vtkImageData* outputMagnitudeImage,
124 vtkMRMLTransformNode* inputTransformNode,
125 vtkMatrix4x4* ijkToRAS,
126 bool transformToWorld = true);
127
134 static bool GetTransformedPointSamplesAsVectorImage(vtkImageData* outputVectorImage,
135 vtkMRMLTransformNode* inputTransformNode,
136 vtkMatrix4x4* ijkToRAS,
137 bool transformToWorld = true);
138
143 static void GetTransformedNodes(vtkMRMLScene* scene, vtkMRMLTransformNode* transformNode, std::vector<vtkMRMLDisplayableNode*>& transformedNodes, bool recursive = true);
144
149 static void GetNodesRASBounds(const std::vector<vtkMRMLDisplayableNode*>& nodes, double bounds[6]);
150
155 static void GetNodesBounds(const std::vector<vtkMRMLDisplayableNode*>& nodes, double bounds[6]);
156
165
172
173protected:
178
182 static void GetGlyphVisualization2d(vtkPolyData* output_RAS,
183 vtkMRMLTransformDisplayNode* displayNode,
184 vtkMatrix4x4* sliceToRAS,
185 double* fieldOfViewOrigin,
186 double* fieldOfViewSize,
187 vtkPoints* samplePositions_RAS = nullptr);
191 static void GetGlyphVisualization3d(vtkPolyData* output_RAS,
192 vtkMRMLTransformDisplayNode* displayNode,
193 vtkMatrix4x4* roiToRAS,
194 int* roiSize,
195 vtkPoints* samplePositions_RAS = nullptr);
196
199 static void GetGridVisualization2d(vtkPolyData* output_RAS,
200 vtkMRMLTransformDisplayNode* displayNode,
201 vtkMatrix4x4* sliceToRAS,
202 double* fieldOfViewOrigin,
203 double* fieldOfViewSize);
206 static void GetGridVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMatrix4x4* roiToRAS, int* roiSize);
207
210 static void GetContourVisualization2d(vtkPolyData* output_RAS,
211 vtkMRMLTransformDisplayNode* displayNode,
212 vtkMatrix4x4* sliceToRAS,
213 double* fieldOfViewOrigin,
214 double* fieldOfViewSize);
217 static void GetContourVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMatrix4x4* roiToRAS, int* roiSize);
218
221
223 static void CreateGrid(vtkPolyData* outputGrid_RAS, vtkMRMLTransformDisplayNode* displayNode, int numGridPoints[3], vtkPolyData* outputWarpedGrid_RAS = nullptr);
224
228 static void GetTransformedPointSamples(vtkPointSet* outputPointSet, vtkMRMLTransformNode* inputTransformNode, vtkPoints* samplePositions_RAS, bool transformToWorld = true);
229
235 static void GetTransformedPointSamples(vtkPointSet* outputPointSet_RAS,
236 vtkMRMLTransformNode* inputTransformNode,
237 vtkMatrix4x4* gridToRAS,
238 int* gridSize,
239 bool transformToWorld = true);
240
245 static void GetTransformedPointSamplesOnSlice(vtkPointSet* outputPointSet_RAS,
246 vtkMRMLTransformNode* inputTransformNode,
247 vtkMatrix4x4* sliceToRAS,
248 double* fieldOfViewOrigin,
249 double* fieldOfViewSize,
250 double pointSpacing,
251 int pointGroupSize = 1,
252 int* numGridPoints = nullptr,
253 vtkPoints* samplePositions_RAS = nullptr);
254
258 static void GetTransformedPointSamplesOnRoi(vtkPointSet* outputPointSet_RAS,
259 vtkMRMLTransformNode* inputTransformNode,
260 vtkMatrix4x4* roiToRAS,
261 int* roiSize,
262 double pointSpacingMm,
263 int pointGroupSize = 1,
264 int* numGridPoints = nullptr);
265
267 static void GetMarkupsAsPoints(vtkMRMLMarkupsNode* markupsNode, vtkPoints* samplePoints_RAS);
268};
269
270#endif
void PrintSelf(ostream &os, vtkIndent indent) override
Abstract Superclass for all specific types of MRML nodes.
MRML node for representing a volume (image stack).
A set of MRML Nodes that supports serialization and undo/redo.
MRML node for storing a slice through RAS space.
MRML node to represent display properties for transforms visualization in the slice and 3D viewers.
MRML node for representing a transformation between this node space and a parent node space.
MRML node for representing a node with a transform.
MRML node for representing a volume (image stack).
static vtkSlicerTransformLogic * New()
The Usual vtk class functions.
static void GetGridVisualization3d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *roiToRAS, int *roiSize)
static void GetTransformedPointSamples(vtkPointSet *outputPointSet_RAS, vtkMRMLTransformNode *inputTransformNode, vtkMatrix4x4 *gridToRAS, int *gridSize, bool transformToWorld=true)
static bool GetTransformedPointSamplesAsMagnitudeImage(vtkImageData *outputMagnitudeImage, vtkMRMLTransformNode *inputTransformNode, vtkMatrix4x4 *ijkToRAS, bool transformToWorld=true)
static void GetTransformedNodes(vtkMRMLScene *scene, vtkMRMLTransformNode *transformNode, std::vector< vtkMRMLDisplayableNode * > &transformedNodes, bool recursive=true)
static int GetGridSubdivision(vtkMRMLTransformDisplayNode *displayNode)
Return the number of samples in each grid.
static bool GetVisualization2d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *sliceToRAS, double *fieldOfViewOrigin, double *fieldOfViewSize, vtkPoints *samplePositions_RAS=nullptr)
static void GetMarkupsAsPoints(vtkMRMLMarkupsNode *markupsNode, vtkPoints *samplePoints_RAS)
Get markup points as vtkPoints in RAS coordinate system.
vtkSlicerTransformLogic(const vtkSlicerTransformLogic &)
static bool GetVisualization3d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMRMLNode *regionNode, vtkMRMLMarkupsNode *glyphPointsNode=nullptr)
static void GetNodesRASBounds(const std::vector< vtkMRMLDisplayableNode * > &nodes, double bounds[6])
static void GetContourVisualization2d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *sliceToRAS, double *fieldOfViewOrigin, double *fieldOfViewSize)
static void GetGlyphVisualization3d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *roiToRAS, int *roiSize, vtkPoints *samplePositions_RAS=nullptr)
static void GetTransformedPointSamplesOnSlice(vtkPointSet *outputPointSet_RAS, vtkMRMLTransformNode *inputTransformNode, vtkMatrix4x4 *sliceToRAS, double *fieldOfViewOrigin, double *fieldOfViewSize, double pointSpacing, int pointGroupSize=1, int *numGridPoints=nullptr, vtkPoints *samplePositions_RAS=nullptr)
static bool hardenTransform(vtkMRMLTransformableNode *node)
static TransformKind GetTransformKind(vtkMRMLTransformNode *transformNode)
void PrintSelf(ostream &os, vtkIndent indent) override
static const char * GetVisualizationDisplacementMagnitudeScalarName()
static bool GetVisualization3d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *roiToRAS, int *roiSize, vtkPoints *samplePositions_RAS=nullptr)
static void GetNodesBounds(const std::vector< vtkMRMLDisplayableNode * > &nodes, double bounds[6])
static void GetTransformedPointSamples(vtkPointSet *outputPointSet, vtkMRMLTransformNode *inputTransformNode, vtkPoints *samplePositions_RAS, bool transformToWorld=true)
vtkMRMLVolumeNode * CreateDisplacementVolumeFromTransform(vtkMRMLTransformNode *inputTransformNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, bool magnitude=true, vtkMRMLVolumeNode *existingOutputVolumeNode=nullptr)
static bool GetVisualization2d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMRMLSliceNode *sliceNode, vtkMRMLMarkupsNode *glyphPointsNode=nullptr)
static void GetGlyphVisualization2d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *sliceToRAS, double *fieldOfViewOrigin, double *fieldOfViewSize, vtkPoints *samplePositions_RAS=nullptr)
static void GetGridVisualization2d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *sliceToRAS, double *fieldOfViewOrigin, double *fieldOfViewSize)
static void GetTransformedPointSamplesOnRoi(vtkPointSet *outputPointSet_RAS, vtkMRMLTransformNode *inputTransformNode, vtkMatrix4x4 *roiToRAS, int *roiSize, double pointSpacingMm, int pointGroupSize=1, int *numGridPoints=nullptr)
vtkMRMLTransformNode * AddTransform(const char *filename, vtkMRMLScene *scene, vtkMRMLMessageCollection *userMessages=nullptr)
Read transform from file.
static bool GetTransformedPointSamplesAsVectorImage(vtkImageData *outputVectorImage, vtkMRMLTransformNode *inputTransformNode, vtkMatrix4x4 *ijkToRAS, bool transformToWorld=true)
void operator=(const vtkSlicerTransformLogic &)
static void GetContourVisualization3d(vtkPolyData *output_RAS, vtkMRMLTransformDisplayNode *displayNode, vtkMatrix4x4 *roiToRAS, int *roiSize)
~vtkSlicerTransformLogic() override
static void CreateGrid(vtkPolyData *outputGrid_RAS, vtkMRMLTransformDisplayNode *displayNode, int numGridPoints[3], vtkPolyData *outputWarpedGrid_RAS=nullptr)
Add lines to the gridPolyData to make it a grid. If warpedGrid is specified then a warped grid is gen...
vtkMRMLTransformNode * ConvertToGridTransform(vtkMRMLTransformNode *inputTransformNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, vtkMRMLTransformNode *existingOutputTransformNode=nullptr)