MCPcopy Create free account
hub / github.com/MITK/MITK / GenerateDataInternal

Method GenerateDataInternal

Modules/AlgorithmsExt/src/mitkPadImageFilter.cpp:36–95  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34
35template <typename SourceImageType>
36void mitk::PadImageFilter::GenerateDataInternal(SourceImageType* sourceItkImage, mitk::Image::Pointer outputImage)
37{
38 mitk::Image::ConstPointer sourceImage = this->GetInput(0);
39 mitk::Image::ConstPointer referenceImage = this->GetInput(1);
40
41 mitk::BaseGeometry* imageGeometry = sourceImage->GetGeometry();
42 mitk::Point3D origin = imageGeometry->GetOrigin();
43 mitk::Vector3D spacing = imageGeometry->GetSpacing();
44
45 mitk::BaseGeometry* referenceImageGeometry = referenceImage->GetGeometry();
46 mitk::Point3D referenceOrigin = referenceImageGeometry->GetOrigin();
47
48 double outputOrigin[3];
49 itk::SizeValueType padLowerBound[3];
50 itk::SizeValueType padUpperBound[3];
51
52 int i;
53 for (i = 0; i < 3; ++i)
54 {
55 outputOrigin[i] = referenceOrigin[i];
56
57 padLowerBound[i] = static_cast<unsigned long>((origin[i] - referenceOrigin[i]) / spacing[i] + 0.5);
58
59 padUpperBound[i] = referenceImage->GetDimension(i) - sourceImage->GetDimension(i) - padLowerBound[i];
60 }
61
62 // The origin of the input image is passed through the filter and used as
63 // output origin as well. Hence, it needs to be overwritten accordingly.
64 sourceItkImage->SetOrigin(outputOrigin);
65
66 typedef itk::ConstantPadImageFilter<SourceImageType, SourceImageType> PadFilterType;
67 typename PadFilterType::Pointer padFilter = PadFilterType::New();
68 padFilter->SetInput(sourceItkImage);
69 padFilter->SetConstant(m_PadConstant);
70 padFilter->SetPadLowerBound(padLowerBound);
71 padFilter->SetPadUpperBound(padUpperBound);
72
73 // If the Binary flag is set, use an additional binary threshold filter after
74 // padding.
75 if (m_BinaryFilter)
76 {
77 typedef itk::Image<unsigned char, 3> BinaryImageType;
78 typedef itk::BinaryThresholdImageFilter<SourceImageType, BinaryImageType> BinaryFilterType;
79 typename BinaryFilterType::Pointer binaryFilter = BinaryFilterType::New();
80
81 binaryFilter->SetInput(padFilter->GetOutput());
82 binaryFilter->SetLowerThreshold(m_LowerThreshold);
83 binaryFilter->SetUpperThreshold(m_UpperThreshold);
84 binaryFilter->SetInsideValue(1);
85 binaryFilter->SetOutsideValue(0);
86 binaryFilter->Update();
87
88 mitk::CastToMitkImage(binaryFilter->GetOutput(), outputImage);
89 }
90 else
91 {
92 padFilter->Update();
93 mitk::CastToMitkImage(padFilter->GetOutput(), outputImage);

Callers

nothing calls this directly

Calls 12

CastToMitkImageFunction · 0.85
GetGeometryMethod · 0.80
SetOutsideValueMethod · 0.80
NewFunction · 0.50
GetInputMethod · 0.45
GetOriginMethod · 0.45
GetSpacingMethod · 0.45
GetDimensionMethod · 0.45
SetOriginMethod · 0.45
SetInputMethod · 0.45
GetOutputMethod · 0.45
UpdateMethod · 0.45

Tested by

no test coverage detected