Medical Imaging Interaction Toolkit
2024.12.99-0da743f6
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) | |
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 |
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 |
void | Sort () override |
Actually sort as described in the Detailed Description. More... | |
void | PrintConfiguration (std::ostream &os, const std::string &indent="") const override |
Print configuration details into given stream. More... | |
bool | operator== (const DICOMDatasetSorter &other) const override |
Public Member Functions inherited from mitk::DICOMDatasetSorter | |
mitkClassMacroItkParent (DICOMDatasetSorter, itk::LightObject) | |
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... | |
IOVolumeSplitReason::ConstPointer | GetSplitReason (unsigned int index) const |
Static Public Member Functions | |
static Pointer | New () |
static bool | GetDefaultStrictSorting () |
static bool | GetDefaultExpectDistanceOne () |
Protected Types | |
using | GroupIDToListType = std::map< std::string, DICOMDatasetList > |
using | SplitReasonListType = std::map< std::string, IOVolumeSplitReason::Pointer > |
typedef std::map< const DICOMTag, TagValueProcessor * > | TagValueProcessorMap |
Protected Member Functions | |
DICOMTagBasedSorter () | |
~DICOMTagBasedSorter () override | |
DICOMTagBasedSorter (const DICOMTagBasedSorter &other) | |
DICOMTagBasedSorter & | operator= (const DICOMTagBasedSorter &other) |
std::string | BuildGroupID (DICOMDatasetAccess *dataset) |
Helper for SplitInputGroups(). More... | |
GroupIDToListType | SplitInputGroups (SplitReasonListType &splitReasons) |
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, SplitReasonListType &splitReasons) |
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 () | |
~DICOMDatasetSorter () override | |
DICOMDatasetSorter (const DICOMDatasetSorter &other) | |
DICOMDatasetSorter & | operator= (const DICOMDatasetSorter &other) |
void | ClearOutputs () |
void | SetNumberOfOutputs (unsigned int numberOfOutputs) |
void | SetOutput (unsigned int index, const DICOMDatasetList &output, IOVolumeSplitReason::ConstPointer splitReason=nullptr) |
Protected Attributes | |
DICOMTagList | m_DistinguishingTags |
TagValueProcessorMap | m_TagValueProcessor |
DICOMSortCriterion::ConstPointer | m_SortCriterion |
bool | m_StrictSorting |
bool | m_ExpectDistanceOne |
Static Protected Attributes | |
const static bool | m_DefaultStrictSorting |
const static bool | m_DefaultExpectDistanceOne |
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 40 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 172 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 174 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 193 of file mitkDICOMTagBasedSorter.h.
|
protected |
|
overrideprotected |
|
protected |
void mitk::DICOMTagBasedSorter::AddDistinguishingTag | ( | const DICOMTag & | , |
TagValueProcessor * | tagValueProcessor = nullptr |
||
) |
Datasets that differ in given tag's value will be sorted into separate outputs.
|
protected |
Helper for SplitInputGroups().
|
inlinestatic |
Definition at line 143 of file mitkDICOMTagBasedSorter.h.
|
inlinestatic |
Definition at line 138 of file mitkDICOMTagBasedSorter.h.
DICOMTagList mitk::DICOMTagBasedSorter::GetDistinguishingTags | ( | ) | const |
bool mitk::DICOMTagBasedSorter::GetExpectDistanceOne | ( | ) | const |
DICOMSortCriterion::ConstPointer mitk::DICOMTagBasedSorter::GetSortCriterion | ( | ) | const |
bool mitk::DICOMTagBasedSorter::GetStrictSorting | ( | ) | const |
|
overridevirtual |
A list of all the tags needed for processing (facilitates scanning).
Implements mitk::DICOMDatasetSorter.
const TagValueProcessor* mitk::DICOMTagBasedSorter::GetTagValueProcessorForDistinguishingTag | ( | const DICOMTag & | ) | const |
mitk::DICOMTagBasedSorter::mitkClassMacro | ( | DICOMTagBasedSorter | , |
DICOMDatasetSorter | |||
) |
|
static |
|
protected |
|
overridevirtual |
Implements mitk::DICOMDatasetSorter.
|
overridevirtual |
Print configuration details into given stream.
Implements mitk::DICOMDatasetSorter.
void mitk::DICOMTagBasedSorter::SetExpectDistanceOne | ( | bool | strict | ) |
Flag for a special case in "strict sorting". Please see documentation of SetStrictSorting().
void mitk::DICOMTagBasedSorter::SetSortCriterion | ( | DICOMSortCriterion::ConstPointer | criterion | ) |
Define the sorting criterion (which holds seconardy criteria)
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.
|
overridevirtual |
Actually sort as described in the Detailed Description.
Implements mitk::DICOMDatasetSorter.
|
protected |
Implements the sorting step. Relatively simple implementation thanks to std::sort and a parameterization via DICOMSortCriterion.
groups | Argument that contains the groups that should be sorted. |
splitReasons | Reference to the split reasons vector. It will be also updated by the method to reflect the reasons for the returned groups. |
|
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.
splitReasons | Reference to the split reasons vector. It will be also updated by the method to reflect the reasons for the returned groups. |
|
staticprotected |
Definition at line 202 of file mitkDICOMTagBasedSorter.h.
|
staticprotected |
Definition at line 201 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 192 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 199 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 196 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 198 of file mitkDICOMTagBasedSorter.h.
|
protected |
Definition at line 194 of file mitkDICOMTagBasedSorter.h.