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().