Slicer 5.13
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"
27
28// STD includes
29#include <vector>
30
31// MRML includes
36class vtkMRMLScene;
42
43// VTK includes
44class vtkImageData;
45class vtkMatrix4x4;
46class vtkPoints;
47class vtkPointSet;
48class vtkPolyData;
49class vtkUnstructuredGrid;
50
51class VTK_SLICER_TRANSFORMS_MODULE_LOGIC_EXPORT vtkSlicerTransformLogic : public vtkSlicerModuleLogic
52{
53public:
57 void PrintSelf(ostream& os, vtkIndent indent) override { Superclass::PrintSelf(os, indent); }
58
64
67 vtkMRMLTransformNode* AddTransform(const char* filename, vtkMRMLScene* scene, vtkMRMLMessageCollection* userMessages = nullptr);
68
71 static bool GetVisualization2d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMRMLSliceNode* sliceNode, vtkMRMLMarkupsNode* glyphPointsNode = nullptr);
72
75 static bool GetVisualization2d(vtkPolyData* output_RAS,
76 vtkMRMLTransformDisplayNode* displayNode,
77 vtkMatrix4x4* sliceToRAS,
78 double* fieldOfViewOrigin,
79 double* fieldOfViewSize,
80 vtkPoints* samplePositions_RAS = nullptr);
81
86 static bool GetVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMatrix4x4* roiToRAS, int* roiSize, vtkPoints* samplePositions_RAS = nullptr);
87
92 static bool GetVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMRMLNode* regionNode, vtkMRMLMarkupsNode* glyphPointsNode = nullptr);
93
97
104 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
105 bool magnitude = true,
106 vtkMRMLVolumeNode* existingOutputVolumeNode = nullptr);
107
112 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
113 vtkMRMLTransformNode* existingOutputTransformNode = nullptr);
114
121 static bool GetTransformedPointSamplesAsMagnitudeImage(vtkImageData* outputMagnitudeImage,
122 vtkMRMLTransformNode* inputTransformNode,
123 vtkMatrix4x4* ijkToRAS,
124 bool transformToWorld = true);
125
132 static bool GetTransformedPointSamplesAsVectorImage(vtkImageData* outputVectorImage,
133 vtkMRMLTransformNode* inputTransformNode,
134 vtkMatrix4x4* ijkToRAS,
135 bool transformToWorld = true);
136
141 static void GetTransformedNodes(vtkMRMLScene* scene, vtkMRMLTransformNode* transformNode, std::vector<vtkMRMLDisplayableNode*>& transformedNodes, bool recursive = true);
142
147 static void GetNodesRASBounds(const std::vector<vtkMRMLDisplayableNode*>& nodes, double bounds[6]);
148
153 static void GetNodesBounds(const std::vector<vtkMRMLDisplayableNode*>& nodes, double bounds[6]);
154
163
170
172 std::vector<vtkSmartPointer<vtkMRMLFileIOHandler>> CreateFileIOHandlers() override;
173
174protected:
179
183 static void GetGlyphVisualization2d(vtkPolyData* output_RAS,
184 vtkMRMLTransformDisplayNode* displayNode,
185 vtkMatrix4x4* sliceToRAS,
186 double* fieldOfViewOrigin,
187 double* fieldOfViewSize,
188 vtkPoints* samplePositions_RAS = nullptr);
192 static void GetGlyphVisualization3d(vtkPolyData* output_RAS,
193 vtkMRMLTransformDisplayNode* displayNode,
194 vtkMatrix4x4* roiToRAS,
195 int* roiSize,
196 vtkPoints* samplePositions_RAS = nullptr);
197
200 static void GetGridVisualization2d(vtkPolyData* output_RAS,
201 vtkMRMLTransformDisplayNode* displayNode,
202 vtkMatrix4x4* sliceToRAS,
203 double* fieldOfViewOrigin,
204 double* fieldOfViewSize);
207 static void GetGridVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMatrix4x4* roiToRAS, int* roiSize);
208
211 static void GetContourVisualization2d(vtkPolyData* output_RAS,
212 vtkMRMLTransformDisplayNode* displayNode,
213 vtkMatrix4x4* sliceToRAS,
214 double* fieldOfViewOrigin,
215 double* fieldOfViewSize);
218 static void GetContourVisualization3d(vtkPolyData* output_RAS, vtkMRMLTransformDisplayNode* displayNode, vtkMatrix4x4* roiToRAS, int* roiSize);
219
222
224 static void CreateGrid(vtkPolyData* outputGrid_RAS, vtkMRMLTransformDisplayNode* displayNode, int numGridPoints[3], vtkPolyData* outputWarpedGrid_RAS = nullptr);
225
229 static void GetTransformedPointSamples(vtkPointSet* outputPointSet, vtkMRMLTransformNode* inputTransformNode, vtkPoints* samplePositions_RAS, bool transformToWorld = true);
230
236 static void GetTransformedPointSamples(vtkPointSet* outputPointSet_RAS,
237 vtkMRMLTransformNode* inputTransformNode,
238 vtkMatrix4x4* gridToRAS,
239 int* gridSize,
240 bool transformToWorld = true);
241
246 static void GetTransformedPointSamplesOnSlice(vtkPointSet* outputPointSet_RAS,
247 vtkMRMLTransformNode* inputTransformNode,
248 vtkMatrix4x4* sliceToRAS,
249 double* fieldOfViewOrigin,
250 double* fieldOfViewSize,
251 double pointSpacing,
252 int pointGroupSize = 1,
253 int* numGridPoints = nullptr,
254 vtkPoints* samplePositions_RAS = nullptr);
255
259 static void GetTransformedPointSamplesOnRoi(vtkPointSet* outputPointSet_RAS,
260 vtkMRMLTransformNode* inputTransformNode,
261 vtkMatrix4x4* roiToRAS,
262 int* roiSize,
263 double pointSpacingMm,
264 int pointGroupSize = 1,
265 int* numGridPoints = nullptr);
266
268 static void GetMarkupsAsPoints(vtkMRMLMarkupsNode* markupsNode, vtkPoints* samplePoints_RAS);
269};
270
271#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)
std::vector< vtkSmartPointer< vtkMRMLFileIOHandler > > CreateFileIOHandlers() override
Create file readers and writers of the module.
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)