[Insight-users] 1D Convolution with Gaussian Kernel using

Antonio Gómez Barquero agb1 at alu.upct.es
Thu Nov 17 04:42:31 EST 2011



Hi!

You were right, now it compiles, but I only have some numbers in the first
20 positions, after that everything is 0, so is wrong, also it takes around
15 seconds to perform the calculation which is a crazy thing!.

I prefer to generate the Gaussian myself and after that translate it into an
image ( kernel in this case) because I am doing work also with Matlab, and I
would like to use the same Gaussian. 

But I think I am missing something in the body of the iteration , something
that performs the convolution itself or maybe the point of doing the
convolution in x-axis in 1D....

   while(!imageIterator.IsAtEnd()) 
    {
    //imageIterator.Set??
 
    ++imageIterator; //operator++  increments the iterator one position in
the positive direction

    }


Also, the perfect final would be to have a Kernel of 25 pixels ( the same I
have originally in my Matlab program), and then performing the convolution
in each row of the x-direction of the image...I think that must be a
way...so I follow reading the ITK manual and let's see I found something.

Any Tip or idea or help will be highly appreciated!

Antonio

-----Mensaje original-----
De: Cory Quammen [mailto:cquammen at cs.unc.edu] 
Enviado el: miércoles, 16 de noviembre de 2011 17:28
Para: Antonio Gómez Barquero
CC: insight-users at itk.org
Asunto: Re: [Insight-users] 1D Convolution with Gaussian Kernel using

Antonio,

It looks like you are defining your kernel to be 256x256, not 256x1.
You probably want to call

size[0] = width;
size[1] = 1;

instead of

size.Fill(width);

You might want to consider using the GaussianImageSource
(http://www.itk.org/Doxygen/html/classitk_1_1GaussianImageSource.html)
to generate your Gaussian.

Hope that helps,
Cory

2011/11/16 Antonio Gómez Barquero <agb1 at alu.upct.es>:
> SORRY, the last e-mail was icomplete, here is ok:
>
>
>
> My goal is to calculate the calculation in each row of a 2D-image ( in 
> the
> x-direction)
>
> After following the tip from Cory I am trying to use the 
> ‘ConvolutionImageFilter’, and make a kernel with the Gaussian values I 
> calculate before.
>
> I took a look to this example
> (http://www.itk.org/Wiki/ITK/Examples/ImageProcessing/ConvolutionImage
> Filter) and my question is how to include the values of the Gaussian 
> filter to the kernel, I tried wit the code below and it compiles, but 
> it seems the execution has no end when I update the convolutionFilter
 
> Because of that I think that I am doing something wrong. My code is 
> below and is not so much, if some can give some help I would 
> appreciate that really a lot !!!!.
>
>
>
>       typedef itk::ConvolutionImageFilter <ImageType> ConvFilterType;
>
>
>
>       ImageType::Pointer kernel = ImageType::New();
>
>       CreateKernel(kernel, Gaussian , 256);
>
>
>
>       //Convolve image with kernel
>
>       ConvFilterType::Pointer convolutionFilter = 
> ConvFilterType::New();
>
>       convolutionFilter->SetInput(Li_itk);
>
>       convolutionFilter->SetImageKernelInput(kernel);
>
>       convolutionFilter->Update();
>
>
>
> void Reg_image_v2::CreateKernel(Reg_image_v2::ImageType::Pointer 
> kernel, double *Gaussian, unsigned int width) {
>
>
>
>       ImageType::IndexType start;
>
>       start.Fill(0);
>
>       ImageType::SizeType size;
>
>       size.Fill(width);
>
>       ImageType::RegionType region;
>
>       region.SetSize(size);
>
>       region.SetIndex(start);
>
>       kernel->SetRegions(region);
>
>       kernel->Allocate();
>
>
>
>       ImageType::IndexType pixelIndex;
>
>       for (int i = 0 ; i < width ; i ++){
>
>             pixelIndex[0] = i ;
>
>             pixelIndex[1] = 0 ;
>
>             kernel->SetPixel(pixelIndex,Gaussian[i]);
>
>       }
>
>       itk::ImageRegionIterator<ImageType> imageIterator(kernel, 
> region);
>
>    while(!imageIterator.IsAtEnd())
>
>     {
>
>     //imageIterator.Set??
>
>     ++imageIterator; //operator++  increments the iterator one 
> position in the positive direction
>
>     }
>
>
>
>
>
> } // end createKernel
>
>
>
>
>
> 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
>
>



--
Cory Quammen
Research Associate
Department of Computer Science
The University of North Carolina at Chapel Hill



More information about the Insight-users mailing list