Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkPAComposedVolume.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 #include "mitkPAComposedVolume.h"
13 #include "mitkIOUtil.h"
14 #include "mitkImageReadAccessor.h"
15 #include <string>
16 
17 mitk::pa::ComposedVolume::ComposedVolume(InSilicoTissueVolume::Pointer groundTruthVolume)
18 {
19  m_GroundTruthVolume = groundTruthVolume;
20  m_FluenceComponents = 0;
21  m_FluenceValues.clear();
22 }
23 
25 {
26  m_FluenceValues.clear();
27 }
28 
30 {
31  return m_FluenceComponents;
32 }
33 
35 {
36  if (fluenceComponent >= m_FluenceComponents)
37  mitkThrow() << "Index out of bounds exception: There were less fluence components in the composed volume than the number you tried to access.";
38 
39  return (int)(m_FluenceValues.at(fluenceComponent)->GetYOffsetInCentimeters() /
40  m_GroundTruthVolume->GetTissueParameters()->GetVoxelSpacingInCentimeters());
41 }
42 
43 double mitk::pa::ComposedVolume::GetFluenceValue(int fluenceComponent, int x, int y, int z)
44 {
45  if (fluenceComponent >= m_FluenceComponents)
46  mitkThrow() << "Index out of bounds exception: There were less fluence components in the composed volume than the number you tried to access.";
47 
48  return m_FluenceValues.at(fluenceComponent)->GetFluenceValue()->GetData(x, y + GetYOffsetForFluenceComponentInPixels(fluenceComponent), z);
49 }
50 
51 void mitk::pa::ComposedVolume::AddSlice(mitk::pa::FluenceYOffsetPair::Pointer pairToAdd)
52 {
53  m_FluenceValues.push_back(pairToAdd);
54  m_FluenceComponents++;
55 }
56 
58 {
59  std::sort(m_FluenceValues.begin(), m_FluenceValues.end(), [](const mitk::pa::FluenceYOffsetPair::Pointer& struct1,
60  const mitk::pa::FluenceYOffsetPair::Pointer& struct2)
61  {
62  return (struct1->GetYOffsetInCentimeters() < struct2->GetYOffsetInCentimeters());
63  });
64 }
#define mitkThrow()
int GetNumberOfFluenceComponents()
GetNumberOfFluenceComponents.
void AddSlice(mitk::pa::FluenceYOffsetPair::Pointer fluenceYOffsetPair)
fluenceYOffsetPair
double GetFluenceValue(int fluenceComponent, int x, int y, int z)
GetFluenceValue.
ComposedVolume(InSilicoTissueVolume::Pointer groundTruthVolume)
int GetYOffsetForFluenceComponentInPixels(int fluenceComponent)
GetYOffsetForFluenceComponentInPixels.