void mitk::ContourModelToPointSetFilter::GenerateData()
{
  mitk::ContourModel::Pointer inputContour = static_cast<mitk::ContourModel *>(this->GetInput(0));
  mitk::ContourModelToPointSetFilter::OutputType *outputPointSet = this->GetOutput();

  auto it = inputContour->IteratorBegin();
  auto end = inputContour->IteratorEnd();
  unsigned int pointId = 0;

  std::size_t timestep = inputContour->GetTimeSteps();

  for (std::size_t i = 0; i < timestep; i++)
  {
    while (it <= end)
    {
      mitk::Point3D p = (*it)->Coordinates;
      mitk::PointOperation popInsert(
        mitk::OpINSERT, inputContour->GetTimeGeometry()->TimeStepToTimePoint(timestep), p, pointId++, false);

      outputPointSet->ExecuteOperation(&popInsert);

      it++;
    }
  }
}
void mitk::ContourSetToPointSetFilter::GenerateData()
{
  mitk::ContourSet* input =  (mitk::ContourSet*) (this->GetInput());
  mitk::PointSet::Pointer output = this->GetOutput();

  mitk::ContourSet::ContourVectorType contourVec = input->GetContours();
  mitk::ContourSet::ContourIterator contourIt = contourVec.begin();
  unsigned int pointId = 0;

  while ( contourIt != contourVec.end() )
  {
    mitk::Contour* nextContour = (mitk::Contour*) (*contourIt).second;

    mitk::Contour::InputType idx = nextContour->GetContourPath()->StartOfInput();
    mitk::Contour::OutputType point;
    mitk::Contour::InputType end = nextContour->GetContourPath()->EndOfInput();
    if (end > 50000) end = 0;

    while ( idx <= end )
    {
      point = nextContour->GetContourPath()->Evaluate(idx);
      Contour::BoundingBoxType::PointType p;
      p.CastFrom(point);
      mitk::PointOperation popInsert( mitk::OpINSERT, p, pointId++ );
      mitk::PointOperation popDeactivate( mitk::OpDESELECTPOINT, p , pointId++ );
      output->ExecuteOperation( &popInsert );
      output->ExecuteOperation( &popDeactivate );

      idx+=m_Frequency;
    }
    contourIt++;
  }
}