17 Volume::Pointer precorrectionVolume,
bool inverse)
38 ComposedVolume::Pointer composedVolume)
40 int fluenceComponents = composedVolume->GetNumberOfFluenceComponents();
42 int xDim = composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetXDim();
43 int zDim = composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetZDim();
45 auto* imageArray =
new double[xDim*zDim*fluenceComponents];
47 for (
int fluenceComponentIdx = 0; fluenceComponentIdx < fluenceComponents; fluenceComponentIdx++)
48 for (
int z = 0; z < zDim; z++)
49 for (
int x = 0; x < xDim; x++)
51 int index = z * xDim * fluenceComponents + x * fluenceComponents + fluenceComponentIdx;
52 imageArray[index] = composedVolume->GetFluenceValue(fluenceComponentIdx, x,
m_CentralYSlice, z);
61 if (std::abs(imageArray[index] - 0) >=
mitk::eps)
62 imageArray[index] = 1 / imageArray[index];
64 imageArray[index] = INFINITY;
68 return mitk::pa::Volume::New(imageArray, xDim, fluenceComponents, zDim, composedVolume->GetGroundTruthVolume()->GetSpacing());
72 ComposedVolume::Pointer composedVolume)
74 int fluenceComponents = composedVolume->GetNumberOfFluenceComponents();
76 int xDim = composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetXDim();
77 int zDim = composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetZDim();
79 auto* imageArray =
new double[xDim*zDim*fluenceComponents];
81 for (
int fluenceComponentIdx = 0; fluenceComponentIdx < fluenceComponents; fluenceComponentIdx++)
82 for (
int z = 0; z < zDim; z++)
83 for (
int x = 0; x < xDim; x++)
85 int y =
m_CentralYSlice + composedVolume->GetYOffsetForFluenceComponentInPixels(fluenceComponentIdx);
86 imageArray[z * xDim * fluenceComponents + x * fluenceComponents + fluenceComponentIdx] =
87 composedVolume->GetFluenceValue(fluenceComponentIdx, x,
m_CentralYSlice, z)
88 * composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetData(x, y, z);
91 return mitk::pa::Volume::New(imageArray, xDim, fluenceComponents, zDim, composedVolume->GetGroundTruthVolume()->GetSpacing());
95 ComposedVolume::Pointer composedVolume)
97 int fluenceComponents = composedVolume->GetNumberOfFluenceComponents();
99 int xDim = composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetXDim();
100 int zDim = composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetZDim();
102 auto* imageArray =
new double[xDim*zDim*fluenceComponents];
104 for (
int fluenceComponentIdx = 0; fluenceComponentIdx < fluenceComponents; fluenceComponentIdx++)
105 for (
int z = 0; z < zDim; z++)
106 for (
int x = 0; x < xDim; x++)
108 int y =
m_CentralYSlice + composedVolume->GetYOffsetForFluenceComponentInPixels(fluenceComponentIdx);
109 imageArray[z * xDim * fluenceComponents + x * fluenceComponents + fluenceComponentIdx] =
110 composedVolume->GetGroundTruthVolume()->GetAbsorptionVolume()->GetData(x, y, z);
113 return mitk::pa::Volume::New(imageArray, xDim, fluenceComponents, zDim, composedVolume->GetGroundTruthVolume()->GetSpacing());
mitk::pa::Volume::Pointer GetSlicedGroundTruthImageFromComposedVolume(mitk::pa::ComposedVolume::Pointer composedVolume)
SlicedVolumeGenerator(int centralYSlice, bool precorrect, mitk::pa::Volume::Pointer precorrectionVolume, bool inverse)
mitk::pa::Volume::Pointer GetSlicedSignalImageFromComposedVolume(mitk::pa::ComposedVolume::Pointer composedVolume)
~SlicedVolumeGenerator() override
MITKCORE_EXPORT const ScalarType eps
mitk::pa::Volume::Pointer GetSlicedFluenceImageFromComposedVolume(mitk::pa::ComposedVolume::Pointer composedVolume)
mitk::pa::Volume::Pointer m_PrecorrectionVolume
static Volume::Pointer New(double *data, unsigned int xDim, unsigned int yDim, unsigned int zDim, double spacing)
returns smartpointer reference to a new instance of this objects. The given data array will be freed ...