Hi,

One possible issue - make sure that the image viewer applied is
displaying the correct dynamic range so it does just not appear that
there are only zeros after interpolation. 3D Slicer, ITK-SNAP, etc.
support this.

HTH,
Matt



On Sat, Sep 9, 2017 at 1:49 AM, Pfaehler, EAG (ngmb)
<e.a.g.pfaeh...@umcg.nl> wrote:
> Hey,
>
> thanks. I did this, but it did not change anything. However, I used another 
> image (with some higher intensity values) and then I got an image with only 
> 1s.
>
> Can it be the problem that my images have only values from 0-5?
> I also tried an image with only 0 and 1, but als here I get only zeros after 
> interpolation.
>
> ________________________________________
> Van: Matt McCormick [matt.mccorm...@kitware.com]
> Verzonden: vrijdag 8 september 2017 21:27
> Aan: Pfaehler, EAG (ngmb)
> CC: Samuel Gerber; insight-developers@itk.org
> Onderwerp: Re: [ITK-dev] [ITK] problems itk resample filter
>
> Hi,
>
> The Origin should be the same in the resampled image.
>
> HTH,
> Matt
>
> On Fri, Sep 8, 2017 at 3:12 PM, Pfaehler, EAG (ngmb)
> <e.a.g.pfaeh...@umcg.nl> wrote:
>> Thanks Samuel and Matt for the help. However, it is unfortunatly still not 
>> working.
>>
>> I deleted the line resizeFilter->SetTransform, but unfortunately it did not 
>> change anything.
>>
>> Then I tried to set the direction and the origin. But maybe here is the 
>> problem. I set as direction the same direction as in the original image 
>> because I do not want to have any rotation.
>>
>> But I am a bit insecure how to set the origin. First I set the origin in the 
>> resampled image to the same as in the original image, what did not work.
>> Then I tried different things, e.g
>>
>>         origin[0] = origin[0] + inputSpacing[0] * (newWidth - oldWidth);
>>         origin[1] = origin[1] + inputSpacing[1] * (newHeight - oldHeight);
>>         origin[2] = origin[2] + inputSpacing[2] * (newDepth - oldDepth);
>>
>> where newWidth etc is the width of the new image and oldWidth of the 
>> original image. And origin[0] is the x value of the original origin etc.
>>
>> But this was also not working. ( In all of these cases I get an image full 
>> of zeros.
>>
>> If I make originalImage->Print(std::cout) I get the following:
>>
>> Image (000000000282A800)
>>   RTTI typeinfo:   class itk::Image<float,3>
>>   Reference Count: 3
>>   Modified Time: 705
>>   Debug: Off
>>   Object Name:
>>   Observers:
>>     none
>>   Source: (none)
>>   Source output name: (none)
>>   Release Data: Off
>>   Data Released: False
>>   Global Release Data: Off
>>   PipelineMTime: 692
>>   UpdateMTime: 704
>>   RealTimeStamp: 0 seconds
>>   LargestPossibleRegion:
>>     Dimension: 3
>>     Index: [0, 0, 0]
>>     Size: [11, 11, 19]
>>   BufferedRegion:
>>     Dimension: 3
>>     Index: [0, 0, 0]
>>     Size: [11, 11, 19]
>>   RequestedRegion:
>>     Dimension: 3
>>     Index: [0, 0, 0]
>>     Size: [11, 11, 19]
>>   Spacing: [3.1819, 3.1819, 2]
>>   Origin: [48.5757, -171.979, 20.5]
>>   Direction:
>> 1 0 0
>> 0 1 0
>> 0 0 1
>>
>>   IndexToPointMatrix:
>> 3.1819 0 0
>> 0 3.1819 0
>> 0 0 2
>>
>>   PointToIndexMatrix:
>> 0.314278 0 0
>> 0 0.314278 0
>> 0 0 0.5
>>
>>   Inverse Direction:
>> 1 0 0
>> 0 1 0
>> 0 0 1
>>
>>   PixelContainer:
>>     ImportImageContainer (00000000027B59F0)
>>       RTTI typeinfo:   class itk::ImportImageContainer<unsigned 
>> __int64,float>
>>       Reference Count: 1
>>       Modified Time: 701
>>       Debug: Off
>>       Object Name:
>>       Observers:
>>         none
>>       Pointer: 00000000028542E0
>>       Container manages memory: true
>>       Size: 2299
>>       Capacity: 2299
>>
>> If I do the same for the resampled image I get:
>>
>> Image (000000000282B100)
>>   RTTI typeinfo:   class itk::Image<float,3>
>>   Reference Count: 2
>>   Modified Time: 11626
>>   Debug: Off
>>   Object Name:
>>   Observers:
>>     none
>>   Source: (000000000282BB80)
>>   Source output name: Primary
>>   Release Data: Off
>>   Data Released: False
>>   Global Release Data: Off
>>   PipelineMTime: 11614
>>   UpdateMTime: 11627
>>   RealTimeStamp: 0 seconds
>>   LargestPossibleRegion:
>>     Dimension: 3
>>     Index: [0, 0, 0]
>>     Size: [17, 17, 19]
>>   BufferedRegion:
>>     Dimension: 3
>>     Index: [0, 0, 0]
>>     Size: [17, 17, 19]
>>   RequestedRegion:
>>     Dimension: 3
>>     Index: [0, 0, 0]
>>     Size: [17, 17, 19]
>>   Spacing: [2, 2, 2]
>>   Origin: [67.6671, -152.888, 20.5]
>>   Direction:
>> 1 0 0
>> 0 1 0
>> 0 0 1
>>
>>   IndexToPointMatrix:
>> 2 0 0
>> 0 2 0
>> 0 0 2
>>
>>   PointToIndexMatrix:
>> 0.5 0 0
>> 0 0.5 0
>> 0 0 0.5
>>
>>   Inverse Direction:
>> 1 0 0
>> 0 1 0
>> 0 0 1
>>
>>   PixelContainer:
>>     ImportImageContainer (00000000027B5EC0)
>>       RTTI typeinfo:   class itk::ImportImageContainer<unsigned 
>> __int64,float>
>>       Reference Count: 1
>>       Modified Time: 11625
>>       Debug: Off
>>       Object Name:
>>       Observers:
>>         none
>>       Pointer: 0000000002A8D520
>>       Container manages memory: true
>>       Size: 5491
>>       Capacity: 5491
>>
>> Does that maybe help to find out whats going wrong?
>>
>> Thanks in advance
>>
>>
>>
>> ________________________________________
>> Van: Matt McCormick [matt.mccorm...@kitware.com]
>> Verzonden: vrijdag 8 september 2017 15:32
>> Aan: Pfaehler, EAG (ngmb)
>> CC: Samuel Gerber; insight-developers@itk.org
>> Onderwerp: Re: [ITK-dev] [ITK] problems itk resample filter
>>
>> Hi Elli,
>>
>> The OutputOrigin and OutputDirection may need to be set so the
>> sampling grids overlap.
>>
>> HTH,
>> Matt
>>
>> On Fri, Sep 8, 2017 at 9:13 AM, Pfaehler, EAG (ngmb)
>> <e.a.g.pfaeh...@umcg.nl> wrote:
>>> Thanks, I did this. Now I get an image, with the desired size, but there all
>>> image values are 0. I get the same when I use linear interpolation…
>>>
>>> Does someone know, what could be the reason?
>>>
>>>
>>>
>>> Thanks in advance,
>>>
>>>
>>>
>>> Regards
>>>
>>>
>>>
>>> Elli
>>>
>>>
>>>
>>> Van: Samuel Gerber [mailto:samuel.ger...@kitware.com]
>>> Verzonden: vrijdag 8 september 2017 14:51
>>> Aan: Pfaehler, EAG (ngmb)
>>> CC: insight-developers@itk.org
>>> Onderwerp: Re: [ITK] [ITK-dev] problems itk resample filter
>>>
>>>
>>>
>>> I believe you might need to call resizeFilter2->Update()
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Sep 8, 2017 at 8:32 AM, Pfaehler, EAG (ngmb)
>>> <e.a.g.pfaeh...@umcg.nl> wrote:
>>>
>>> Dear all,
>>>
>>>
>>>
>>> I would need some help to resample so that it has isotropic voxels in the
>>> end.
>>>
>>> For this, I wanted to use the Nearest Neighbor Interpolator and the
>>> ResampleFilterType.
>>>
>>> My code is running, but the output of the filter has always the dimensions
>>> [0 0 0], so is not existent.
>>>
>>> What am I doing wrong? (see code below)
>>>
>>>
>>>
>>> Thanks in advance!
>>>
>>> Elli
>>>
>>>
>>>
>>> typedef itk::NearestNeighborInterpolateImageFunction<ImageType, T>
>>> NearestNeighborInterpolatorType;
>>>
>>> typedef itk::ResampleImageFilter<ImageType, ImageType>
>>> ResampleFilterType;
>>>
>>> typedef itk::AffineTransform <double, 3> TransformType;
>>>
>>> //use nearest neighbor interpolation
>>>
>>> typename NearestNeighborInterpolatorType::Pointer
>>> nearestNeighborInterpolator = NearestNeighborInterpolatorType::New();
>>>
>>> typename ImageType::DirectionType direction;
>>>
>>> typename TransformType::Pointer transform = TransformType::New();
>>>
>>>     //transform->SetIdentity();
>>>
>>> typedef itk::NearestNeighborInterpolateImageFunction<ImageType, double>
>>> InterpolatorType;
>>>
>>> //typedef itk::LinearInterpolateImageFunction<ImageType, double >
>>> InterpolatorType;
>>>
>>> typename InterpolatorType::Pointer interpolator = InterpolatorType::New();
>>>
>>>
>>>
>>> typename ResampleFilterType::Pointer resizeFilter2 =
>>> ResampleFilterType::New();
>>>
>>> resizeFilter2->SetTransform(transform);
>>>
>>>
>>>
>>> resizeFilter2->SetInterpolator( interpolator );
>>>
>>> resizeFilter2->SetDefaultPixelValue(0);
>>>
>>>     //resizeFilter2->SetInterpolator();
>>>
>>>
>>>
>>> const typename ImageType::SpacingType& inputSpacing = image->GetSpacing();
>>>
>>> //sampling
>>>
>>> double outputSpacing[3];
>>>
>>>     // Fetch original image size
>>>
>>>    const typename ImageType::RegionType& inputRegion =
>>> image->GetLargestPossibleRegion();
>>>
>>>    const typename ImageType::SizeType& inputSize = inputRegion.GetSize();
>>>
>>>     unsigned int oldWidth = inputSize[0];
>>>
>>>     unsigned int oldHeight = inputSize[1];
>>>
>>>     unsigned int oldDepth = inputSize[2];
>>>
>>>     unsigned int newWidth;
>>>
>>>     unsigned int newHeight;
>>>
>>>     unsigned int newDepth;
>>>
>>>        //get the new height etc of image
>>>
>>>        double minimum = inputSpacing[0];
>>>
>>>        if (inputSpacing[1]<minimum){
>>>
>>>            minimum = inputSpacing[1];
>>>
>>>        }
>>>
>>>        if (inputSpacing[2] < minimum){
>>>
>>>            minimum = inputSpacing[2];
>>>
>>>        }
>>>
>>>        outputSpacing[0] = minimum;
>>>
>>>        outputSpacing[1] = minimum;
>>>
>>>        outputSpacing[2] = minimum;
>>>
>>>        newWidth = (double) oldWidth * inputSpacing[0]/minimum;
>>>
>>>        ewHeight = (double) oldHeight * inputSpacing[1]/minimum;
>>>
>>>        newDepth = (double) oldDepth * inputSpacing[2]/minimum;
>>>
>>>        // Set the output spacing as specified on the command line
>>>
>>>       resizeFilter2->SetOutputSpacing(outputSpacing);
>>>
>>>     // Set the computed size
>>>
>>>     itk::Size<3> outputSize = { {newWidth, newHeight, newDepth} };
>>>
>>>     resizeFilter2->SetSize(outputSize);
>>>
>>>     // Specify the input for the resamplers
>>>
>>>     resizeFilter2->SetInput(image);
>>>
>>>     ImageType::Pointer imageNew = resizeFilter2->GetOutput();
>>>
>>>    const typename ImageType::RegionType& outputRegion =
>>> imageNew->GetLargestPossibleRegion();
>>>
>>>        const typename ImageType::SizeType& outputSize2 =
>>> outputRegion.GetSize();
>>>
>>>
>>>
>>> ________________________________
>>>
>>> De inhoud van dit bericht is vertrouwelijk en alleen bestemd voor de
>>> geadresseerde(n). Anderen dan de geadresseerde(n) mogen geen gebruik maken
>>> van dit bericht, het niet openbaar maken of op enige wijze verspreiden of
>>> vermenigvuldigen. Het UMCG kan niet aansprakelijk gesteld worden voor een
>>> incomplete aankomst of vertraging van dit verzonden bericht.
>>>
>>> The contents of this message are confidential and only intended for the eyes
>>> of the addressee(s). Others than the addressee(s) are not allowed to use
>>> this message, to make it public or to distribute or multiply this message in
>>> any way. The UMCG cannot be held responsible for incomplete reception or
>>> delay of this transferred message.
>>>
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://kitware.com/products/protraining.php
>>>
>>> Please keep messages on-topic and check the ITK FAQ at:
>>> http://www.itk.org/Wiki/ITK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/insight-developers
>>>
>>> _______________________________________________
>>> Community mailing list
>>> commun...@itk.org
>>> http://public.kitware.com/mailman/listinfo/community
>>>
>>>
>>>
>>>
>>>
>>> --
>>>
>>> Samuel Gerber
>>> R&D Engineer
>>> Kitware, Inc.
>>>
>>> ________________________________
>>> De inhoud van dit bericht is vertrouwelijk en alleen bestemd voor de
>>> geadresseerde(n). Anderen dan de geadresseerde(n) mogen geen gebruik maken
>>> van dit bericht, het niet openbaar maken of op enige wijze verspreiden of
>>> vermenigvuldigen. Het UMCG kan niet aansprakelijk gesteld worden voor een
>>> incomplete aankomst of vertraging van dit verzonden bericht.
>>>
>>> The contents of this message are confidential and only intended for the eyes
>>> of the addressee(s). Others than the addressee(s) are not allowed to use
>>> this message, to make it public or to distribute or multiply this message in
>>> any way. The UMCG cannot be held responsible for incomplete reception or
>>> delay of this transferred message.
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://kitware.com/products/protraining.php
>>>
>>> Please keep messages on-topic and check the ITK FAQ at:
>>> http://www.itk.org/Wiki/ITK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/insight-developers
>>>
>> ________________________________
>>  De inhoud van dit bericht is vertrouwelijk en alleen bestemd voor de 
>> geadresseerde(n). Anderen dan de geadresseerde(n) mogen geen gebruik maken 
>> van dit bericht, het niet openbaar maken of op enige wijze verspreiden of 
>> vermenigvuldigen. Het UMCG kan niet aansprakelijk gesteld worden voor een 
>> incomplete aankomst of vertraging van dit verzonden bericht.
>>
>> The contents of this message are confidential and only intended for the eyes 
>> of the addressee(s). Others than the addressee(s) are not allowed to use 
>> this message, to make it public or to distribute or multiply this message in 
>> any way. The UMCG cannot be held responsible for incomplete reception or 
>> delay of this transferred message.
> ________________________________
>  De inhoud van dit bericht is vertrouwelijk en alleen bestemd voor de 
> geadresseerde(n). Anderen dan de geadresseerde(n) mogen geen gebruik maken 
> van dit bericht, het niet openbaar maken of op enige wijze verspreiden of 
> vermenigvuldigen. Het UMCG kan niet aansprakelijk gesteld worden voor een 
> incomplete aankomst of vertraging van dit verzonden bericht.
>
> The contents of this message are confidential and only intended for the eyes 
> of the addressee(s). Others than the addressee(s) are not allowed to use this 
> message, to make it public or to distribute or multiply this message in any 
> way. The UMCG cannot be held responsible for incomplete reception or delay of 
> this transferred message.
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-developers

Reply via email to