-
Notifications
You must be signed in to change notification settings - Fork 61
/
Copy pathDICOMSegmentationConverter.puml
99 lines (84 loc) · 2.94 KB
/
DICOMSegmentationConverter.puml
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
@startuml
title ITK image -> DCM segmentation, DCM segmentation -> ITK image
package Metadata <<Rectangle>> {
package JSON-LD as JSON <<Database>> {
note as metaNote
- series
- segment(s)
end note
}
}
package Segmentation(s) <<Rectangle>>{
package NRRD <<Database>> {
}
package ITK <<Database>> {
}
package DICOM <<Database>>{
}
}
package ReferenceImage(s) as ReferenceImage <<Rectangle>> {
package DICOM as DICOM1 <<Database>>{
}
}
package dcmqi {
ImageSEGConverter ---* JSONMetaInformationHandler: use
ImageSEGConverter ---* Helper : use
JSONMetaInformationHandler -* SegmentAttributes : use
JSONMetaInformationHandler <-> JSON : read/write
ImageSEGConverter <-> DICOM: read/write
ImageSEGConverter <- DICOM1: read
ImageSEGConverter <- ITK: read
ImageSEGConverter -> NRRD: write
SegmentAttributes -* Helper : use
}
class Helper {
+ {static} tokenizeString(string str, vector<string> &tokens, string delimiter): void
+ {static} splitString(string str, string &head, string &tail, string delimiter): void
+ {static} floatToStr(float f): string
---
+ {static} stringToCodeSequenceMacro(std::string str): CodeSequenceMacro
+ {static} stringToDSRCodedEntryValue(std::string str): DSRCodedEntryValue
---
+ {static} getCIEXYZFromRGB(unsigned *rgb, float *cieXYZ): float*
+ {static} getRGBFromCIEXYZ(float* cieXYZ, unsigned *rgb): unsigned*
+ {static} getCIELabFromCIEXYZ(float *cieXYZ, float *cieLab): float*
+ {static} getCIEXYZFromCIELab(float *cieLab, float *cieXYZ): float*
+ {static} getIntegerScaledCIELabFromCIELab(float *cieLab, unsigned *cieLabScaled): unsigned*
+ {static} getCIELabFromIntegerScaledCIELab(unsigned* cieLabScaled, float* cieLab): float*
}
class ImageSEGConverter {
+ {static} itkimage2dcmSegmentation(dcmImages, itkimages, jsonMetaFile, outputFileName)
+ {static} dcmSegmentation2itkimage(dcmImage, ...)
---
- allOtherMethods()
}
class JSONMetaInformationHandler {
+ attributes : SegmentAttributes[]
- filename : const char*
---
+ JSONMetaInformationHandler()
+ JSONMetaInformationHandler(const char* filename)
+ write(const char* filename) : bool
---
- read() : bool
- readSeriesAttributes(const Json::Value &root) : void
- readSegmentAttributes(const Json::Value &root) : void
}
class SegmentAttributes {
- labelID : unsigned
- segmentDescription : string
- segmentAlgorithmType :string
- segmentAlgorithmName : string
- recommendedDisplayRGBValue : unsigned[3]
- anatomicRegion : CodeSequenceMacro
- anatomicRegionModifier : CodeSequenceMacro
- segmentedPropertyCategoryCode : CodeSequenceMacro
- segmentedPropertyType : CodeSequenceMacro
- segmentedPropertyTypeModifier : CodeSequenceMacro
---
+ setter(...) : void
+ getter() : whateverType
+ setLabelID(unsigned labelID) : void
+ PrintSelf() : void
}
@enduml