Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkSlicerSegmentationsModuleLogic.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
4 Queen's University, Kingston, ON, Canada. All Rights Reserved.
5
6 See COPYRIGHT.txt
7 or http://www.slicer.org/copyright/copyright.txt for details.
8
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14
15 This file was originally developed by Csaba Pinter, PerkLab, Queen's University
16 and was supported through the Applied Cancer Research Unit program of Cancer Care
17 Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
18
19==============================================================================*/
20
21// .NAME vtkSlicerSegmentationsModuleLogic - Logic class for segmentation handling
22// .SECTION Description
23// This class manages the logic associated with converting and handling
24// segmentation node objects.
25
26#ifndef __vtkSlicerSegmentationsModuleLogic_h
27#define __vtkSlicerSegmentationsModuleLogic_h
28
29// Slicer includes
31#include "vtkSlicerSegmentationsModuleLogicExport.h"
32
33// Segmentations includes
35
36class vtkCallbackCommand;
38class vtkPolyData;
39class vtkDataObject;
40class vtkGeneralTransform;
41
49
50class VTK_SLICER_SEGMENTATIONS_LOGIC_EXPORT vtkSlicerSegmentationsModuleLogic : public vtkSlicerModuleLogic
51{
52public:
55 void PrintSelf(ostream& os, vtkIndent indent) override;
56
63
70 static vtkMRMLSegmentationNode* GetSegmentationNodeForSegment(vtkMRMLScene* scene, vtkSegment* segment, std::string& segmentId);
71
79 bool autoOpacities = true,
80 const char* nodeName = nullptr,
81 vtkMRMLColorTableNode* colorTableNode = nullptr,
82 vtkMRMLMessageCollection* userMessages = nullptr);
83
91
100 vtkMRMLVolumeNode* volumeNode,
101 bool shallowCopy = true,
102 bool shiftImageDataExtentToZeroStart = true);
103
108
112
114 static void GetAllLabelValues(vtkIntArray* labels, vtkImageData* labelmap);
115
126
136 static vtkSegment* CreateSegmentFromModelNode(vtkMRMLModelNode* modelNode, vtkMRMLSegmentationNode* segmentationNode = nullptr);
137
140
142 static vtkSegment* GetSegmentForSegmentSubjectHierarchyItem(vtkIdType segmentShItemID, vtkMRMLScene* scene);
143
149 static bool ExportSegmentToRepresentationNode(vtkSegment* segment, vtkMRMLNode* representationNode);
150
155 static bool ExportSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, const std::vector<std::string>& segmentIDs, vtkIdType folderItemId);
156
161 static bool ExportSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, vtkStringArray* segmentIds, vtkIdType folderItemId);
162
166 static bool ExportVisibleSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, vtkIdType folderItemId);
167
171 static bool ExportAllSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, vtkIdType folderItemId);
172
178
187 const std::vector<std::string>& segmentID,
188 vtkMRMLColorTableNode* colorTableNode,
189 vtkIntArray* labelValues = nullptr);
190
203 const std::vector<std::string>& segmentIDs,
204 vtkMRMLLabelMapVolumeNode* labelmapNode,
205 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
206 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS,
207 vtkMRMLColorTableNode* colorTableNode = nullptr);
208
221 vtkStringArray* segmentIDs,
222 vtkMRMLLabelMapVolumeNode* labelmapNode,
223 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
224 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS,
225 vtkMRMLColorTableNode* colorTableNode = nullptr);
226
234 vtkMRMLLabelMapVolumeNode* labelmapNode,
235 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
236 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS);
237
244 vtkMRMLLabelMapVolumeNode* labelmapNode,
245 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS);
246
251 vtkMRMLSegmentationNode* segmentationNode,
252 std::string insertBeforeSegmentId = "",
253 vtkMRMLMessageCollection* userMessages = nullptr);
254
262 vtkMRMLSegmentationNode* segmentationNode,
263 std::string baseSegmentName = "",
264 std::string insertBeforeSegmentId = "",
265 vtkMRMLMessageCollection* userMessages = nullptr);
266
270 vtkMRMLSegmentationNode* segmentationNode,
271 vtkStringArray* updatedSegmentIDs,
272 vtkMRMLMessageCollection* userMessages = nullptr);
273
277 vtkMRMLSegmentationNode* segmentationNode,
278 vtkStringArray* updatedSegmentIDs,
279 vtkGeneralTransform* labelmapToSegmentationTransform = nullptr,
280 vtkMRMLMessageCollection* userMessages = nullptr);
281
287 vtkMRMLSegmentationNode* segmentationNode,
288 std::string terminologyContextName,
289 std::string insertBeforeSegmentId = "",
290 vtkMRMLMessageCollection* userMessages = nullptr);
291
293 static bool ImportModelToSegmentationNode(vtkMRMLModelNode* modelNode, vtkMRMLSegmentationNode* segmentationNode, std::string insertBeforeSegmentId = "");
294
296 static bool ImportModelsToSegmentationNode(vtkIdType folderItemId, vtkMRMLSegmentationNode* segmentationNode, std::string insertBeforeSegmentId = "");
297
305 static bool ExportSegmentsClosedSurfaceRepresentationToFiles(std::string destinationFolder,
306 vtkMRMLSegmentationNode* segmentationNode,
307 vtkStringArray* segmentIds = nullptr,
308 std::string fileFormat = "STL",
309 bool lps = true,
310 double sizeScale = 1.0,
311 bool merge = false);
312
322 static void GetLabelValuesFromColorNode(vtkMRMLSegmentationNode* segmentationNode, vtkMRMLColorTableNode* colorTableNode, vtkStringArray* segmentIds, vtkIntArray* labelValues);
323
335 static bool ExportSegmentsBinaryLabelmapRepresentationToFiles(std::string destinationFolder,
336 vtkMRMLSegmentationNode* segmentationNode,
337 vtkStringArray* segmentIds = nullptr,
338 std::string extension = "nrrd",
339 bool useCompression = false,
340 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
341 int extentComputationMode = vtkSegmentation::EXTENT_REFERENCE_GEOMETRY,
342 vtkMRMLColorTableNode* colorTableNode = nullptr);
343
349 static vtkDataObject* CreateRepresentationForOneSegment(vtkSegmentation* segmentation, std::string segmentID, std::string representationName);
350
355 vtkOrientedImageData* orientedImageData,
356 bool linearInterpolation = false,
357 double backgroundColor[4] = nullptr);
358
362 static bool ApplyParentTransformToPolyData(vtkMRMLTransformableNode* transformableNode, vtkPolyData* polyData);
363
374 vtkMRMLSegmentationNode* segmentationNode,
375 vtkGeneralTransform* representationToSegmentationTransform);
376
387 std::string segmentID,
388 std::string representationName,
389 vtkDataObject* segmentRepresentation,
390 bool applyParentTransform = true);
391
403 std::string segmentID,
404 vtkOrientedImageData* imageData,
405 bool applyParentTransform = true);
406
416 static bool GetSegmentClosedSurfaceRepresentation(vtkMRMLSegmentationNode* segmentationNode, std::string segmentID, vtkPolyData* polyData, bool applyParentTransform = true);
417
424 enum
425 {
430 };
432 vtkMRMLSegmentationNode* segmentationNode,
433 std::string segmentID,
434 int mergeMode = MODE_REPLACE,
435 const int extent[6] = nullptr,
436 bool minimumOfAllSegments = false,
437 const std::vector<std::string>& segmentIdsToOverwrite = {});
438
442 bool SetTerminologyToSegmentationFromLabelmapNode(vtkMRMLSegmentationNode* segmentationNode, vtkMRMLLabelMapVolumeNode* labelmapNode, std::string terminologyContextName);
443
446
450
453
457
466
467 static const char* GetSegmentStatusAsHumanReadableString(int segmentStatus);
469 static const char* GetSegmentStatusAsMachineReadableString(int segmentStatus);
471 static int GetSegmentStatusFromMachineReadableString(std::string statusString);
472
474 static const char* GetStatusTagName();
477 static int GetSegmentStatus(vtkSegment* segment);
481 static void SetSegmentStatus(vtkSegment* segment, int status);
483 static bool ClearSegment(vtkMRMLSegmentationNode* segmentationNode, std::string segmentID);
484
492 std::string sharedSegmentID,
494 const int extent[6],
495 std::vector<std::string>& segmentIDs,
496 int maskThreshold = 0.0,
497 bool includeInputSharedSegmentID = false);
498
503 static bool ReconvertAllRepresentations(vtkMRMLSegmentationNode* segmentationNode, const std::vector<std::string>& segmentIDs = {});
504
510 static void CollapseBinaryLabelmaps(vtkMRMLSegmentationNode* segmentationNode, bool forceToSingleLayer);
511
520 vtkMRMLVolumeNode* referenceVolumeNode,
521 vtkStringArray* segmentIDs,
522 int extentComputationMode,
523 vtkOrientedImageData* mergedLabelmap_Reference,
524 vtkIntArray* labelValues = nullptr);
525
531 static bool IsEffectiveExentOutsideReferenceVolume(vtkMRMLVolumeNode* referenceVolumeNode, vtkMRMLSegmentationNode* segmentationNode, vtkStringArray* segmentIDs = nullptr);
532
537 static bool IsSegmentationExentOutsideReferenceGeometry(vtkOrientedImageData* referenceGeometry, vtkOrientedImageData* segmentationGeometry);
538
539protected:
540 void SetMRMLSceneInternal(vtkMRMLScene* newScene) override;
541
543 void RegisterNodes() override;
544
550 static void OnSubjectHierarchyUIDAdded(vtkObject* caller, unsigned long eid, void* clientData, void* callData);
551
553 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
554
555 static bool ExportSegmentsClosedSurfaceRepresentationToStlFiles(std::string destinationFolder,
556 vtkMRMLSegmentationNode* segmentationNode,
557 const std::vector<std::string>& segmentIDs,
558 bool lps,
559 double sizeScale,
560 bool merge);
561 static bool ExportSegmentsClosedSurfaceRepresentationToObjFile(std::string destinationFolder,
562 vtkMRMLSegmentationNode* segmentationNode,
563 const std::vector<std::string>& segmentIDs,
564 bool lps,
565 double sizeScale);
566
570 static std::string GetSafeFileName(std::string originalName);
571
572protected:
575
578
579private:
581 void operator=(const vtkSlicerSegmentationsModuleLogic&) = delete;
582};
583
584#endif
MRML node to represent discrete color information.
MRML node for representing a label map volume.
MRML node to represent a 3D surface model.
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.
Parameter set node for the segment editor widget.
MRML node containing segmentations.
MRML node for segmentation storage on disk.
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).
Image data containing orientation information.
This class encapsulates a segment that is part of a segmentation.
Definition vtkSegment.h:45
This class encapsulates a segmentation that can contain multiple segments and multiple representation...
@ EXTENT_UNION_OF_EFFECTIVE_SEGMENTS
Extent is computed as union of effective extent of all segments.
@ EXTENT_REFERENCE_GEOMETRY
Extent of common geometry is used as extent.
static bool ImportLabelmapToSegmentationNode(vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *updatedSegmentIDs, vtkMRMLMessageCollection *userMessages=nullptr)
void SetDefaultSurfaceSmoothingEnabled(bool enabled)
static bool ExportAllSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, vtkIdType folderItemId)
static bool GetSharedSegmentIDsInMask(vtkMRMLSegmentationNode *segmentationNode, std::string sharedSegmentID, vtkOrientedImageData *mask, const int extent[6], std::vector< std::string > &segmentIDs, int maskThreshold=0.0, bool includeInputSharedSegmentID=false)
static vtkMRMLSegmentationNode * GetSegmentationNodeForSegmentSubjectHierarchyItem(vtkIdType segmentShItemID, vtkMRMLScene *scene)
Utility function for getting the segmentation node for a segmentation or segment subject hierarchy it...
static bool ImportModelToSegmentationNode(vtkMRMLModelNode *modelNode, vtkMRMLSegmentationNode *segmentationNode, std::string insertBeforeSegmentId="")
Import model into the segmentation as a segment.
static int DoesLabelmapContainSingleLabel(vtkMRMLLabelMapVolumeNode *labelmapVolumeNode)
static bool ExportAllSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLLabelMapVolumeNode *labelmapNode, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS)
static bool IsSegmentationExentOutsideReferenceGeometry(vtkOrientedImageData *referenceGeometry, vtkOrientedImageData *segmentationGeometry)
static bool IsEffectiveExentOutsideReferenceVolume(vtkMRMLVolumeNode *referenceVolumeNode, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIDs=nullptr)
static const char * GetSegmentStatusAsMachineReadableString(int segmentStatus)
Get the machine readable segment status from the SegmentStatus enum value.
static vtkSegment * CreateSegmentFromModelNode(vtkMRMLModelNode *modelNode, vtkMRMLSegmentationNode *segmentationNode=nullptr)
static void SetSegmentStatus(vtkSegment *segment, int status)
static vtkMRMLSegmentationNode * GetSegmentationNodeForSegmentation(vtkMRMLScene *scene, vtkSegmentation *segmentation)
static void GetLabelValuesFromColorNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLColorTableNode *colorTableNode, vtkStringArray *segmentIds, vtkIntArray *labelValues)
int GetDefaultOverwriteMode()
Get/Set default segmentation overwrite mode for masking options.
static bool ExportSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIDs, vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS, vtkMRMLColorTableNode *colorTableNode=nullptr)
vtkMRMLSegmentationNode * GetDefaultSegmentationNode()
Get default segmentation node. All new segmentation nodes are initialized to the content of this node...
static void CollapseBinaryLabelmaps(vtkMRMLSegmentationNode *segmentationNode, bool forceToSingleLayer)
static vtkMRMLSegmentationNode * GetSegmentationNodeForSegment(vtkMRMLScene *scene, vtkSegment *segment, std::string &segmentId)
static bool ImportLabelmapToSegmentationNode(vtkOrientedImageData *labelmapImage, vtkMRMLSegmentationNode *segmentationNode, std::string baseSegmentName="", std::string insertBeforeSegmentId="", vtkMRMLMessageCollection *userMessages=nullptr)
static bool ExportSegmentsToColorTableNode(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentID, vtkMRMLColorTableNode *colorTableNode, vtkIntArray *labelValues=nullptr)
static void GenerateMergedLabelmapInReferenceGeometry(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLVolumeNode *referenceVolumeNode, vtkStringArray *segmentIDs, int extentComputationMode, vtkOrientedImageData *mergedLabelmap_Reference, vtkIntArray *labelValues=nullptr)
static bool ImportModelsToSegmentationNode(vtkIdType folderItemId, vtkMRMLSegmentationNode *segmentationNode, std::string insertBeforeSegmentId="")
Import models in a folder into the segmentation as segments.
static bool ExportSegmentsClosedSurfaceRepresentationToFiles(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIds=nullptr, std::string fileFormat="STL", bool lps=true, double sizeScale=1.0, bool merge=false)
static bool ExportSegmentToRepresentationNode(vtkSegment *segment, vtkMRMLNode *representationNode)
static int GetSegmentStatus(vtkSegment *segment)
static bool ExportSegmentsClosedSurfaceRepresentationToStlFiles(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, bool lps, double sizeScale, bool merge)
static bool ReconvertAllRepresentations(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs={})
vtkMRMLSegmentationNode * LoadSegmentationFromFile(const char *filename, bool autoOpacities=true, const char *nodeName=nullptr, vtkMRMLColorTableNode *colorTableNode=nullptr, vtkMRMLMessageCollection *userMessages=nullptr)
static bool ExportSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS, vtkMRMLColorTableNode *colorTableNode=nullptr)
static bool GetTransformBetweenRepresentationAndSegmentation(vtkMRMLTransformableNode *representationNode, vtkMRMLSegmentationNode *segmentationNode, vtkGeneralTransform *representationToSegmentationTransform)
static bool ExportSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, vtkIdType folderItemId)
static bool GetSegmentClosedSurfaceRepresentation(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, vtkPolyData *polyData, bool applyParentTransform=true)
static vtkSegment * CreateSegmentFromLabelmapVolumeNode(vtkMRMLLabelMapVolumeNode *labelmapVolumeNode, vtkMRMLSegmentationNode *segmentationNode=nullptr)
static const char * GetStatusTagName()
Returns the name of the status tag.
bool ImportLabelmapToSegmentationNodeWithTerminology(vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLSegmentationNode *segmentationNode, std::string terminologyContextName, std::string insertBeforeSegmentId="", vtkMRMLMessageCollection *userMessages=nullptr)
static vtkMRMLColorTableNode * AddColorTableNodeForSegmentation(vtkMRMLSegmentationNode *segmentationNode)
static bool GetSegmentBinaryLabelmapRepresentation(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, vtkOrientedImageData *imageData, bool applyParentTransform=true)
void SetMRMLSceneInternal(vtkMRMLScene *newScene) override
static vtkOrientedImageData * CreateOrientedImageDataFromVolumeNode(vtkMRMLScalarVolumeNode *volumeNode, vtkMRMLTransformNode *outputParentTransformNode=nullptr)
static void OnSubjectHierarchyUIDAdded(vtkObject *caller, unsigned long eid, void *clientData, void *callData)
static bool ExportVisibleSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS)
static void GetAllLabelValues(vtkIntArray *labels, vtkImageData *labelmap)
Utility function that returns all non-empty label values in a labelmap.
void RegisterNodes() override
Register MRML Node classes to Scene. Gets called automatically when the MRMLScene is attached to this...
static vtkSegment * GetSegmentForSegmentSubjectHierarchyItem(vtkIdType segmentShItemID, vtkMRMLScene *scene)
Utility function for getting the segment object for a segment subject hierarchy item.
static bool ImportLabelmapToSegmentationNode(vtkOrientedImageData *labelmapImage, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *updatedSegmentIDs, vtkGeneralTransform *labelmapToSegmentationTransform=nullptr, vtkMRMLMessageCollection *userMessages=nullptr)
static bool SetBinaryLabelmapToSegment(vtkOrientedImageData *labelmap, vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, int mergeMode=MODE_REPLACE, const int extent[6]=nullptr, bool minimumOfAllSegments=false, const std::vector< std::string > &segmentIdsToOverwrite={})
vtkMRMLSegmentEditorNode * GetDefaultSegmentEditorNode()
Get node that is used for initializing each new Segment Editor node.
bool GetDefaultSurfaceSmoothingEnabled()
Get/Set default closed surface smoothing enabled flag for new segmentation nodes.
static std::string GetSafeFileName(std::string originalName)
void PrintSelf(ostream &os, vtkIndent indent) override
static bool ExportSegmentsBinaryLabelmapRepresentationToFiles(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIds=nullptr, std::string extension="nrrd", bool useCompression=false, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_REFERENCE_GEOMETRY, vtkMRMLColorTableNode *colorTableNode=nullptr)
static const char * GetSegmentStatusAsHumanReadableString(int segmentStatus)
Get the human readable segment status from the SegmentStatus enum value.
static bool ClearSegment(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID)
Clear the contents of a single segment.
static bool ApplyParentTransformToOrientedImageData(vtkMRMLTransformableNode *transformableNode, vtkOrientedImageData *orientedImageData, bool linearInterpolation=false, double backgroundColor[4]=nullptr)
static bool CreateLabelmapVolumeFromOrientedImageData(vtkOrientedImageData *orientedImageData, vtkMRMLLabelMapVolumeNode *labelmapVolumeNode)
bool SetTerminologyToSegmentationFromLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLLabelMapVolumeNode *labelmapNode, std::string terminologyContextName)
static bool ExportSegmentsClosedSurfaceRepresentationToObjFile(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, bool lps, double sizeScale)
static bool ExportVisibleSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, vtkIdType folderItemId)
void OnMRMLSceneNodeAdded(vtkMRMLNode *node) override
Handle MRML node added events.
static vtkDataObject * CreateRepresentationForOneSegment(vtkSegmentation *segmentation, std::string segmentID, std::string representationName)
static bool ApplyParentTransformToPolyData(vtkMRMLTransformableNode *transformableNode, vtkPolyData *polyData)
static bool GetSegmentRepresentation(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, std::string representationName, vtkDataObject *segmentRepresentation, bool applyParentTransform=true)
static int GetSegmentStatusFromMachineReadableString(std::string statusString)
Get the enum segment status from a machine string.
vtkCallbackCommand * SubjectHierarchyUIDCallbackCommand
Command handling subject hierarchy UID added events.
static vtkSlicerSegmentationsModuleLogic * New()
static bool ExportSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIds, vtkIdType folderItemId)
static bool CopyOrientedImageDataToVolumeNode(vtkOrientedImageData *orientedImageData, vtkMRMLVolumeNode *volumeNode, bool shallowCopy=true, bool shiftImageDataExtentToZeroStart=true)
static bool ImportLabelmapToSegmentationNode(vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLSegmentationNode *segmentationNode, std::string insertBeforeSegmentId="", vtkMRMLMessageCollection *userMessages=nullptr)