# gdcm::IPPSorter Class Reference

IPPSorter Implement a simple Image Position (Patient) sorter, along the Image Orientation (Patient) direction. This algorithm does NOT support duplicate and will FAIL in case of duplicate IPP. More...

`#include <gdcmIPPSorter.h>`

Inheritance diagram for gdcm::IPPSorter:
[legend]
Collaboration diagram for gdcm::IPPSorter:
[legend]

List of all members.

## Public Member Functions

| IPPSorter ()
| ~IPPSorter ()
double | GetZSpacing () const
double | GetZSpacingTolerance () const
void | SetComputeZSpacing (bool b)
void | SetZSpacingTolerance (double tol)
virtual bool | Sort (std::vector< std::string > const &filenames)

## Protected Attributes

bool | ComputeZSpacing
double | ZSpacing
double | ZTolerance

## Detailed Description

IPPSorter Implement a simple Image Position (Patient) sorter, along the Image Orientation (Patient) direction. This algorithm does NOT support duplicate and will FAIL in case of duplicate IPP.

Warning:
  See special note for SetZSpacingTolerance when computing the ZSpacing from the IPP of each DICOM files (default tolerance for consistant spacing is: 1e-6mm)

For more information on Spacing, and how it is defined in DICOM, advanced users may refers to:

http://sourceforge.net/apps/mediawiki/gdcm/index.php?title=Imager_Pixel_Spacing

Bug:
  There currently a couple of bug in this implementation:

- Frame Of Reference UID is not taken into account
- Gantry Tilt is not considered

Examples:

  gdcmorthoplanes.cxx, reslicesphere.cxx, and VolumeSorter.cxx.

## Constructor & Destructor Documentation

gdcm::IPPSorter::IPPSorter | ( |  | ) |

gdcm::IPPSorter::~IPPSorter | ( |  | ) |

## Member Function Documentation

double gdcm::IPPSorter::GetZSpacing | ( |  | ) | const`[inline]`

Read-only function to provide access to the computed value for the Z-Spacing The ComputeZSpacing must have been set to true before execution of sort algorithm. Call this function *after* calling Sort(); Z-Spacing will be 0 on 2 occasions:

- Sorting simply failed, potentially duplicate IPP => ZSpacing = 0
- ZSpacing could not be computed (Z-Spacing is not constant, or ZTolerance is too low)

Examples:
  gdcmorthoplanes.cxx, and reslicesphere.cxx.

double gdcm::IPPSorter::GetZSpacingTolerance | ( |  | ) | const`[inline]`

void gdcm::IPPSorter::SetComputeZSpacing | ( | bool | b | ) | `[inline]`

Functions related to Z-Spacing computation Set to true when sort algorithm should also perform a regular Z-Spacing computation using the Image Position (Patient) Potential reason for failure: 1. ALL slices are taken into account, if one slice if missing then ZSpacing will be set to 0 since the spacing will not be found to be regular along the Series

Examples:
  gdcmorthoplanes.cxx, reslicesphere.cxx, and VolumeSorter.cxx.

void gdcm::IPPSorter::SetZSpacingTolerance | ( | double | tol | ) | `[inline]`

2. Another reason for failure is that that Z-Spacing is only slightly changing (eg 1e-3) along the serie, a human can determine that this is ok and change the tolerance from its default value: 1e-6

Examples:
  gdcmorthoplanes.cxx, and reslicesphere.cxx.

virtual bool gdcm::IPPSorter::Sort | ( | std::vector< std::string > const & | filenames | ) | `[virtual]`

Main entry point to the sorter. It will execute the filter, option should be set before running this function (SetZSpacingTolerance, ...) Return value indicate if sorting could be achived. Warning this does *NOT* imply that spacing is consistant, it only means the file are sorted according to IPP You should check if ZSpacing is 0 or not to deduce if file are actually a 3D volume

Reimplemented from gdcm::Sorter.

Examples:
  gdcmorthoplanes.cxx, reslicesphere.cxx, and VolumeSorter.cxx.

## Member Data Documentation

bool gdcm::IPPSorter::ComputeZSpacing`[protected]`

double gdcm::IPPSorter::ZSpacing`[protected]`

double gdcm::IPPSorter::ZTolerance`[protected]`

The documentation for this class was generated from the following file:

- gdcmIPPSorter.h