本文整理汇总了C++中mitk::image::Pointer::InitializeByItk方法的典型用法代码示例。如果您正苦于以下问题:C++ Pointer::InitializeByItk方法的具体用法?C++ Pointer::InitializeByItk怎么用?C++ Pointer::InitializeByItk使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mitk::image::Pointer
的用法示例。
在下文中一共展示了Pointer::InitializeByItk方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
ResampleImage(itk::Image<TPixel, VImageDimension>* itkImage, float resolution, mitk::Image::Pointer& newImage)
{
typedef itk::Image<TPixel, VImageDimension> ImageType;
typedef itk::ResampleImageFilter<ImageType, ImageType> ResampleFilterType;
typename ResampleFilterType::Pointer resampler = ResampleFilterType::New();
auto spacing = itkImage->GetSpacing();
auto size = itkImage->GetLargestPossibleRegion().GetSize();
for (unsigned int i = 0; i < VImageDimension; ++i)
{
size[i] = size[i] / (1.0*resolution)*(1.0*spacing[i])+1.0;
}
spacing.Fill(resolution);
resampler->SetInput(itkImage);
resampler->SetSize(size);
resampler->SetOutputSpacing(spacing);
resampler->SetOutputOrigin(itkImage->GetOrigin());
resampler->SetOutputDirection(itkImage->GetDirection());
resampler->Update();
newImage->InitializeByItk(resampler->GetOutput());
mitk::GrabItkImageMemory(resampler->GetOutput(), newImage);
}
示例2: imageIter
static void
CreateNoNaNMask(itk::Image<TPixel, VImageDimension>* itkValue, mitk::Image::Pointer mask, mitk::Image::Pointer& newMask)
{
typedef itk::Image< TPixel, VImageDimension> LFloatImageType;
typedef itk::Image< unsigned short, VImageDimension> LMaskImageType;
typename LMaskImageType::Pointer itkMask = LMaskImageType::New();
mitk::CastToItkImage(mask, itkMask);
typedef itk::ImageDuplicator< LMaskImageType > DuplicatorType;
typename DuplicatorType::Pointer duplicator = DuplicatorType::New();
duplicator->SetInputImage(itkMask);
duplicator->Update();
auto tmpMask = duplicator->GetOutput();
itk::ImageRegionIterator<LMaskImageType> mask1Iter(itkMask, itkMask->GetLargestPossibleRegion());
itk::ImageRegionIterator<LMaskImageType> mask2Iter(tmpMask, tmpMask->GetLargestPossibleRegion());
itk::ImageRegionIterator<LFloatImageType> imageIter(itkValue, itkValue->GetLargestPossibleRegion());
while (!mask1Iter.IsAtEnd())
{
mask2Iter.Set(0);
if (mask1Iter.Value() > 0)
{
// Is not NaN
if (imageIter.Value() == imageIter.Value())
{
mask2Iter.Set(1);
}
}
++mask1Iter;
++mask2Iter;
++imageIter;
}
newMask->InitializeByItk(tmpMask);
mitk::GrabItkImageMemory(tmpMask, newMask);
}
示例3: InternalGenerateQuantileImage
void PartialVolumeAnalysisClusteringCalculator::InternalGenerateQuantileImage(
const itk::Image< TPixel, VImageDimension > *image, double* q,
mitk::Image::Pointer outImage1, mitk::Image::Pointer outImage2 ) const
{
typedef itk::Image< TPixel, VImageDimension > ImageType;
typedef itk::Image< itk::RGBAPixel<unsigned char>, VImageDimension > DisplayImageType;
typedef itk::Image< float, VImageDimension > ProbImageType;
typename ProbImageType::Pointer probimage = ProbImageType::New();
probimage->SetSpacing( image->GetSpacing() ); // Set the image spacing
probimage->SetOrigin( image->GetOrigin() ); // Set the image origin
probimage->SetDirection( image->GetDirection() ); // Set the image direction
probimage->SetRegions( image->GetLargestPossibleRegion() );
probimage->Allocate();
probimage->FillBuffer(0);
typename DisplayImageType::Pointer displayimage = DisplayImageType::New();
displayimage->SetSpacing( image->GetSpacing() ); // Set the image spacing
displayimage->SetOrigin( image->GetOrigin() ); // Set the image origin
displayimage->SetDirection( image->GetDirection() ); // Set the image direction
displayimage->SetRegions( image->GetLargestPossibleRegion() );
displayimage->Allocate();
typename DisplayImageType::PixelType rgba;
rgba.Set(0.0f, 0.0f, 0.0f, 0.0f);
displayimage->FillBuffer(rgba);
itk::ImageRegionConstIterator<ImageType>
itimage(image, image->GetLargestPossibleRegion());
itk::ImageRegionIterator<ProbImageType>
itprob(probimage, probimage->GetLargestPossibleRegion());
itk::ImageRegionIterator<DisplayImageType>
itdisp(displayimage, displayimage->GetLargestPossibleRegion());
itimage.GoToBegin();
itprob.GoToBegin();
while( !itimage.IsAtEnd() )
{
if(itimage.Get() > q[0] && itimage.Get() < q[1])
{
itprob.Set(1.0f);
}
++itimage;
++itprob;
}
itprob.GoToBegin();
itdisp.GoToBegin();
while( !itprob.IsAtEnd() )
{
if(itprob.Get())
{
typename DisplayImageType::PixelType rgba;
rgba.Set(255.0f, 0.0f, 0.0f, 255.0f);
itdisp.Set( rgba );
}
++itprob;
++itdisp;
}
outImage1->InitializeByItk(probimage.GetPointer());
outImage1->SetVolume(probimage->GetBufferPointer());
outImage2->InitializeByItk(displayimage.GetPointer());
outImage2->SetVolume(displayimage->GetBufferPointer());
}
示例4: InternalGenerateProbabilityImage
void PartialVolumeAnalysisClusteringCalculator::InternalGenerateProbabilityImage(
const itk::Image< TPixel, VImageDimension > *image,
const HelperStructClusteringResults clusterResults,
mitk::Image::Pointer outImage1, mitk::Image::Pointer outImage2 ) const
{
typedef itk::Image< TPixel, VImageDimension > ImageType;
typedef itk::Image< itk::RGBAPixel<unsigned char>, VImageDimension > DisplayImageType;
typedef itk::Image< float, VImageDimension > ProbImageType;
typename ProbImageType::Pointer probimage = ProbImageType::New();
probimage->SetSpacing( image->GetSpacing() ); // Set the image spacing
probimage->SetOrigin( image->GetOrigin() ); // Set the image origin
probimage->SetDirection( image->GetDirection() ); // Set the image direction
probimage->SetRegions( image->GetLargestPossibleRegion() );
probimage->Allocate();
probimage->FillBuffer(0);
typename DisplayImageType::Pointer displayimage = DisplayImageType::New();
displayimage->SetSpacing( image->GetSpacing() ); // Set the image spacing
displayimage->SetOrigin( image->GetOrigin() ); // Set the image origin
displayimage->SetDirection( image->GetDirection() ); // Set the image direction
displayimage->SetRegions( image->GetLargestPossibleRegion() );
displayimage->Allocate();
typename DisplayImageType::PixelType rgba;
rgba.Set(0.0f, 0.0f, 0.0f, 0.0f);
displayimage->FillBuffer(rgba);
itk::ImageRegionConstIterator<ImageType>
itimage(image, image->GetLargestPossibleRegion());
itk::ImageRegionIterator<ProbImageType>
itprob(probimage, probimage->GetLargestPossibleRegion());
itk::ImageRegionIterator<DisplayImageType>
itdisp(displayimage, displayimage->GetLargestPossibleRegion());
itimage.GoToBegin();
itprob.GoToBegin();
MitkHistType::IndexType index(1);
float maxp = 0;
while( !itimage.IsAtEnd() )
{
if(itimage.Get())
{
MitkHistType::MeasurementVectorType meas(1);
meas.Fill(itimage.Get());
double aposteriori = 0;
bool success = clusterResults.interestingHist->GetIndex(meas, index );
if(success)
{
double aprioriProb = clusterResults.interestingHist->GetFrequency(index);
double intensityProb = clusterResults.totalHist->GetFrequency(index);
double p_interesting = clusterResults.p_interesting;
aposteriori = p_interesting * aprioriProb / intensityProb;
}
else
{
MITK_ERROR << "index not found in histogram";
}
if(aposteriori > 0.0000000000000001)
{
itprob.Set( aposteriori );
maxp = aposteriori > maxp ? aposteriori : maxp;
}
else
{
itprob.Set(0.0f);
}
}
++itimage;
++itprob;
}
itprob.GoToBegin();
itdisp.GoToBegin();
while( !itprob.IsAtEnd() )
{
if(itprob.Get())
{
typename DisplayImageType::PixelType rgba;
rgba.Set(255.0f, 0.0f, 0.0f, 255.0f*(itprob.Get()/maxp));
itdisp.Set( rgba );
}
++itprob;
++itdisp;
}
outImage1->InitializeByItk(probimage.GetPointer());
outImage1->SetVolume(probimage->GetBufferPointer());
outImage2->InitializeByItk(displayimage.GetPointer());
outImage2->SetVolume(displayimage->GetBufferPointer());
}
示例5: InternalGenerateRGB
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());
}