MeVisLab Toolbox Reference
mlEnhancedMultiFrameTools.h
Go to the documentation of this file.
1// Copyright (c) Fraunhofer MEVIS, Germany. All rights reserved.
2// **InsertLicense** code
3//----------------------------------------------------------------------------------
5
10//----------------------------------------------------------------------------------
11
12#pragma once
13
15
16#include <mlModuleIncludes.h>
17#include <DCMTree_Tree.h>
18#include <DCMTree_DicomTags.h>
19#include <DICOMPart16Tables.h>
20
21#include <list>
22
23ML_START_NAMESPACE
24
29
32
35
38
41
43 std::string sopClassUID;
45 std::string fmeSOPClassUID;
46
48 std::string sopInstanceUID;
50 std::string fmeSOPInstanceUID;
51
54
60 std::string segmentNumber;
61
63 std::string frameCounter;
65 std::string zCoord;
67 std::string tCoord;
69 std::string uCoord;
70
72 static const std::vector<MLuint64> rawTagIds;
73
77 std::vector<std::string> &rawTopLevelSourceFrameInfos) const;
78
82 void setUpFromTagValueVector(const std::vector<std::string> &rawTopLevelSourceFrameReferences);
83
87};
88
90typedef std::vector< SourceFrameReference > SourceFrameReferenceVector;
91
101 const Vector2 &pixelSpacing,
102 double sliceThickness,
103 bool addSpacingBetweenSlices=false,
104 double spacingBetweenSlices=1.0);
105
111 const Vector3 &imagePositionPatient);
112
118 const Vector6 &imageOrientationPatient);
119
120//----------------------------------------------------------------------------------
127//----------------------------------------------------------------------------------
128ML_MLToDicomTools_EXPORT void addCIDEntry(const char * const CIDGroupTable[][CIDGroups::NUM_CID_COLUMNS],
129 size_t CIDGroupTableSize,
130 const std::string &entryToAdd,
131 DCMTree::TreePtr itemTree);
132
150 const std::vector<std::string> &derivationCodeSequence,
151 bool createEmpty=false,
152 const SourceFrameReferenceVector &sourceFrameReferences=SourceFrameReferenceVector(),
153 const size_t entriesToAddZ=std::string::npos,
154 const size_t entriesToAddT=std::string::npos,
155 const size_t entriesToAddU=std::string::npos,
156 const std::string &purposeOfReferenceCodeSequenceEntry="");
157
173 const MedicalImageProperties &medImgProps,
174 bool setTemporalPositionIndex,
175 bool setFrameAcquisitionDateTime,
176 const unsigned int ztuPos[3],
177 const unsigned int ztuNumFrames[3]);
178
182
193 DCMTree::TreePtr dcmTree,
194 bool removeReferencedImageSequence,
195 bool suppressWritingUnassignedContent);
196
198typedef std::set<std::pair<std::string, std::string>> StringPairSet;
199
211 DCMTree::RawTagId sequenceTagId,
212 DCMTree::RawTagId tagId1,
213 DCMTree::RawTagId tagId2,
214 StringPairSet &pairSet);
215
239 DCMTree::RawTagId inputSequenceTagId,
240 DCMTree::TreePtr dcmTree,
241 DCMTree::RawTagId evidenceSequenceTagId,
242 MLint insertionIndex,
243 bool scanFrames);
244
256
260
270
277 std::vector<unsigned int> referencedSegmentNumbers;
278
280 std::vector<SubImageBox> frameBoxes;
281
283 std::vector<SegmentInfos> segmentInfos;
284
286 std::vector<std::string> purposeOfReferenceCodeSequence;
287
298
300 inline bool empty() const {
301 return referencedSegmentNumbers.empty() && frameBoxes.empty() && segmentInfos.empty();
302 }
303};
304
333 const ImageVector &frameHeapImageExtent,
334 const MedicalImageProperties &medicalImageProps,
335 const std::vector<std::string> &derivationCodeSequence=std::vector<std::string>(),
336 const EnhancedMFObjectInfosBase &enhancedMFObjectInfos=EnhancedMFObjectInfosBase(),
338 std::vector<DCMTree::TagPtr> *dicomImageTypeTags=nullptr,
339 std::vector<DCMTree::TagPtr> *dicomImageDescriptionTags=nullptr,
340 bool suppressWritingUnassignedContent=false);
341
349 const ImageVector &frameHeapImageExtent,
350 const MedicalImageProperties &medicalImageProps);
351
352// Forward internally used classes.
353class DicomSegmentItem;
354
372 PagedImage &inputPagedImage,
373 ImageVector &imageExtentToAdapt,
374 const std::vector<DicomSegmentItem> &segmentItems,
375 EnhancedMFSEGObjectInfos &enhancedMFSegmentInfos,
376 bool savePaddedPixelData);
377
382 const ImageVector &inputImageExtent,
383 SourceFrameReferenceVector &sourceFrameReferences);
384
385
386ML_END_NAMESPACE
Tables containing DICOM tables from Part 16.
Project global and OS specific declarations.
#define ML_MLToDicomTools_EXPORT
Only for diagnostic purposes.
MLint64 MLint
Definition mlTypeDefs.h:489
boost::shared_ptr< const Tree > Const_TreePtr
Definition DCMTree_Lib.h:67
boost::shared_ptr< Tree > TreePtr
Shared pointer to a DCMTree::Tree.
Definition DCMTree_Lib.h:66
unsigned int RawTagId
std::set< std::pair< std::string, std::string > > StringPairSet
Set of string pairs; typically to store unique pairs of DICOM UIDs.
ML_MLToDicomTools_EXPORT void addMultiFrameFunctionalGroups(DCMTree::TreePtr dcmTree, const ImageVector &frameHeapImageExtent, const MedicalImageProperties &medicalImageProps, const std::vector< std::string > &derivationCodeSequence=std::vector< std::string >(), const EnhancedMFObjectInfosBase &enhancedMFObjectInfos=EnhancedMFObjectInfosBase(), DCMTree::Const_TreePtr inputDcmTree=DCMTree::Const_TreePtr(), std::vector< DCMTree::TagPtr > *dicomImageTypeTags=nullptr, std::vector< DCMTree::TagPtr > *dicomImageDescriptionTags=nullptr, bool suppressWritingUnassignedContent=false)
ML_MLToDicomTools_EXPORT void getUniqueValuePairSetFromSequence(DCMTree::Const_TreePtr dcmTree, DCMTree::RawTagId sequenceTagId, DCMTree::RawTagId tagId1, DCMTree::RawTagId tagId2, StringPairSet &pairSet)
ML_MLToDicomTools_EXPORT void addUnassignedSharedConvertedAttributes(DCMTree::Const_TreePtr inputDcmTree, DCMTree::TreePtr dcmTree, bool removeReferencedImageSequence, bool suppressWritingUnassignedContent)
ML_MLToDicomTools_EXPORT void addMultiFrameDimensionTags(DCMTree::TreePtr dcmTree, const ImageVector &frameHeapImageExtent, const MedicalImageProperties &medicalImageProps)
ML_MLToDicomTools_EXPORT void setPlaneOrientationFunctionalGroupTags(DCMTree::TreePtr dcmTree, const Vector6 &imageOrientationPatient)
ML_MLToDicomTools_EXPORT void setFrameContentFunctionalGroupTags(DCMTree::TreePtr dcmTree, const MedicalImageProperties &medImgProps, bool setTemporalPositionIndex, bool setFrameAcquisitionDateTime, const unsigned int ztuPos[3], const unsigned int ztuNumFrames[3])
ML_MLToDicomTools_EXPORT std::string addAndSetMultiBinarySEGPixelDataTag(DCMTree::TreePtr resultTree, PagedImage &inputPagedImage, ImageVector &imageExtentToAdapt, const std::vector< DicomSegmentItem > &segmentItems, EnhancedMFSEGObjectInfos &enhancedMFSegmentInfos, bool savePaddedPixelData)
Tvec3< MLdouble > Vector3
A vector with three components of type double.
Definition mlVector3.h:286
ML_MLToDicomTools_EXPORT void setDerivationImageFunctionalGroupTags(DCMTree::TreePtr seqItemTreePtr, const std::vector< std::string > &derivationCodeSequence, bool createEmpty=false, const SourceFrameReferenceVector &sourceFrameReferences=SourceFrameReferenceVector(), const size_t entriesToAddZ=std::string::npos, const size_t entriesToAddT=std::string::npos, const size_t entriesToAddU=std::string::npos, const std::string &purposeOfReferenceCodeSequenceEntry="")
Tvec6< MLdouble > Vector6
A vector with six components of type double.
Definition mlVector6.h:194
ML_MLToDicomTools_EXPORT void setPixelMeasuresFunctionalGroupTags(DCMTree::TreePtr dcmTree, const Vector2 &pixelSpacing, double sliceThickness, bool addSpacingBetweenSlices=false, double spacingBetweenSlices=1.0)
Tvec2< MLdouble > Vector2
A vector with two components of type double.
Definition mlVector2.h:159
ML_MLToDicomTools_EXPORT void removedDuplicatedUnassignedSharedConvertedAttributes(DCMTree::TreePtr dcmTree)
TSubImageBox< MLint > SubImageBox
Defines the standard SubImageBox type used in the ML. Its size varies with the size of the MLint type...
ML_MLToDicomTools_EXPORT void addCIDEntry(const char *const CIDGroupTable[][CIDGroups::NUM_CID_COLUMNS], size_t CIDGroupTableSize, const std::string &entryToAdd, DCMTree::TreePtr itemTree)
ML_MLToDicomTools_EXPORT void buildImageEvidenceSequence(DCMTree::Const_TreePtr inputDcmTree, DCMTree::RawTagId inputSequenceTagId, DCMTree::TreePtr dcmTree, DCMTree::RawTagId evidenceSequenceTagId, MLint insertionIndex, bool scanFrames)
ML_MLToDicomTools_EXPORT void setPlanePositionFunctionalGroupTags(DCMTree::TreePtr dcmTree, const Vector3 &imagePositionPatient)
ML_MLToDicomTools_EXPORT void getSourceImageSequenceInformation(DCMTree::Const_TreePtr inputDcmTree, const ImageVector &inputImageExtent, SourceFrameReferenceVector &sourceFrameReferences)
std::vector< SourceFrameReference > SourceFrameReferenceVector
A vector of SourceFrameReference, each one referencing a frame of a source image.
TImageVector< MLint > ImageVector
Defines the standard ImageVector type that is used by the ML for indexing and coordinates.
Currently empty class used as base for all classes carrying additional IOD object information.
virtual ~EnhancedMFObjectInfosBase()=default
Default virtual destructor.
EnhancedMFObjectInfosBase & operator=(const EnhancedMFObjectInfosBase &)=default
Default assignment operator.
EnhancedMFObjectInfosBase()=default
Default virtual destructor.
EnhancedMFObjectInfosBase(const EnhancedMFObjectInfosBase &)=default
Default copy constructor.
std::vector< SubImageBox > frameBoxes
A vector of SubImageBoxes for all frames.
bool empty() const
Returns true if all vectors are empty which indicates that its shall not be used at all.
SourceFrameReferenceVector sourceFrameReferenceVector
std::vector< SegmentInfos > segmentInfos
A vector of SegmentInfos; one info for each segment.
std::vector< unsigned int > referencedSegmentNumbers
std::vector< std::string > purposeOfReferenceCodeSequence
Code sequence to be used in Source Image Sequence if that sequence is filled.
Structure providing SEG IOD specific information for and about composed BitImage Frame heap to be sav...
SubImageBox box
The subimage box of the segment in voxel position related to the inputPagedImage.
MLint segmentFrames
The number of frames in the Enhanced multi-frame Heap of frames unrolled in the z-dimension.
MLint startFrame
The index of the first frame in the Enhanced multi-frame Heap of frames unrolled in the z-dimension.
SourceFrameReference(DCMTree::Const_TreePtr dcmTree)
Constructor with initialization from a DCMTree.
static const std::vector< MLuint64 > rawTagIds
Raw tag ids matching to the order of the first seven fields which contain tag values.
void getFromDCMTree(DCMTree::Const_TreePtr inputDcmTree)
std::string referencedFrameNumber
ReferencedFrameNumber.
std::string fmeSOPInstanceUID
If available the SOPInstanceUID of an input frame or image from private FME tag.
std::string fmeIndexOfDecomposedFrame
If available the index of decomposed frame from private FME tag.
void setUpFromTagValueVector(const std::vector< std::string > &rawTopLevelSourceFrameReferences)
~SourceFrameReference()
Default constructor.
SourceFrameReference & operator=(const SourceFrameReference &)=default
Default copy constructor.
SourceFrameReference(const SourceFrameReference &)=default
Default copy constructor.
std::string referencedSegmentNumber
ReferencedSegmentNumber.
SourceFrameReference()=default
Default constructor.
std::string segmentNumber
SegmentNumber.
std::string sopInstanceUID
SOPInstanceUID of an input frame or image.
std::string sopClassUID
SOPClassUID of an input frame or image.
void getRawTopLevelSourceFrameReferences(DCMTree::Const_TreePtr inputDcmTree, std::vector< std::string > &rawTopLevelSourceFrameInfos) const
std::string frameCounter
Frame Counter.
std::string fmeSOPClassUID
If available the SOPClassUID of an input frame or image from private FME tag.