Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

mitk::TransferFunction Class Reference

Wrapper class for VTK scalar opacity, gradient opacity, and color transfer functions. More...

#include <mitkTransferFunction.h>

List of all members.

Public Types

typedef std::vector< std::pair
< double, double > > 
ControlPoints
typedef std::vector< std::pair
< double, itk::RGBPixel
< double > > > 
RGBControlPoints
typedef TransferFunction Self
typedef itk::DataObject Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual void SetMin (int _arg)
 Get/Set min/max of transfer function range for initialization.
virtual void SetMax (int _arg)
 Get/Set min/max of transfer function range for initialization.
virtual int GetMin ()
 Get/Set min/max of transfer function range for initialization.
virtual int GetMax ()
 Get/Set min/max of transfer function range for initialization.
virtual vtkPiecewiseFunction * GetScalarOpacityFunction ()
 Get/Set wrapped vtk transfer function.
virtual vtkPiecewiseFunction * GetGradientOpacityFunction ()
 Get/Set wrapped vtk transfer function.
virtual vtkColorTransferFunction * GetColorTransferFunction ()
 Get/Set wrapped vtk transfer function.
virtual const
HistogramGenerator::HistogramType
GetHistogram ()
 Get histogram used for transfer function initialization.
void InitializeByMitkImage (const mitk::Image *image)
 Initialize transfer function based on the histogram of an mitk::Image.
void InitializeByItkHistogram (const itk::Statistics::Histogram< double > *histogram)
 Initialize transfer function based on the specified histogram.
void InitializeHistogram (const mitk::Image *image)
 Initialize the internal histogram and min/max range based on the specified mitk::Image.
void SetScalarOpacityPoints (TransferFunction::ControlPoints points)
 Insert control points and values into the scalar opacity transfer function.
void SetGradientOpacityPoints (TransferFunction::ControlPoints points)
 Insert control points and values into the gradient opacity transfer function.
void SetRGBPoints (TransferFunction::RGBControlPoints rgbpoints)
 Insert control points and RGB values into the color transfer function.
void AddScalarOpacityPoint (double x, double value)
 Add a single control point to the scalar opacity transfer function.
void AddGradientOpacityPoint (double x, double value)
 Add a single control point to the gradient opacity transfer function.
void AddRGBPoint (double x, double r, double g, double b)
 Add a single control point to the color opacity transfer function.
TransferFunction::ControlPointsGetScalarOpacityPoints ()
 Get a copy of the scalar opacity transfer function control-points.
TransferFunction::ControlPointsGetGradientOpacityPoints ()
 Get a copy of the gradient opacity transfer function control-points.
TransferFunction::RGBControlPointsGetRGBPoints ()
 Get a copy of the color transfer function control-points.
int RemoveScalarOpacityPoint (double x)
 Remove the specified control point from the scalar opacity transfer function.
int RemoveGradientOpacityPoint (double x)
 Remove the specified control point from the gradient opacity transfer function.
int RemoveRGBPoint (double x)
 Remove the specified control point from the color transfer function.
void ClearScalarOpacityPoints ()
 Removes all control points from the scalar opacity transfer function.
void ClearGradientOpacityPoints ()
 Removes all control points from the gradient opacity transfer function.
void ClearRGBPoints ()
 Removes all control points from the color transfer function.
bool operator== (Self &other)

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 TransferFunction ()
virtual ~TransferFunction ()

Protected Attributes

vtkSmartPointer
< vtkPiecewiseFunction > 
m_ScalarOpacityFunction
vtkSmartPointer
< vtkPiecewiseFunction > 
m_GradientOpacityFunction
vtkSmartPointer
< vtkColorTransferFunction > 
m_ColorTransferFunction
int m_Min
int m_Max
mitk::HistogramGenerator::HistogramType::ConstPointer m_Histogram

Detailed Description

Wrapper class for VTK scalar opacity, gradient opacity, and color transfer functions.

Holds a copy of each of the three standard VTK transfer functions (scalar opacity, gradient opacity, color) and provides an interface for manipulating their control points. Each original function can be retrieved by a Get() method.

NOTE: Currently, transfer function initialization based on histograms or computed-tomography-presets is also provided by this class, but will likely be separated into a specific initializer class.

Definition at line 53 of file mitkTransferFunction.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::TransferFunction::ConstPointer

Definition at line 60 of file mitkTransferFunction.h.

typedef std::vector<std::pair<double, double> > mitk::TransferFunction::ControlPoints

Definition at line 56 of file mitkTransferFunction.h.

typedef itk::SmartPointer<Self> mitk::TransferFunction::Pointer

Definition at line 60 of file mitkTransferFunction.h.

typedef std::vector<std::pair<double, itk::RGBPixel<double> > > mitk::TransferFunction::RGBControlPoints

Definition at line 57 of file mitkTransferFunction.h.

Definition at line 60 of file mitkTransferFunction.h.

typedef itk::DataObject mitk::TransferFunction::Superclass

Definition at line 60 of file mitkTransferFunction.h.


Constructor & Destructor Documentation

mitk::TransferFunction::TransferFunction (  ) [protected]
mitk::TransferFunction::~TransferFunction (  ) [protected, virtual]

Definition at line 39 of file mitkTransferFunction.cpp.


Member Function Documentation

void mitk::TransferFunction::AddGradientOpacityPoint ( double  x,
double  value 
)

Add a single control point to the gradient opacity transfer function.

Definition at line 134 of file mitkTransferFunction.cpp.

Referenced by SetRGBPoints().

{ 
void mitk::TransferFunction::AddRGBPoint ( double  x,
double  r,
double  g,
double  b 
)

Add a single control point to the color opacity transfer function.

Definition at line 140 of file mitkTransferFunction.cpp.

References m_GradientOpacityFunction.

Referenced by AddScalarOpacityPoint().

{ 
void mitk::TransferFunction::AddScalarOpacityPoint ( double  x,
double  value 
)

Add a single control point to the scalar opacity transfer function.

Definition at line 128 of file mitkTransferFunction.cpp.

References AddRGBPoint().

Referenced by SetGradientOpacityPoints().

  {
    this->AddRGBPoint(rgbpoints[i].first, rgbpoints[i].second[0], 
void mitk::TransferFunction::ClearGradientOpacityPoints (  )

Removes all control points from the gradient opacity transfer function.

Definition at line 213 of file mitkTransferFunction.cpp.

References m_ScalarOpacityFunction.

{
void mitk::TransferFunction::ClearRGBPoints (  )

Removes all control points from the color transfer function.

Definition at line 219 of file mitkTransferFunction.cpp.

References m_GradientOpacityFunction.

{
void mitk::TransferFunction::ClearScalarOpacityPoints (  )

Removes all control points from the scalar opacity transfer function.

Definition at line 207 of file mitkTransferFunction.cpp.

References m_ColorTransferFunction.

{
virtual const char* mitk::TransferFunction::GetClassName (  ) const [virtual]
virtual vtkColorTransferFunction* mitk::TransferFunction::GetColorTransferFunction (  ) [virtual]

Get/Set wrapped vtk transfer function.

Referenced by mitk::TransferFunctionPropertySerializer::Serialize().

virtual vtkPiecewiseFunction* mitk::TransferFunction::GetGradientOpacityFunction (  ) [virtual]

Get/Set wrapped vtk transfer function.

TransferFunction::ControlPoints & mitk::TransferFunction::GetGradientOpacityPoints (  )

Get a copy of the gradient opacity transfer function control-points.

Definition at line 160 of file mitkTransferFunction.cpp.

Referenced by mitk::TransferFunctionPropertySerializer::Serialize().

  {
    m_ScalarOpacityPoints.push_back( std::make_pair( data[i*2], data[i*2+1] ));
  }

  return m_ScalarOpacityPoints;
}


TransferFunction::ControlPoints &TransferFunction::GetGradientOpacityPoints()
{
  // Retrieve data points from VTK transfer function and store them in a vector
  m_GradientOpacityPoints.clear();
virtual const HistogramGenerator::HistogramType* mitk::TransferFunction::GetHistogram (  ) [virtual]

Get histogram used for transfer function initialization.

virtual int mitk::TransferFunction::GetMax (  ) [virtual]

Get/Set min/max of transfer function range for initialization.

virtual int mitk::TransferFunction::GetMin (  ) [virtual]

Get/Set min/max of transfer function range for initialization.

TransferFunction::RGBControlPoints & mitk::TransferFunction::GetRGBPoints (  )

Get a copy of the color transfer function control-points.

Definition at line 174 of file mitkTransferFunction.cpp.

  {
    m_GradientOpacityPoints.push_back( std::make_pair( data[i*2], data[i*2+1] ));
  }

  return m_GradientOpacityPoints;
}


TransferFunction::RGBControlPoints &TransferFunction::GetRGBPoints()
{
  // Retrieve data points from VTK transfer function and store them in a vector
  m_RGBPoints.clear();
  vtkFloatingPointType *data = m_ColorTransferFunction->GetDataPointer();
virtual vtkPiecewiseFunction* mitk::TransferFunction::GetScalarOpacityFunction (  ) [virtual]

Get/Set wrapped vtk transfer function.

TransferFunction::ControlPoints & mitk::TransferFunction::GetScalarOpacityPoints (  )

Get a copy of the scalar opacity transfer function control-points.

Definition at line 146 of file mitkTransferFunction.cpp.

References m_ColorTransferFunction.

Referenced by mitk::TransferFunctionPropertySerializer::Serialize().

{
  m_ColorTransferFunction->AddRGBPoint(x, r, g, b);
}


TransferFunction::ControlPoints &TransferFunction::GetScalarOpacityPoints()
{
  // Retrieve data points from VTK transfer function and store them in a vector
  m_ScalarOpacityPoints.clear();
void mitk::TransferFunction::InitializeByItkHistogram ( const itk::Statistics::Histogram< double > *  histogram )

Initialize transfer function based on the specified histogram.

Definition at line 225 of file mitkTransferFunction.cpp.

References m_ColorTransferFunction.

{
  m_ColorTransferFunction->RemoveAllPoints();
}


void TransferFunction::InitializeByItkHistogram(
  const itk::Statistics::Histogram<double>* histogram)
{
  m_Histogram = histogram;
  m_Min = (int)GetHistogram()->GetBinMin(0,0);
  m_Max = (int)GetHistogram()->GetBinMax(0, GetHistogram()->Size()-1);
  
  /*
  m_ScalarOpacityFunction->Initialize();
  m_ScalarOpacityFunction->AddPoint(m_Min,0.0);
  m_ScalarOpacityFunction->AddPoint(0.0,0.0);
  m_ScalarOpacityFunction->AddPoint(m_Max,1.0);
  m_GradientOpacityFunction->Initialize();
  m_GradientOpacityFunction->AddPoint(m_Min,0.0);
  m_GradientOpacityFunction->AddPoint(0.0,1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.125),1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.2),1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.25),1.0);
void mitk::TransferFunction::InitializeByMitkImage ( const mitk::Image image )

Initialize transfer function based on the histogram of an mitk::Image.

Definition at line 252 of file mitkTransferFunction.cpp.

                                   :" << m_Min << "/" << m_Max << std::endl;
  */
}

void TransferFunction::InitializeByMitkImage( const Image * image )
{
  HistogramGenerator::Pointer histGen= HistogramGenerator::New();
  histGen->SetImage(image);
  histGen->SetSize(256);
  histGen->ComputeHistogram();
  m_Histogram = histGen->GetHistogram();
  m_Min = (int)GetHistogram()->GetBinMin(0,0);
  m_Max = (int)GetHistogram()->GetBinMax(0, GetHistogram()->Size()-1);
  m_ScalarOpacityFunction->Initialize();
  m_ScalarOpacityFunction->AddPoint(m_Min,0.0);
  m_ScalarOpacityFunction->AddPoint(0.0,0.0);
  m_ScalarOpacityFunction->AddPoint(m_Max,1.0);
  m_GradientOpacityFunction->Initialize();
  m_GradientOpacityFunction->AddPoint(m_Min,0.0);
  m_GradientOpacityFunction->AddPoint(0.0,1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.125),1.0);
  m_GradientOpacityFunction->AddPoint((m_Max*0.2),1.0);
void mitk::TransferFunction::InitializeHistogram ( const mitk::Image image )

Initialize the internal histogram and min/max range based on the specified mitk::Image.

Definition at line 280 of file mitkTransferFunction.cpp.

                                     :" << m_Min << "/" << m_Max << std::endl;
}


void TransferFunction::InitializeHistogram( const Image * image )
{
static Pointer mitk::TransferFunction::New (  ) [static]
bool mitk::TransferFunction::operator== ( Self other )

Definition at line 43 of file mitkTransferFunction.cpp.

{
}

bool TransferFunction::operator==(Self& other)
{
  if ((m_Min != other.m_Min) || (m_Max != other.m_Max))
    return false;
  
  bool sizes = (m_ScalarOpacityFunction->GetSize() == other.m_ScalarOpacityFunction->GetSize())
            && (m_GradientOpacityFunction->GetSize() == other.m_GradientOpacityFunction->GetSize())
            && (m_ColorTransferFunction->GetSize() == other.m_ColorTransferFunction->GetSize());
  if (sizes == false)
    return false;

  for (int i = 0; i < m_ScalarOpacityFunction->GetSize(); i++ )
  {
    double myVal[4];
    double otherVal[4];
    m_ScalarOpacityFunction->GetNodeValue(i, myVal);
    other.m_ScalarOpacityFunction->GetNodeValue(i, otherVal);
    bool equal = (myVal[0] == otherVal[0])
              && (myVal[1] == otherVal[1])
              && (myVal[2] == otherVal[2])
              && (myVal[3] == otherVal[3]);
    if (equal == false)
      return false;
  }
  for (int i = 0; i < m_GradientOpacityFunction->GetSize(); i++ )
  {
    double myVal[4];
    double otherVal[4];
    m_GradientOpacityFunction->GetNodeValue(i, myVal);
    other.m_GradientOpacityFunction->GetNodeValue(i, otherVal);
    bool equal = (myVal[0] == otherVal[0])
      && (myVal[1] == otherVal[1])
      && (myVal[2] == otherVal[2])
      && (myVal[3] == otherVal[3]);
    if (equal == false)
      return false;
  }
  for (int i = 0; i < m_ColorTransferFunction->GetSize(); i++ )
  {
    double myVal[6];
    double otherVal[6];
    m_ColorTransferFunction->GetNodeValue(i, myVal);
    other.m_ColorTransferFunction->GetNodeValue(i, otherVal);
    bool equal = (myVal[0] == otherVal[0]) // X
      && (myVal[1] == otherVal[1])  // R
      && (myVal[2] == otherVal[2])  // G
int mitk::TransferFunction::RemoveGradientOpacityPoint ( double  x )

Remove the specified control point from the gradient opacity transfer function.

Definition at line 195 of file mitkTransferFunction.cpp.

References m_ScalarOpacityFunction.

{
int mitk::TransferFunction::RemoveRGBPoint ( double  x )

Remove the specified control point from the color transfer function.

Definition at line 201 of file mitkTransferFunction.cpp.

References m_GradientOpacityFunction.

{
int mitk::TransferFunction::RemoveScalarOpacityPoint ( double  x )

Remove the specified control point from the scalar opacity transfer function.

Definition at line 189 of file mitkTransferFunction.cpp.

                   { data[i*4+1], data[i*4+2], data[i*4+3] };
    m_RGBPoints.push_back( std::make_pair( data[i*4], rgb ));
  }

void mitk::TransferFunction::SetGradientOpacityPoints ( TransferFunction::ControlPoints  points )

Insert control points and values into the gradient opacity transfer function.

Definition at line 108 of file mitkTransferFunction.cpp.

References AddScalarOpacityPoint().

  {
    this->AddScalarOpacityPoint(points[i].first, points[i].second);
  }
}


virtual void mitk::TransferFunction::SetMax ( int  _arg ) [virtual]

Get/Set min/max of transfer function range for initialization.

virtual void mitk::TransferFunction::SetMin ( int  _arg ) [virtual]

Get/Set min/max of transfer function range for initialization.

void mitk::TransferFunction::SetRGBPoints ( TransferFunction::RGBControlPoints  rgbpoints )

Insert control points and RGB values into the color transfer function.

Definition at line 118 of file mitkTransferFunction.cpp.

References AddGradientOpacityPoint().

  {
    this->AddGradientOpacityPoint(points[i].first, points[i].second);
  }
}


void TransferFunction::SetRGBPoints(TransferFunction::RGBControlPoints rgbpoints)
void mitk::TransferFunction::SetScalarOpacityPoints ( TransferFunction::ControlPoints  points )

Insert control points and values into the scalar opacity transfer function.

Definition at line 98 of file mitkTransferFunction.cpp.


Member Data Documentation

vtkSmartPointer<vtkColorTransferFunction> mitk::TransferFunction::m_ColorTransferFunction [protected]

Wrapped VTK color transfer function

Definition at line 168 of file mitkTransferFunction.h.

Referenced by ClearScalarOpacityPoints(), GetScalarOpacityPoints(), InitializeByItkHistogram(), and TransferFunction().

vtkSmartPointer<vtkPiecewiseFunction> mitk::TransferFunction::m_GradientOpacityFunction [protected]

Wrapped VTK gradient opacity transfer function

Definition at line 165 of file mitkTransferFunction.h.

Referenced by AddRGBPoint(), ClearRGBPoints(), RemoveRGBPoint(), and TransferFunction().

mitk::HistogramGenerator::HistogramType::ConstPointer mitk::TransferFunction::m_Histogram [protected]

Specified or calculated histogram (used for initialization)

Definition at line 177 of file mitkTransferFunction.h.

Current range of transfer function (used for initialization)

Definition at line 174 of file mitkTransferFunction.h.

Current range of transfer function (used for initialization)

Definition at line 171 of file mitkTransferFunction.h.

vtkSmartPointer<vtkPiecewiseFunction> mitk::TransferFunction::m_ScalarOpacityFunction [protected]

Wrapped VTK scalar opacity transfer function

Definition at line 162 of file mitkTransferFunction.h.

Referenced by ClearGradientOpacityPoints(), RemoveGradientOpacityPoint(), and TransferFunction().


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