void mitk::ImageLiveWireContourModelFilter::ItkPreProcessImage (const itk::Image<TPixel, VImageDimension>* inputImage)
{
  typedef itk::Image< TPixel, VImageDimension >                      InputImageType;
  typedef itk::CastImageFilter< InputImageType, InternalImageType >  CastFilterType;

  typename CastFilterType::Pointer castFilter = CastFilterType::New();
  castFilter->SetInput(inputImage);
  castFilter->Update();
  m_InternalImage = castFilter->GetOutput();
  m_CostFunction->SetImage( m_InternalImage );
  m_ShortestPathFilter->SetInput( m_InternalImage );
}
dtkSmartPointer<medAbstractData> itkFiltersComponentSizeThresholdProcess::castToOutputType(medAbstractData* inputData)
{
    //we will later label the image so we don't care about precision.
    typedef itk::CastImageFilter< InputImageType, OutputImageType > CastFilterType;

    typename CastFilterType::Pointer  caster = CastFilterType::New();
    typename InputImageType::Pointer im = static_cast<InputImageType*>(inputData->data());
    caster->SetInput(im);
    caster->Update();

    dtkSmartPointer<medAbstractData> outputData = medAbstractDataFactory::instance()->createSmartPointer(medUtilitiesITK::itkDataImageId<OutputImageType>());
    outputData->setData(caster->GetOutput());

    return outputData;
}
Пример #3
0
void
  mitk::ModelSignalImageGenerator::DoPrepareMask(itk::Image<TPixel, VDim>* image)
{
  m_InternalMask = dynamic_cast<InternalMaskType*>(image);

  if (m_InternalMask.IsNull())
  {
    MITK_INFO << "Parameter Fit Generator. Need to cast mask for parameter fit.";
    typedef itk::Image<TPixel, VDim> InputImageType;
    typedef itk::CastImageFilter< InputImageType, InternalMaskType > CastFilterType;
    typename CastFilterType::Pointer  spImageCaster =  CastFilterType::New();

    spImageCaster->SetInput(image);

    m_InternalMask = spImageCaster->GetOutput();
    spImageCaster->Update();
  }
}
      void PartialVolumeAnalysisClusteringCalculator::InternalQuantify(
          const itk::Image< TPixel, VImageDimension > *image,
          mitk::Image::Pointer clusteredImage, double* retval, mitk::Image::Pointer mask ) const
  {
    typedef itk::Image< TPixel, VImageDimension > ImageType;
    typedef itk::Image< float, VImageDimension > ProbImageType;
    typedef itk::Image< unsigned char, VImageDimension > MaskImageType;

    typedef mitk::ImageToItk<ProbImageType> CastFilterType;
    typename CastFilterType::Pointer castFilter = CastFilterType::New();
    castFilter->SetInput( clusteredImage );
    castFilter->Update();
    typename ProbImageType::Pointer clusterImage = castFilter->GetOutput();

    typename MaskImageType::Pointer itkmask = 0;
    if(mask.IsNotNull())
    {
      typedef mitk::ImageToItk<MaskImageType> CastFilterType2;
      typename CastFilterType2::Pointer castFilter2 = CastFilterType2::New();
      castFilter2->SetInput( mask );
      castFilter2->Update();
      itkmask = castFilter2->GetOutput();
    }
    else
    {
      itkmask = MaskImageType::New();
      itkmask->SetSpacing( clusterImage->GetSpacing() );   // Set the image spacing
      itkmask->SetOrigin( clusterImage->GetOrigin() );     // Set the image origin
      itkmask->SetDirection( clusterImage->GetDirection() );  // Set the image direction
      itkmask->SetRegions( clusterImage->GetLargestPossibleRegion() );
      itkmask->Allocate();
      itkmask->FillBuffer(1);
    }

    itk::ImageRegionConstIterator<ImageType>
        itimage(image, image->GetLargestPossibleRegion());

    itk::ImageRegionConstIterator<ProbImageType>
        itprob(clusterImage, clusterImage->GetLargestPossibleRegion());

    itk::ImageRegionConstIterator<MaskImageType>
        itmask(itkmask, itkmask->GetLargestPossibleRegion());

    itimage.GoToBegin();
    itprob.GoToBegin();
    itmask.GoToBegin();

    double totalProb = 0;
    double measurement = 0;
    double error = 0;

    while( !itimage.IsAtEnd() && !itprob.IsAtEnd() && !itmask.IsAtEnd() )
    {
      double valImag = itimage.Get();
      double valProb = itprob.Get();
      double valMask = itmask.Get();

      typename ProbImageType::PixelType prop = valProb * valMask;

      totalProb   += prop;
      measurement += valImag * prop;
      error       += valImag * valImag * prop;

      ++itimage;
      ++itprob;
      ++itmask;
    }

    measurement = measurement / totalProb;
    error       = error       / totalProb;
    retval[0]   = measurement;
    retval[1]   = sqrt( error - measurement*measurement );

  }
  void PartialVolumeAnalysisClusteringCalculator::InternalGenerateRGB( HelperStructRGBChannels *rgbin, mitk::Image::Pointer retval ) const
  {
    typedef itk::Image< float, VImageDimension > ProbImageType;
    typedef itk::Image< typename itk::RGBAPixel<unsigned char>, VImageDimension > RGBImageType;

    typedef mitk::ImageToItk<ProbImageType> CastFilterType;
    typename CastFilterType::Pointer castFilter = CastFilterType::New();
    castFilter->SetInput( rgbin->r );
    castFilter->Update();

    typename ProbImageType::Pointer r = castFilter->GetOutput();

    castFilter = CastFilterType::New();
    castFilter->SetInput( rgbin->g );
    castFilter->Update();
    typename ProbImageType::Pointer g = castFilter->GetOutput();

    typename RGBImageType::Pointer rgb = RGBImageType::New();
    rgb->SetSpacing( g->GetSpacing() );   // Set the image spacing
    rgb->SetOrigin( g->GetOrigin() );     // Set the image origin
    rgb->SetDirection( g->GetDirection() );  // Set the image direction
    rgb->SetRegions( g->GetLargestPossibleRegion() );
    rgb->Allocate();

    itk::ImageRegionConstIterator<ProbImageType>
        itr(r, r->GetLargestPossibleRegion());
    itk::ImageRegionConstIterator<ProbImageType>
        itg(g, g->GetLargestPossibleRegion());

    itk::ImageRegionIterator<RGBImageType>
        itrgb(rgb, rgb->GetLargestPossibleRegion());

    itr.GoToBegin();
    itg.GoToBegin();

    float maxr = 0;
    float maxg = 0;

    while( !itr.IsAtEnd() )
    {
      typename ProbImageType::PixelType pr = itr.Get();
      typename ProbImageType::PixelType pg = itg.Get();

      if(pr > maxr)
      {
        maxr = pr;
      }

      if(pg > maxg)
      {
        maxg = pg;
      }

      ++itr;
      ++itg;
    }

    itr.GoToBegin();
    itg.GoToBegin();
    itrgb.GoToBegin();

    while( !itr.IsAtEnd() )
    {
      typename ProbImageType::PixelType pr = itr.Get();
      typename ProbImageType::PixelType pg = itg.Get();

      typename RGBImageType::PixelType prgb;

      float valr = (pr/maxr)*255.0f;
      float valg = (pg/maxg)*255.0f;
      float alpha = valr>valg ? valr : valg;
      prgb.Set(valr, valg, 0.0f, alpha);

      itrgb.Set(prgb);

      ++itr;
      ++itg;
      ++itrgb;
    }

    retval->InitializeByItk(rgb.GetPointer());
    retval->SetVolume(rgb->GetBufferPointer());

  }