Hi Antonio, <div><br></div><div>I think what you are experiencing could be a result<div><div>of the RecursiveGaussianFilter. This filter is fast and </div><div>gives an ``approximation&quot; (either the manual or the webpage </div>
<div>has links to the paper that the filter implements). If you want </div><div>more accurate but possibly slower results try the discrete </div><div>gaussian filter. You can set the maximum error for your </div><div>gradients using discretegaussianimagefilter. </div>
<div><br></div><div>Regards,</div><div>Cagatay</div><div><br><div class="gmail_quote">2012/1/16 Antonio Gómez Barquero <span dir="ltr">&lt;<a href="mailto:agb1@alu.upct.es">agb1@alu.upct.es</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="ES" link="blue" vlink="purple"><div><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none">Hi all,<u></u><u></u></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US">I am calculating the typical registration example from one white point to the letter &#39;C&#39; over a black background.<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US">In the first iteration of my program ( numiter = 1 ), it calculates the gradient from a &#39;reader&#39; 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. <u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US">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.<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:blue"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:blue"><u></u> <u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:blue">double</span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"> *dT1 = <span style="color:blue">new</span> <span style="color:blue">double</span>[ancho*alto]; <span style="color:green">// width * height<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:blue">double</span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"> *dT2 = <span style="color:blue">new</span> <span style="color:blue">double</span>[ancho*alto]; <span style="color:green">// width * height<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      <span style="color:green">// Definition of the input image container and output(gradient)<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">GradientFilterType::Pointer gradientFilter = GradientFilterType::New();<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      ImageType::Pointer im_T = ImageType::New();<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      <span style="color:blue">if</span> (numIter == 1){ <span style="color:green">// The first time read image from reader<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            gradientFilter-&gt;SetInput(reader_T-&gt;GetOutput());<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      }<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      <span style="color:blue">else</span> {<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            <span style="color:green">// Definition of the basic parameters of the image that contents the input data</span><u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            ImageType::IndexType start;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            start[0] = 0 ; <span style="color:green">// first index on X<u></u><u></u></span></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            start[1] = 0 ; <span style="color:green">// first index on Y<u></u><u></u></span></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            <u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            ImageType::SizeType size;<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            size[0] = ancho; <span style="color:green">// size along X<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            size[1] = alto ; <span style="color:green">// size along Y<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            ImageType::RegionType region;<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            region.SetSize(size);<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            region.SetIndex(start);<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            im_T-&gt;SetRegions(region);<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            im_T-&gt;Allocate(); <span style="color:green">// allocate the image</span><u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            double2itk ( T , &amp;im_T); <span style="color:green">// T(double*) --&gt; im_T(itk::Image)<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">            gradientFilter-&gt;SetInput(im_T);<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:10.0pt;line-height:115%"><span lang="EN-US" style="font-size:10.0pt;line-height:115%;font-family:&quot;Courier New&quot;">      }<u></u><u></u></span></p><p class="MsoNormal" style="margin-bottom:10.0pt;line-height:115%">
<span lang="EN-US" style="font-size:10.0pt;line-height:115%;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      <span style="color:green">// Common part<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      gradientFilter-&gt;SetUseImageSpacingOff(); <span style="color:green">// for derivation in isotropic pixel space<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      gradientFilter-&gt;Update();<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      <u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      SelectionFilterType::Pointer componentExtractor_x = SelectionFilterType::New();<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      SelectionFilterType::Pointer componentExtractor_y = SelectionFilterType::New();<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      </span><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">componentExtractor_x-&gt;SetIndex(0);<span style="color:green">// componente x<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      componentExtractor_y-&gt;SetIndex(1);<span style="color:green">// componente y<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      </span><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">componentExtractor_x-&gt;SetInput(gradientFilter-&gt;GetOutput());<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      componentExtractor_y-&gt;SetInput(gradientFilter-&gt;GetOutput());<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      componentExtractor_x-&gt;Update();<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      componentExtractor_y-&gt;Update();<u></u><u></u></span></p><p class="MsoNormal" style="text-autospace:none">
<span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      dT2 = itk2double(componentExtractor_x-&gt;GetOutput(),dT2,ancho,alto); <span style="color:green">// X-Component of the gradient<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;">      dT1 = itk2double(componentExtractor_y-&gt;GetOutput(),dT1,ancho,alto);    <span style="color:green">// Y-Component of the gradient<u></u><u></u></span></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Courier New&quot;;color:green"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US">Thanks!<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal" style="text-autospace:none"><span lang="EN-US">Antonio Gómez Barquero<u></u><u></u></span></p><p class="MsoNormal">
<span lang="ES-TRAD" style="font-size:8.0pt">Ingeniero de Telecomunicaciones -Becario Investigador asociado a Actividades de I+D+I <u></u><u></u></span></p><p class="MsoNormal"><span lang="ES-TRAD" style="font-size:8.0pt">GTTS ( Grupo de Tratamiento y Teoría de la Señal)[ </span><span style="font-size:8.0pt"><a href="http://gtts.upct.es/" target="_blank"><span style="color:blue">http://gtts.upct.es/</span></a></span><span lang="ES-TRAD" style="font-size:8.0pt">]<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="ES-TRAD" style="font-size:8.0pt">UPCT (Universidad Politécnica de Cartagena)[ </span><span style="font-size:8.0pt"><a href="http://www.upct.es/" target="_blank"><span style="color:blue">http://www.upct.es/</span></a>]</span><span lang="ES-TRAD" style="font-size:8.0pt"><u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p></div></div><br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br></div></div></div>