Hi all,<br><br>I try to write my own filter starting with the CompositeFilterExample (Software Guide). Now I want to use the GradientRecursiveGaussianImageFilter and extract one component of the vectors with the VectorImageToImageAdaptor. I have some problems so far:<br>
<br>I get the following error:<br>    <i>error C2664: &#39;itk::ImageAdaptor&lt;TImage,TAccessor&gt;::SetImage&#39; : cannot convert parameter 1 from &#39;itk::Image&lt;TPixel,VImageDimension&gt; *&#39; to &#39;itk::VectorImage&lt;TPixel,VImageDimension&gt; *&#39;</i><br>
when I transfer the output of the gradient filter to the adapter: <span style="color: rgb(255, 0, 0);">m_ImageAdaptorFilter-&gt;SetImage(m_GradientFilter-&gt;GetOutput() );</span><br><br>If the adaptor is working how do I graft the output?<br>
 <i> error C2039: &#39;GraftOutput&#39; : is not a member of &#39;itk::VectorImageToImageAdaptor&lt;TPixelType,Dimension&gt;&#39;<br></i><br>I hope someone can help me!<br><br>Thanks a lot!<br><br>Melanie<br><br><br><b><u>myEdgeDetectionImageFilter.h:</u></b><br>
<br>...<br>#include &quot;itkGradientRecursiveGaussianImageFilter.h&quot;  <br>#include &quot;itkVectorImageToImageAdaptor.h&quot;<br><br><br>namespace itk {<br><br>template &lt;class TImageType&gt;<br>class ITK_EXPORT MelEdgeDetectionImageFilter :<br>
    public ImageToImageFilter&lt;TImageType, TImageType&gt;<br>{<br>public:<br><br>  ...<br>  /** ImageDimension constant    */<br>  itkStaticConstMacro(ImageDimension, unsigned int,<br>                      TImageType::ImageDimension);<br>
<br>    /** Define pixel types. */<br>  typedef typename TImageType::PixelType PixelType;<br><br>  /** Define image type**/<br>  typedef typename itk::GradientRecursiveGaussianImageFilter&lt;TImageType&gt;::OutputImageType VectorImageType;<br>
<br>  itkGetMacro( Sigma, PixelType);<br>  itkSetMacro( Sigma, PixelType);<br><br>protected:<br><br>  MelEdgeDetectionImageFilter();<br><br>  typedef GradientRecursiveGaussianImageFilter&lt; TImageType &gt;    GradientType;<br>
<b>  </b>typedef VectorImageToImageAdaptor&lt; VectorImageType, ImageDimension &gt; ImageAdaptorType;      <b style="color: rgb(255, 0, 0);"><span style="color: rgb(255, 0, 0);"> // </span>IS THIS </b><b style="color: rgb(255, 0, 0);">THE RIGHT DEFINITION?</b><br>
<br>  void GenerateData();<br><br>private:<br><br>  MelEdgeDetectionImageFilter(Self&amp;);   // intentionally not implemented<br>  void operator=(const Self&amp;);          // intentionally not implemented<br><br>  typename GradientType::Pointer     m_GradientFilter;<br>
  typename ImageAdaptorType::Pointer m_ImageAdaptorFilter;<br><br>  PixelType m_Sigma;<br>};<br><br>} /* namespace itk */<br><br><b><u>myEdgeDetectionImageFilter.txx:</u></b><br>#include &quot;myEdgeDetectionImageFilter.h&quot;<br>
<br>namespace itk <br>{<br><br>template &lt;class TImageType&gt;<br>MelEdgeDetectionImageFilter&lt;TImageType&gt;<br>::MelEdgeDetectionImageFilter()<br>{<br>  m_GradientFilter = GradientType::New();<br>  m_ImageAdaptorFilter = ImageAdaptorType::New();<br>
<br>  m_ImageAdaptorFilter-&gt;SetImage(m_GradientFilter-&gt;GetOutput() );    <b style="color: rgb(255, 0, 0);"><span style="color: rgb(255, 0, 0);"> // </span></b><b style="color: rgb(255, 0, 0);">THIS IS NOT POSSIBLE</b><br>
  m_ImageAdaptorFilter-&gt;SetExtractComponentIndex(ImageDimension-1);<br><br>  m_Sigma = 1;<br>}<br><br>template &lt;class TImageType&gt;<br>void<br>MelEdgeDetectionImageFilter&lt;TImageType&gt;::<br>GenerateData()<br>{<br>
  m_GradientFilter-&gt;SetInput( this-&gt;GetInput() );<br><br><b>   m_ImageAdaptorFilter-&gt;GraftOutput( this-&gt;GetOutput() );<br>  m_ImageAdaptorFilter-&gt;Update();<br>  this-&gt;GraftOutput( m_ImageAdaptorFilter-&gt;GetOutput() );</b>     <b style="color: rgb(255, 0, 0);"><span style="color: rgb(255, 0, 0);"> // </span></b><b style="color: rgb(255, 0, 0);">THIS IS NOT POSSIBLE BUT WHAT DO I USE INSTEAD?</b><br>
}<br><br>...<br>} /* end namespace itk */<br><br><br>