コード例 #1
0
mitk::ImageMappingHelper::ResultImageType::Pointer
  mitk::ImageMappingHelper::map(const InputImageType* input, const RegistrationType* registration,
  bool throwOnOutOfInputAreaError, const double& paddingValue, const ResultImageGeometryType* resultGeometry,
  bool throwOnMappingError, const double& errorValue, mitk::ImageMappingInterpolator::Type interpolatorType)
{
  if (!registration)
  {
    mitkThrow() << "Cannot map image. Passed registration wrapper pointer is NULL.";
  }
  if (!input)
  {
    mitkThrow() << "Cannot map image. Passed image pointer is NULL.";
  }

  ResultImageType::Pointer result;

  if(input->GetTimeSteps()==1)
  { //map the image and done
    AccessByItk_n(input, doMITKMap, (result, registration, throwOnOutOfInputAreaError, paddingValue, resultGeometry, throwOnMappingError, errorValue, interpolatorType));
  }
  else
  { //map every time step and compose

    mitk::TimeGeometry::ConstPointer timeGeometry = input->GetTimeGeometry();
    mitk::TimeGeometry::Pointer mappedTimeGeometry = timeGeometry->Clone();

    for (unsigned int i = 0; i<input->GetTimeSteps(); ++i)
    {
      ResultImageGeometryType::Pointer mappedGeometry = resultGeometry->Clone();
      mappedTimeGeometry->SetTimeStepGeometry(mappedGeometry,i);
    }

    result = mitk::Image::New();
    result->Initialize(input->GetPixelType(),*mappedTimeGeometry, 1, input->GetTimeSteps());

    for (unsigned int i = 0; i<input->GetTimeSteps(); ++i)
    {
      mitk::ImageTimeSelector::Pointer imageTimeSelector = mitk::ImageTimeSelector::New();
      imageTimeSelector->SetInput(input);
      imageTimeSelector->SetTimeNr(i);
      imageTimeSelector->UpdateLargestPossibleRegion();

      InputImageType::Pointer timeStepInput = imageTimeSelector->GetOutput();
      ResultImageType::Pointer timeStepResult;
      AccessByItk_n(timeStepInput, doMITKMap, (timeStepResult, registration, throwOnOutOfInputAreaError, paddingValue, resultGeometry, throwOnMappingError, errorValue, interpolatorType));
      result->SetVolume(timeStepResult->GetVolumeData()->GetData(),i);
    }
  }

  return result;
}
コード例 #2
0
void mitk::BinaryThresholdULTool::UpdatePreview()
{
  mitk::Image::Pointer thresholdImage = dynamic_cast<mitk::Image*> (m_NodeForThresholding->GetData());
  mitk::Image::Pointer previewImage = dynamic_cast<mitk::Image*> (m_ThresholdFeedbackNode->GetData());
  if(thresholdImage && previewImage)
  {
    for (unsigned int timeStep = 0; timeStep < thresholdImage->GetTimeSteps(); ++timeStep)
    {
      ImageTimeSelector::Pointer timeSelector = ImageTimeSelector::New();
      timeSelector->SetInput( thresholdImage );
      timeSelector->SetTimeNr( timeStep );
      timeSelector->UpdateLargestPossibleRegion();
      Image::Pointer feedBackImage3D = timeSelector->GetOutput();

      AccessByItk_n(feedBackImage3D, ITKThresholding, (previewImage, m_CurrentLowerThresholdValue, m_CurrentUpperThresholdValue, timeStep));
    }
    RenderingManager::GetInstance()->RequestUpdateAll();
  }
}
コード例 #3
0
ファイル: mitkHistogramGenerator.cpp プロジェクト: 0r/MITK
void mitk::HistogramGenerator::ComputeHistogram()
{
  if((m_Histogram.IsNull()) || (m_Histogram->GetMTime() < m_Image->GetMTime()))
  {
    const_cast<mitk::Image*>(m_Image.GetPointer())->SetRequestedRegionToLargestPossibleRegion(); //@todo without this, Image::GetScalarMin does not work for dim==3 (including sliceselector!)
    const_cast<mitk::Image*>(m_Image.GetPointer())->Update();
    mitk::ImageTimeSelector::Pointer timeSelector=mitk::ImageTimeSelector::New();
    timeSelector->SetInput(m_Image);
    timeSelector->SetTimeNr( 0 );
    timeSelector->UpdateLargestPossibleRegion();
    AccessByItk_n( timeSelector->GetOutput() , InternalCompute, (this, m_Histogram));
  }

// debug code
  /*
    MITK_INFO << "Histogram modfied 1" << m_Histogram->GetMTime() << std::endl;
    m_Histogram->Modified();
    MITK_INFO << "Histogram modfied 2" << m_Histogram->GetMTime() << std::endl;
    MITK_INFO << "Image modfied" << m_Image->GetMTime() << std::endl;
  const unsigned int histogramSize = m_Histogram->Size();

  MITK_INFO << "Histogram size " << histogramSize << std::endl;

  HistogramType::ConstIterator itr = GetHistogram()->Begin();
  HistogramType::ConstIterator end = GetHistogram()->End();

  int bin = 0;
  while( itr != end )
    {
    MITK_INFO << "bin = " << GetHistogram()->GetBinMin(0,bin) << "--" << GetHistogram()->GetBinMax(0,bin) << " frequency = ";
    MITK_INFO << itr.GetFrequency() << std::endl;
    ++itr;
    ++bin;
    }
    */
}
コード例 #4
0
mitk::Image::Pointer mitk::ArithmeticOperation::Log10(Image::Pointer & imageA, bool outputAsDouble)
{
  mitk::Image::Pointer resultImage;
  AccessByItk_n(imageA, ExecuteOneImageFilter, (0.0, outputAsDouble, true, true, NonStaticArithmeticOperation::OperationsEnum::Log10, resultImage));
  return resultImage;
}
コード例 #5
0
mitk::Image::Pointer mitk::ArithmeticOperation::Divide(double value, Image::Pointer & imageA, bool outputAsDouble)
{
  mitk::Image::Pointer resultImage;
  AccessByItk_n(imageA, ExecuteOneImageFilter, (value, outputAsDouble, true, false, NonStaticArithmeticOperation::OperationsEnum::DivValue, resultImage));
  return resultImage;
}