[Insight-users] Problem first filter write on my own
Alessio Mazzarini
alessiomazzarini89 at gmail.com
Sat Jan 4 10:40:24 EST 2014
Hi everyone, i'm trying to understand how to write my own filter and i
started with a simple one.
I would like to create a simple filter that takes as input an image and
then shows on terminal the value of a pixel (defined in the constructor
method).
For simplicity i reused the ImageToImageFilter class (obv there will be
a better way to do it) without set any output image. This is my code:
********************** takePixel.h******************************
#ifndef __takePixel_h
#define __takePixel_h
#include "itkImageToImageFilter.h"
namespace itk
{
template < typename TInputImage, typename TOutputImage >
class takePixel :
public ImageToImageFilter < TInputImage, TOutputImage >
{
public:
/** Standard class typedefs. */
typedef takePixel Self;
typedef ImageToImageFilter < TInputImage, TOutputImage > Superclass;
typedef SmartPointer < Self > Pointer;
typedef SmartPointer < const Self > ConstPointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Typedef for images */
typedef TInputImage InputImageType;
typedef TOutputImage OutputImageType;
typedef typename TInputImage::IndexType IndexType;
typedef typename OutputImageType::Pointer OutputImagePointer;
typedef typename InputImageType::Pointer InputImagePointer;
typedef typename InputImageType::ConstPointer InputImageConstPointer;
typedef typename TInputImage::PixelType PixelType;
protected:
takePixel();
virtual ~takePixel() {};
void PrintSelf(std::ostream & os, Indent indent) const;
void GetPixelOfImage(); //Method of the filter, to get PixelValue
private:
takePixel(const Self &); //purposely not implemented
void operator=(const Self &); //purposely not implemented
PixelType pixelA;
IndexType indexA;
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "takePixel.hxx"
#endif
#endif
***********************************************************************************
***************************************takePixel.hxx*********************************************
#ifndef __takePixel_hxx
#define __takePixel_hxx
#include "takePixel.h"
#include <iostream>
namespace itk
{
//Constructor that set the pixel index
template < typename TInputImage, typename TOutputImage >
takePixel < TInputImage, TOutputImage >
::takePixel ()
{
indexA[0]=10;
indexA[1]=10;
itkDebugMacro(<< "takePixel::takePixel() called");
}
template< typename TInputImage, typename TOutputImage >
void
takePixel < TInputImage, TOutputImage >
::GetPixelOfImage()
{
InputImageConstPointer inputPtr = this->GetInput(0);
pixelA = inputPtr->GetPixel(indexA);
this->Modified();
std::cout<<"Pixel value: "<<pixelA<<std::endl;
//return pixelA;
}
template< typename TInputImage, typename TOutputImage >
void
takePixel < TInputImage, TOutputImage >
::PrintSelf(std::ostream & os, Indent indent) const
{
Superclass::PrintSelf(os, indent);
os << indent << "Value of Pixel: " << pixelA << std::endl;
}
} // end namespace
#endif
Where am I doing wrong in writing this filter? Any help is much appreciated.
Is there any filter that takes as input an image and doesn't return
anyoutput image that I can use as a reference?
Regards,
Alessio
More information about the Insight-users
mailing list