1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*=========================================================================
Program: GDCM (Grassroots DICOM). A DICOM library
Copyright (c) 2006-2011 Mathieu Malaterre
All rights reserved.
See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#ifndef GDCMEMPTYMASKGENERATOR_H
#define GDCMEMPTYMASKGENERATOR_H
#include "gdcmSubject.h"
namespace gdcm {
/**
* \brief EmptyMaskGenerator
* Main class to generate a Empty Mask Series from an input Series. This class
* takes an input folder and generates a series of DICOM files in the specified
* output directory.
* This class handles multiples DICOM Series within the same input directory.
*
* The class allow two mode of operations:
* - UseOriginalSOPClassUID
* - UseGrayscaleSecondaryImageStorage
*
* UseOriginalSOPClassUID is the mode where original attributes are copied from
* the original DICOM instance.
*
* UseGrayscaleSecondaryImageStorage is the mode where attributes are generated
* so as to create a MultiframeGrayscaleByteSecondaryCaptureImageStorage
* (MultiframeGrayscaleWordSecondaryCaptureImageStorage) instance.
*
* In both mode:
* - the Study references (StudyInstanceUID and StudyID) are preserved.
* - the PatientID reference is preserved.
* - the Image Type attribute will be setup so that the fourth
* element is set to 'MASK'.
* - a new Series Instance UID is generated. It is thus required to run the process
* over all files using the same input Series Instance UID so that a proper mapping
* from the old Series UID is done to the new one.
* Since a new Series Instance UID is generated, there is no sense to
* preserve the original Frame of Reference UID, although it would have made
* sense here.
*/
class GDCM_EXPORT EmptyMaskGenerator
{
public:
EmptyMaskGenerator();
~EmptyMaskGenerator();
enum SOPClassUIDMode {
UseOriginalSOPClassUID = 0, // default
UseGrayscaleSecondaryImageStorage
};
/// Select generation of SOP Class UID method:
/// Default is UseOriginalSOPClassUID
void SetSOPClassUIDMode( SOPClassUIDMode mode );
/// Specify input directory
void SetInputDirectory( const char * dirname );
/// Specify output directory
void SetOutputDirectory( const char * dirname );
/// Main loop
bool Execute();
private:
struct impl;
// PIMPL idiom
impl* pimpl;
};
} // end namespace gdcm
#endif //GDCMEMPTYMASKGENERATOR_H