<div dir="ltr"><div><br></div>Until somebody can explain why the output of the aforementioned filter has the same values on each component, here's how to get the gradient on each dimension:<br><br>

<pre style="margin:0px;text-indent:0px"><span style="color:rgb(205,139,0)">//features</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span><span style="color:rgb(128,139,237)">typedef</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">itk</span><span style="color:rgb(207,191,173)">::</span><span style="color:rgb(255,139,255)">RecursiveGaussianImageFilter</span><span style="color:rgb(207,191,173)"><</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">TImageType</span><span style="color:rgb(207,191,173)">,</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">GradientImageType</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">></span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">GradientFilterType</span><span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span><span style="color:rgb(128,139,237)">typename</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">GradientFilterType</span><span style="color:rgb(207,191,173)">::</span><span style="color:rgb(255,139,255)">Pointer</span><span style="color:rgb(100,100,130)"> </span>gradientFilter<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">GradientFilterType</span><span style="color:rgb(207,191,173)">::</span><span style="font-weight:600">New</span><span style="color:rgb(207,191,173)">();</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span>gradientFilter<span style="color:rgb(207,191,173)">-></span>SetInput<span style="color:rgb(207,191,173)">(</span>imageROIextractor<span style="color:rgb(207,191,173)">-></span>GetOutput<span style="color:rgb(207,191,173)">());</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span><span style="color:rgb(128,139,237)">float</span><span style="color:rgb(100,100,130)"> </span>sigma<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(240,173,109)">3.5</span><span style="color:rgb(207,191,173)">;</span><span style="color:rgb(100,100,130)"></span><span style="color:rgb(205,139,0)"></span><span style="color:rgb(205,139,0)"></span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span>gradientFilter<span style="color:rgb(207,191,173)">-></span>SetSigma<span style="color:rgb(207,191,173)">(</span><span style="color:rgb(100,100,130)"> </span>sigma<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span>gradientFilter<span style="color:rgb(207,191,173)">-></span>SetFirstOrder<span style="color:rgb(207,191,173)">();</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span><span style="color:rgb(255,139,255)">vector</span><span style="color:rgb(207,191,173)"><</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(128,139,237)">typename</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">GradientImageType</span><span style="color:rgb(207,191,173)">::</span><span style="color:rgb(255,139,255)">Pointer</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">></span><span style="color:rgb(100,100,130)"> </span>gradients<span style="color:rgb(207,191,173)">(</span>TImageType<span style="color:rgb(207,191,173)">::</span>ImageDimension<span style="color:rgb(207,191,173)">);</span></pre><br><pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span><span style="color:rgb(128,139,237)">try</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">{</span></pre><pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(128,139,237)">for</span><span style="color:rgb(207,191,173)">(</span><span style="color:rgb(128,139,237)">unsigned</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(128,139,237)">int</span><span style="color:rgb(100,100,130)"> </span>dim<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(240,173,109)">0</span><span style="color:rgb(207,191,173)">;</span><span style="color:rgb(100,100,130)"> </span>dim<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><</span><span style="color:rgb(100,100,130)"> </span>TImageType<span style="color:rgb(207,191,173)">::</span>ImageDimension<span style="color:rgb(207,191,173)">;</span><span style="color:rgb(100,100,130)"> </span>dim<span style="color:rgb(207,191,173)">++)</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">{</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">      </span>gradientFilter<span style="color:rgb(207,191,173)">-></span>SetDirection<span style="color:rgb(207,191,173)">(</span>dim<span style="color:rgb(207,191,173)">);</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">      </span>gradientFilter<span style="color:rgb(207,191,173)">-></span>Update<span style="color:rgb(207,191,173)">();</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">      </span>gradients<span style="color:rgb(207,191,173)">[</span>dim<span style="color:rgb(207,191,173)">]</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">=</span><span style="color:rgb(100,100,130)"> </span>gradientFilter<span style="color:rgb(207,191,173)">-></span>GetOutput<span style="color:rgb(207,191,173)">();</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">      </span>gradients<span style="color:rgb(207,191,173)">[</span>dim<span style="color:rgb(207,191,173)">]-></span>DisconnectPipeline<span style="color:rgb(207,191,173)">();</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(207,191,173)">}</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span><span style="color:rgb(207,191,173)">}</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(128,139,237)">catch</span><span style="color:rgb(207,191,173)">(</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,139,255)">itk</span><span style="color:rgb(207,191,173)">::</span><span style="color:rgb(255,139,255)">ExceptionObject</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">&</span><span style="color:rgb(100,100,130)"> </span>error<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">)</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)">{</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(255,139,255)">std</span><span style="color:rgb(207,191,173)">::</span>cerr<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span>__FILE__<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">":"</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span>__LINE__<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">Error:</span><span style="color:rgb(100,100,130);background-color:rgb(64,64,64)"> </span><span style="color:rgb(255,205,139);background-color:rgb(64,64,64)">"</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span>error<span style="color:rgb(100,100,130)"> </span><span style="color:rgb(207,191,173)"><<</span><span style="color:rgb(100,100,130)"> </span>std<span style="color:rgb(207,191,173)">::</span>endl<span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">    </span><span style="color:rgb(128,139,237)">return</span><span style="color:rgb(100,100,130)"> </span><span style="color:rgb(64,144,144)">FUCKEDUP</span><span style="color:rgb(207,191,173)">;</span></pre>
<pre style="margin:0px;text-indent:0px"><span style="color:rgb(100,100,130)">  </span><span style="color:rgb(207,191,173)">}</span></pre><br></div><div class="gmail_extra"><br><div class="gmail_quote">2015-04-17 16:01 GMT+02:00 Pol Monsó Purtí <span dir="ltr"><<a href="mailto:lluna.nova@gmail.com" target="_blank">lluna.nova@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Apparently, even if the default is a covariantVector of dimension ImageDimension (3), the three components of each "pixel" have the same value. So the question is still there, how do I retrieve the gradient on each dimension of an image?<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2015-04-16 15:30 GMT+02:00 Pol Monsó Purtí <span dir="ltr"><<a href="mailto:lluna.nova@gmail.com" target="_blank">lluna.nova@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hello all,<br><br></div>The declaration of thefilter is<br><br><span style="font-family:monospace,monospace">template<typename TInputImage, typename TOutputImage = Image< CovariantVector< typename NumericTraits< typename TInputImage::PixelType >::RealType, TInputImage::ImageDimension >, TInputImage::ImageDimension >><br></span><br></div><div>In my case, <span style="font-family:monospace,monospace">ImageDimension = 3<br></span><div><br></div></div><div></div>So I have two questions.<br><br></div>Question number 1: <br>Does the output image hold, for each pixel, the three derivatives? Can they be accessed by<br><br><span style="font-family:monospace,monospace">it.Get()[0] it.Get()[1] it.Get()[2]</span><br><br></div><div>where<span style="font-family:monospace,monospace"> it </span>is <span style="font-family:monospace,monospace">itk::ImageRegionIterator< GradientImageType > it( gradientImage, <br>gradientImage->GetRequestedRegion() );<br><br>?<br></span><span style="font-family:arial,helvetica,sans-serif"><br></span></div><div><span style="font-family:arial,helvetica,sans-serif">Question number 2: (just for curiosity)<br></span></div><div><span style="font-family:arial,helvetica,sans-serif">what happens when </span><span style="font-family:monospace,monospace">TOutputImage = Image< PixelType, Dimension> </span><span style="font-family:arial,helvetica,sans-serif">?<br></span></div><div><span style="font-family:arial,helvetica,sans-serif">and what happens when you create a writer with the default </span><span style="font-family:monospace,monospace">TOutputImage </span><span style="font-family:arial,helvetica,sans-serif">and write to disk? Do the derivatives end in different channels or a magnitude is computed?</span><span style="font-family:monospace,monospace"><br></span></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>