Public Types | Public Member Functions | Static Public Member Functions

mitk::ShapeBasedInterpolationAlgorithm Class Reference

Shape-based binary image interpolation. More...

#include <mitkShapeBasedInterpolationAlgorithm.h>

Inheritance diagram for mitk::ShapeBasedInterpolationAlgorithm:
Inheritance graph
[legend]
Collaboration diagram for mitk::ShapeBasedInterpolationAlgorithm:
Collaboration graph
[legend]

List of all members.

Public Types

typedef
ShapeBasedInterpolationAlgorithm 
Self
typedef
SegmentationInterpolationAlgorithm 
Superclass
typedef itk::SmartPointer< SelfPointer
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 ()

Detailed Description

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.


Member Typedef Documentation


Member Function Documentation

virtual const char* mitk::ShapeBasedInterpolationAlgorithm::GetClassName (  ) const [virtual]
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]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines