Medical Imaging Interaction Toolkit
2016.11.0
Medical Imaging Interaction Toolkit
|
Sort DICOM datasets based on configurable tags. More...
#include <mitkDICOMTagBasedSorter.h>
Classes | |
class | CutDecimalPlaces |
Cuts a number after configured number of decimal places. An instance of this class can be used to avoid errors when comparing minimally different image orientations. More... | |
struct | ParameterizedDatasetSort |
Helper struct to feed into std::sort, configured via DICOMSortCriterion. More... | |
class | TagValueProcessor |
Processes tag values before they are compared. These classes could do some kind of normalization such as rounding, lower case formatting, etc. More... | |
Public Member Functions | |
mitkClassMacro (DICOMTagBasedSorter, DICOMDatasetSorter) static Pointer New() | |
void | AddDistinguishingTag (const DICOMTag &, TagValueProcessor *tagValueProcessor=nullptr) |
Datasets that differ in given tag's value will be sorted into separate outputs. More... | |
DICOMTagList | GetDistinguishingTags () const |
const TagValueProcessor * | GetTagValueProcessorForDistinguishingTag (const DICOMTag &) const |
void | SetSortCriterion (DICOMSortCriterion::ConstPointer criterion) |
Define the sorting criterion (which holds seconardy criteria) More... | |
DICOMSortCriterion::ConstPointer | GetSortCriterion () const |
virtual DICOMTagList | GetTagsOfInterest () override |
A list of all the tags needed for processing (facilitates scanning). More... | |
void | SetStrictSorting (bool strict) |
Whether or not groups should be checked for consecutive tag values. More... | |
bool | GetStrictSorting () const |
void | SetExpectDistanceOne (bool strict) |
Flag for a special case in "strict sorting". Please see documentation of SetStrictSorting(). More... | |
bool | GetExpectDistanceOne () const |
virtual void | Sort () override |
Actually sort as described in the Detailed Description. More... | |
virtual void | PrintConfiguration (std::ostream &os, const std::string &indent="") const override |
Print configuration details into given stream. More... | |
virtual bool | operator== (const DICOMDatasetSorter &other) const override |
Public Member Functions inherited from mitk::DICOMDatasetSorter | |
mitkClassMacroItkParent (DICOMDatasetSorter, itk::LightObject) virtual DICOMTagList GetTagsOfInterest()=0 | |
Return the tags of interest (to facilitate scanning) More... | |
void | SetInput (DICOMDatasetList filenames) |
Input for sorting. More... | |
const DICOMDatasetList & | GetInput () const |
Input for sorting. More... | |
unsigned int | GetNumberOfOutputs () const |
Output of the sorting process. More... | |
const DICOMDatasetList & | GetOutput (unsigned int index) const |
Output of the sorting process. More... | |
DICOMDatasetList & | GetOutput (unsigned int index) |
Output of the sorting process. More... | |
Protected Types | |
typedef std::map< std::string, DICOMDatasetList > | GroupIDToListType |
typedef std::map< const DICOMTag, TagValueProcessor * > | TagValueProcessorMap |
Protected Member Functions | |
DICOMTagBasedSorter () | |
virtual | ~DICOMTagBasedSorter () |
DICOMTagBasedSorter (const DICOMTagBasedSorter &other) | |
DICOMTagBasedSorter & | operator= (const DICOMTagBasedSorter &other) |
std::string | BuildGroupID (DICOMDatasetAccess *dataset) |
Helper for SplitInputGroups(). More... | |
GroupIDToListType | SplitInputGroups () |
Implements the "distiguishing tags". To sort datasets into different groups, a long string will be built for each dataset. The string concatenates all tags and their respective values. Datasets that match in all values will end up with the same string. More... | |
GroupIDToListType & | SortGroups (GroupIDToListType &groups) |
Implements the sorting step. Relatively simple implementation thanks to std::sort and a parameterization via DICOMSortCriterion. More... | |
Protected Member Functions inherited from mitk::DICOMDatasetSorter | |
DICOMDatasetSorter () | |
virtual | ~DICOMDatasetSorter () |
DICOMDatasetSorter (const DICOMDatasetSorter &other) | |
DICOMDatasetSorter & | operator= (const DICOMDatasetSorter &other) |
void | ClearOutputs () |
void | SetNumberOfOutputs (unsigned int numberOfOutputs) |
void | SetOutput (unsigned int index, const DICOMDatasetList &output) |
Protected Attributes | |
DICOMTagList | m_DistinguishingTags |
TagValueProcessorMap | m_TagValueProcessor |
DICOMSortCriterion::ConstPointer | m_SortCriterion |
bool | m_StrictSorting |
bool | m_ExpectDistanceOne |
Sort DICOM datasets based on configurable tags.
This class implements sorting of input DICOM datasets into multiple outputs as described in Loading strategy.
The logic of sorting and splitting is most simple and most generic:
Definition at line 44 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 165 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 181 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 91 of file mitkDICOMTagBasedSorter.cpp.
|
protectedvirtual |
Definition at line 99 of file mitkDICOMTagBasedSorter.cpp.
|
protected |
Definition at line 110 of file mitkDICOMTagBasedSorter.cpp.
References m_TagValueProcessor.
void mitk::DICOMTagBasedSorter::AddDistinguishingTag | ( | const DICOMTag & | tag, |
TagValueProcessor * | tagValueProcessor = nullptr |
||
) |
Datasets that differ in given tag's value will be sorted into separate outputs.
Definition at line 279 of file mitkDICOMTagBasedSorter.cpp.
|
protected |
Helper for SplitInputGroups().
Definition at line 321 of file mitkDICOMTagBasedSorter.cpp.
References mitk::DICOMDatasetAccess::GetTagValueAsString(), mitk::DICOMDatasetFinding::isValid, and mitk::DICOMDatasetFinding::value.
mitk::DICOMTagList mitk::DICOMTagBasedSorter::GetDistinguishingTags | ( | ) | const |
Definition at line 257 of file mitkDICOMTagBasedSorter.cpp.
bool mitk::DICOMTagBasedSorter::GetExpectDistanceOne | ( | ) | const |
Definition at line 237 of file mitkDICOMTagBasedSorter.cpp.
mitk::DICOMSortCriterion::ConstPointer mitk::DICOMTagBasedSorter::GetSortCriterion | ( | ) | const |
Definition at line 294 of file mitkDICOMTagBasedSorter.cpp.
bool mitk::DICOMTagBasedSorter::GetStrictSorting | ( | ) | const |
Definition at line 223 of file mitkDICOMTagBasedSorter.cpp.
|
overridevirtual |
A list of all the tags needed for processing (facilitates scanning).
Definition at line 245 of file mitkDICOMTagBasedSorter.cpp.
const mitk::DICOMTagBasedSorter::TagValueProcessor * mitk::DICOMTagBasedSorter::GetTagValueProcessorForDistinguishingTag | ( | const DICOMTag & | tag | ) | const |
Definition at line 264 of file mitkDICOMTagBasedSorter.cpp.
mitk::DICOMTagBasedSorter::mitkClassMacro | ( | DICOMTagBasedSorter | , |
DICOMDatasetSorter | |||
) |
|
protected |
Definition at line 127 of file mitkDICOMTagBasedSorter.cpp.
References m_DistinguishingTags, m_ExpectDistanceOne, m_SortCriterion, m_StrictSorting, m_TagValueProcessor, and mitk::DICOMDatasetSorter::operator=().
|
overridevirtual |
Implements mitk::DICOMDatasetSorter.
Definition at line 149 of file mitkDICOMTagBasedSorter.cpp.
|
overridevirtual |
Print configuration details into given stream.
Implements mitk::DICOMDatasetSorter.
Definition at line 188 of file mitkDICOMTagBasedSorter.cpp.
void mitk::DICOMTagBasedSorter::SetExpectDistanceOne | ( | bool | strict | ) |
Flag for a special case in "strict sorting". Please see documentation of SetStrictSorting().
Definition at line 230 of file mitkDICOMTagBasedSorter.cpp.
void mitk::DICOMTagBasedSorter::SetSortCriterion | ( | DICOMSortCriterion::ConstPointer | criterion | ) |
Define the sorting criterion (which holds seconardy criteria)
Definition at line 287 of file mitkDICOMTagBasedSorter.cpp.
void mitk::DICOMTagBasedSorter::SetStrictSorting | ( | bool | strict | ) |
Whether or not groups should be checked for consecutive tag values.
When this flag is set (default in constructor=off), the sorter will not only sort in a way that the values of a configured tag are ascending BUT in addition the sorter will enforce a constant numerical distance between values.
Having this flag is useful for handling of series with missing slices, e.g. Instance Numbers 1 2 3 5 6 7 8. With the flag set to true, the sorter would split this group into two, because the initial distance of 1 is not kept between Instance Numbers 3 and 5.
A special case of this behavior can be configured by SetExpectDistanceOne(). When this additional flag is set to true, the sorter will expect distance 1 exactly. This can help if the second slice is missing already. Without this additional flag, we would "learn" about a wrong distance of 2 (or similar) and then sort completely wrong.
Definition at line 216 of file mitkDICOMTagBasedSorter.cpp.
|
overridevirtual |
Actually sort as described in the Detailed Description.
Implements mitk::DICOMDatasetSorter.
Definition at line 301 of file mitkDICOMTagBasedSorter.cpp.
|
protected |
Implements the sorting step. Relatively simple implementation thanks to std::sort and a parameterization via DICOMSortCriterion.
Definition at line 375 of file mitkDICOMTagBasedSorter.cpp.
References MITK_DEBUG.
|
protected |
Implements the "distiguishing tags". To sort datasets into different groups, a long string will be built for each dataset. The string concatenates all tags and their respective values. Datasets that match in all values will end up with the same string.
Definition at line 350 of file mitkDICOMTagBasedSorter.cpp.
References mitk::DICOMDatasetAccess::GetFilenameIfAvailable(), and MITK_DEBUG.
|
protected |
Definition at line 180 of file mitkDICOMTagBasedSorter.h.
Referenced by operator=().
|
protected |
Definition at line 187 of file mitkDICOMTagBasedSorter.h.
Referenced by operator=().
|
protected |
Definition at line 184 of file mitkDICOMTagBasedSorter.h.
Referenced by mitk::DICOMTagBasedSorter::ParameterizedDatasetSort::operator()(), and operator=().
|
protected |
Definition at line 186 of file mitkDICOMTagBasedSorter.h.
Referenced by operator=().
|
protected |
Definition at line 182 of file mitkDICOMTagBasedSorter.h.
Referenced by DICOMTagBasedSorter(), and operator=().