[Insight-users] downsampling a 3D volume

Bill Lorensen bill.lorensen at gmail.com
Thu Apr 1 16:59:48 EDT 2010


Look at:
Insight/Examples/Filtering/SubsampleVolume.cxx

I think you will be pleased...

Bill

On Thu, Apr 1, 2010 at 4:55 PM, Reda, Fitsum A <fitecx at gmail.com> wrote:
> Exactly, I wanted to produce downsampled volumes with no aliasing effects.
> Is there a way to fo this in itk, for instance using gaussian filters?
> Thanks a lot, all.
> Fitsum
> On Thu, Apr 1, 2010 at 3:09 PM, Bill Lorensen <bill.lorensen at gmail.com>
> wrote:
>>
>> I think that fitsum wants to produce an image with fewer pixels.
>> http://en.wikipedia.org/wiki/Downsampling
>>
>> On Wed, Mar 31, 2010 at 9:23 AM, michiel mentink
>> <michael.mentink at st-hughs.ox.ac.uk> wrote:
>> >>>I think that only changes the spacing of the image artificially and
>> >>> does
>> >>> not change the image size and its contents.
>> >
>> > I think changing the pixel spacing does change the image size. There is
>> > no
>> > property attached to an image that gives it
>> > "image size".
>> > The image size is calculated by multiplying pixelspacing with the number
>> > of
>> > pixels.
>> >
>> > When you use a linear interpolator, you inherently apply a low-pass
>> > filter
>> > to your pixels, which makes the picture more
>> > blurry.
>> >
>> > Feel free to correct me when I'm wrong.
>> >
>> > cheers, Michael
>> >
>> > On Tue, Mar 30, 2010 at 11:43 PM, Kishore Mosaliganti
>> > <kishoreraom at gmail.com> wrote:
>> >>
>> >> I think that only changes the spacing of the image artificially and
>> >> does
>> >> not change the image size and its contents.
>> >>
>> >> It is best to use a ResampleImageFilter and you can set the output
>> >> spacing
>> >> and size of the output image:
>> >>
>> >>   ResampleFilterType::Pointer resample = ResampleFilterType::New();
>> >>   resample->SetTransform ( transform ); // identity transform
>> >>   resample->SetInterpolator ( interp ); // linear interpolator
>> >>   resample->SetInput ( reader->GetOutput() );
>> >>   resample->SetSize ( size );
>> >>   resample->SetOutputOrigin ( origin );
>> >>   resample->SetOutputSpacing ( spacing );
>> >>   resample->SetDefaultPixelValue ( 0 );
>> >>   resample->Update();
>> >>
>> >> Kishore
>> >>
>> >> On Tue, Mar 30, 2010 at 5:40 PM, michiel mentink
>> >> <michael.mentink at st-hughs.ox.ac.uk> wrote:
>> >>>
>> >>> I think the easiest option for you would be just to open an image, and
>> >>> then
>> >>> decrease the pixel size.
>> >>> After opening an image, the pixel size is just a property of the
>> >>> matrix
>> >>> with
>> >>> pixel values.
>> >>>
>> >>> You can get that property with
>> >>>
>> >>>
>> >>>  image=reader->GetOutput(); // open your image
>> >>>
>> >>> ImageType::SpacingType sp = image->GetSpacing();
>> >>>    std::cout << "Spacing = ";
>> >>>    std::cout << sp[0] << ", " << sp[1] << ", " << sp[2] << std::endl;
>> >>>
>> >>> Then, divide all spacing parameters by 1.07:
>> >>>
>> >>> sp[0] = sp[0]/1.07;
>> >>> sp[1] = sp[1]/1.07; // etc.
>> >>>
>> >>> and then set the spacing:
>> >>>
>> >>> image->SetSpacing(sp)
>> >>>
>> >>> After that, you will have changed the dimension of your image without
>> >>> having
>> >>> touched any of your pixels. Ideal.
>> >>>
>> >>> cheers, Michael
>> >>>
>> >>>
>> >>>
>> >>> On 3/30/10, Reda, Fitsum A <fitecx at gmail.com> wrote:
>> >>> > Hi all,
>> >>> >
>> >>> > I wanted to downsample CT volumes using floating point scale , say,
>> >>> > (scale_x, scale_y,scale_z) = (1.07, 1.07, 1.07);
>> >>> > I would really appreciate any help with this. I am kind of getting
>> >>> > started
>> >>> > with itk.
>> >>> >
>> >>> > Thanks in advance,
>> >>> > Reda
>> >>> >
>> >>> >
>> >>> >
>> >>> > _____________________________________
>> >>> >  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://www.kitware.com/products/protraining.html
>> >>> >
>> >>> >  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://www.itk.org/mailman/listinfo/insight-users
>> >>> >
>> >>> >
>> >>> _____________________________________
>> >>> 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://www.kitware.com/products/protraining.html
>> >>>
>> >>> 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://www.itk.org/mailman/listinfo/insight-users
>> >>
>> >
>> >
>> > _____________________________________
>> > 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://www.kitware.com/products/protraining.html
>> >
>> > 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://www.itk.org/mailman/listinfo/insight-users
>> >
>> >
>> _____________________________________
>> 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://www.kitware.com/products/protraining.html
>>
>> 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://www.itk.org/mailman/listinfo/insight-users
>
>


More information about the Insight-users mailing list