Shape-based binary image interpolation. More...
#include <mitkShapeBasedInterpolationAlgorithm.h>


Public Types | |
| typedef ShapeBasedInterpolationAlgorithm | Self |
| typedef SegmentationInterpolationAlgorithm | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
| virtual const char * | GetClassName () const |
| Image::Pointer | Interpolate (Image::ConstPointer lowerSlice, unsigned int lowerSliceIndex, Image::ConstPointer upperSlice, unsigned int upperSliceIndex, unsigned int requestedIndex, unsigned int sliceDimension, Image::Pointer resultImage, unsigned int timeStep, Image::ConstPointer referenceImage) |
Static Public Member Functions | |
| static Pointer | New () |
Shape-based binary image interpolation.
This class uses legacy code from ipSegmentation to implement the shape-based interpolation algorithm described in
G.T. Herman, J. Zheng, C.A. Bucholtz: "Shape-based interpolation" IEEE Computer Graphics & Applications, pp. 69-79,May 1992
Last contributor: $Author:$
Definition at line 39 of file mitkShapeBasedInterpolationAlgorithm.h.
| typedef itk::SmartPointer<const Self> mitk::ShapeBasedInterpolationAlgorithm::ConstPointer |
Reimplemented from mitk::SegmentationInterpolationAlgorithm.
Definition at line 43 of file mitkShapeBasedInterpolationAlgorithm.h.
| typedef itk::SmartPointer<Self> mitk::ShapeBasedInterpolationAlgorithm::Pointer |
Reimplemented from mitk::SegmentationInterpolationAlgorithm.
Definition at line 43 of file mitkShapeBasedInterpolationAlgorithm.h.
Reimplemented from mitk::SegmentationInterpolationAlgorithm.
Definition at line 43 of file mitkShapeBasedInterpolationAlgorithm.h.
Reimplemented from mitk::SegmentationInterpolationAlgorithm.
Definition at line 43 of file mitkShapeBasedInterpolationAlgorithm.h.
| virtual const char* mitk::ShapeBasedInterpolationAlgorithm::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::SegmentationInterpolationAlgorithm.
| mitk::Image::Pointer mitk::ShapeBasedInterpolationAlgorithm::Interpolate | ( | Image::ConstPointer | lowerSlice, |
| unsigned int | lowerSliceIndex, | ||
| Image::ConstPointer | upperSlice, | ||
| unsigned int | upperSliceIndex, | ||
| unsigned int | requestedIndex, | ||
| unsigned int | sliceDimension, | ||
| Image::Pointer | resultImage, | ||
| unsigned int | timeStep, | ||
| Image::ConstPointer | referenceImage | ||
| ) | [virtual] |
Implements mitk::SegmentationInterpolationAlgorithm.
Definition at line 24 of file mitkShapeBasedInterpolationAlgorithm.cpp.
References mitk::CastToItkImage(), mitk::CastToMitkImage(), ipMITKSegmentationInterpolate(), mitkIpPicDescriptor, and New().
{
// convert these slices to the ipSegmentation data type (into an ITK image)
itk::Image< ipMITKSegmentationTYPE, 2 >::Pointer correctPixelTypeLowerITKSlice;
CastToItkImage( lowerSlice, correctPixelTypeLowerITKSlice );
assert ( correctPixelTypeLowerITKSlice.IsNotNull() );
itk::Image< ipMITKSegmentationTYPE, 2 >::Pointer correctPixelTypeUpperITKSlice;
CastToItkImage( upperSlice, correctPixelTypeUpperITKSlice );
assert ( correctPixelTypeUpperITKSlice.IsNotNull() );
// correct direction info
itk::Image< ipMITKSegmentationTYPE, 2 >::DirectionType imageDirection;
imageDirection.SetIdentity();
correctPixelTypeLowerITKSlice->SetDirection(imageDirection);
correctPixelTypeUpperITKSlice->SetDirection(imageDirection);
// back-convert to MITK images to access a mitkIpPicDescriptor
Image::Pointer correctPixelTypeLowerMITKSlice = Image::New();
CastToMitkImage( correctPixelTypeLowerITKSlice, correctPixelTypeLowerMITKSlice );
mitkIpPicDescriptor* lowerPICSlice = correctPixelTypeLowerMITKSlice->GetSliceData()->GetPicDescriptor();
Image::Pointer correctPixelTypeUpperMITKSlice = Image::New();
CastToMitkImage( correctPixelTypeUpperITKSlice, correctPixelTypeUpperMITKSlice );
mitkIpPicDescriptor* upperPICSlice = correctPixelTypeUpperMITKSlice->GetSliceData()->GetPicDescriptor();
// calculate where the current slice is in comparison to the lower and upper neighboring slices
float ratio = (float)(requestedIndex - lowerSliceIndex) / (float)(upperSliceIndex - lowerSliceIndex);
mitkIpPicDescriptor* ipPicResult = ipMITKSegmentationInterpolate( lowerPICSlice, upperPICSlice, ratio ); // magic
if (!ipPicResult) return NULL;
Geometry3D::Pointer originalGeometry = resultImage->GetGeometry();
resultImage->Initialize( ipPicResult );
resultImage->SetPicSlice( ipPicResult );
resultImage->SetGeometry( originalGeometry );
mitkIpPicFree( ipPicResult );
return resultImage;
}
| static Pointer mitk::ShapeBasedInterpolationAlgorithm::New | ( | ) | [static] |
Referenced by Interpolate(), and mitk::SegmentationInterpolationController::Interpolate().
1.7.2