【ITK学习笔记】How To Wite A Filter

ImageFilter.h

#ifndef __itkImageFilter_h
#define __itkImageFilter_h
#include "itkImageToImageFilter.h" 

namespace itk
{
template<class TImage> 
class ImageFilter:public ImageToImageFilter <TImage,TImage> 

public:
    //** Standard class typedefs. */
    typedef ImageFilter                       Self;
    typedef ImageToImageFilter<TImage,TImage> Superclass;
    typedef SmartPointer<Self>                Pointer;

    //** Method for creation through the object factory. */        
    itkNewMacro(Self);
    //** Run-time type information(and related methods)> */   
    itkTypeMacro(ImageFilter,ImageToImageFilter);
protected:
    ImageFilter(){}
    ~ImageFilter(){}

    /** Does the real work. */
    virtual void GenerateData();  
private:
    ImageFilter(const Self &); //purposely not implemented 
    void operator=(const Self &);  //purposely not implemented
}

#ifndef ITK_MANUAL_INSTANTIATION
#include "ImageFilter.hxx"
#endif
#endif // __itkImageFilter_h

ImageFilter.hxx

#ifndef __itkImageFilter_hxx
#define __itkImageFilter_hxx
#include "ImageFilter.h"
#include "itkObjectFactory.h"               
#include "itkImageRegionIterator.h"         
#include "itkImageRegionConstIterator.h"
namespace itk
{
 template< class TImage>
 void ImageFilter< TImage>::GenerateData()
 {
   typename TImage::ConstPointer input = this->GetInput();
   typename TImage::Pointer output = this->GetOutput();

   //下面两行是真是的代码,其他的都是模板可以套用
   itk::Index<2> cornerPixel = input->GetLargestPossibleRegion().GetIndex();
   typename TImage::PixelType newValue = 3;

   this->AllocateOutputs();
   ImageAlgorithm::Copy(input.GetPointer(), output.GetPointer(), 
                       output->GetRequestedRegion,
                       output->GetRequestedRegion
                      );
   output->SetPixel( cornerPixel, newValue );
 }
}// end namespace
#endif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值