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; }
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()); }