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. _______________________________________________ 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