[Insight-users] GradientFilterType not working as expected

cagatay bilgin bilgincc at gmail.com
Mon Jan 16 14:09:34 EST 2012


Hi Antonio,

I think what you are experiencing could be a result
of the RecursiveGaussianFilter. This filter is fast and
gives an ``approximation" (either the manual or the webpage
has links to the paper that the filter implements). If you want
more accurate but possibly slower results try the discrete
gaussian filter. You can set the maximum error for your
gradients using discretegaussianimagefilter.

Regards,
Cagatay

2012/1/16 Antonio Gómez Barquero <agb1 at alu.upct.es>

> ** **
>
> Hi all,****
>
> ** **
>
> I am calculating the typical registration example from one white point to
> the letter 'C' over a black background.****
>
> In the first iteration of my program ( numiter = 1 ), it calculates the
> gradient from a 'reader' and the result is correct. In the next iteration (
> numiter = 2 ) the result is not completely correct, in the borders of the
> image there are some wrong values, despite the gradient values in the
> centre of the image are correct. ****
>
> ** **
>
> Below is my code, I really need to fix this problem soon and I have spent
> some days without results! Any help would be really nice.****
>
> ** **
>
> ** **
>
> double *dT1 = new double[ancho*alto]; // width * height****
>
> double *dT2 = new double[ancho*alto]; // width * height****
>
> ** **
>
>       // Definition of the input image container and output(gradient)****
>
> ** **
>
> GradientFilterType::Pointer gradientFilter = GradientFilterType::New();***
> *
>
>       ImageType::Pointer im_T = ImageType::New();****
>
> ** **
>
>       if (numIter == 1){ // The first time read image from reader****
>
>             gradientFilter->SetInput(reader_T->GetOutput());****
>
>       }****
>
>       else {****
>
>             // Definition of the basic parameters of the image that
> contents the input data****
>
>             ImageType::IndexType start;****
>
>             start[0] = 0 ; // first index on X****
>
>             start[1] = 0 ; // first index on Y****
>
>             ****
>
>             ImageType::SizeType size;****
>
>             size[0] = ancho; // size along X****
>
>             size[1] = alto ; // size along Y****
>
>             ImageType::RegionType region;****
>
>             region.SetSize(size);****
>
>             region.SetIndex(start);****
>
>             im_T->SetRegions(region);****
>
> ** **
>
>             im_T->Allocate(); // allocate the image****
>
>             double2itk ( T , &im_T); // T(double*) --> im_T(itk::Image)***
> *
>
> ** **
>
>             gradientFilter->SetInput(im_T);****
>
>       }****
>
> ** **
>
>       // Common part****
>
>       gradientFilter->SetUseImageSpacingOff(); // for derivation in
> isotropic pixel space****
>
>       gradientFilter->Update();****
>
>       ****
>
>       SelectionFilterType::Pointer componentExtractor_x =
> SelectionFilterType::New();****
>
>       SelectionFilterType::Pointer componentExtractor_y =
> SelectionFilterType::New();****
>
> ** **
>
>       componentExtractor_x->SetIndex(0);// componente x****
>
>       componentExtractor_y->SetIndex(1);// componente y****
>
> ** **
>
>       componentExtractor_x->SetInput(gradientFilter->GetOutput());****
>
>       componentExtractor_y->SetInput(gradientFilter->GetOutput());****
>
> ** **
>
>       componentExtractor_x->Update();****
>
>       componentExtractor_y->Update();****
>
> ** **
>
>       dT2 = itk2double(componentExtractor_x->GetOutput(),dT2,ancho,alto); //
> X-Component of the gradient****
>
>       dT1 =
> itk2double(componentExtractor_y->GetOutput(),dT1,ancho,alto);    //
> Y-Component of the gradient****
>
> ** **
>
> Thanks!****
>
> ** **
>
> Antonio Gómez Barquero****
>
> Ingeniero de Telecomunicaciones -Becario Investigador asociado a
> Actividades de I+D+I ****
>
> GTTS ( Grupo de Tratamiento y Teoría de la Señal)[ http://gtts.upct.es/]**
> **
>
> UPCT (Universidad Politécnica de Cartagena)[ http://www.upct.es/]****
>
> ** **
>
> _____________________________________
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120116/065db704/attachment.htm>


More information about the Insight-users mailing list