00001 #ifndef _SENSE_GRADIENT_CXX
00002 #define _SENSE_GRADIENT_CXX
00003
00004 #include "Sense_Gradient.h"
00005
00006
00007 namespace mial
00008 {
00009
00010 template<class DataType, class TInputImage, class TGradientImage, int nDims>
00011 Sense_Gradient<DataType,TInputImage,TGradientImage,nDims>
00012 ::Sense_Gradient()
00013 : Sensor()
00014 {
00015
00016 magnitudeFilter = MagnitudeFilterType::New();
00017 gradientFilter = GradientFilterType::New();
00018 sensorOutput = sensorOut::New();
00019
00020 Sensor::sensorOutput = sensorOutput.GetPointer();
00021 }
00022
00023 template<class DataType, class TInputImage, class TGradientImage, int nDims>
00024 void
00025 Sense_Gradient<DataType,TInputImage,TGradientImage,nDims>
00026 ::writeImageToFile(OutputImagePointer img,char * name)
00027 {
00028 typedef typename itk::ImageFileWriter<OutputImageType> WriterType;
00029 typename WriterType::Pointer writer = WriterType::New();
00030 writer->SetFileName(name);
00031 writer->SetInput(img);
00032 writer->Update();
00033 }
00034
00035 template<class DataType, class TInputImage, class TGradientImage, int nDims>
00036 void
00037 Sense_Gradient<DataType, TInputImage, TGradientImage, nDims>
00038 ::run(typename Sensor::sensorIn * const i)
00039 {
00040 typename sensorIn::Pointer in = reinterpret_cast<sensorIn *>(i);
00041
00042
00043 magnitudeFilter->SetSigma(in->sigma);
00044 magnitudeFilter->SetNormalizeAcrossScale(1);
00045 magnitudeFilter->SetInput(in->imageIn);
00046
00047
00048
00049
00050
00051
00052
00053 gradientFilter->SetSigma(in->sigma);
00054 gradientFilter->SetNormalizeAcrossScale(1);
00055 gradientFilter->SetInput(magnitudeFilter->GetOutput());
00056
00057 gradientFilter->Update();
00058
00059 this->sensorOutput->imageOut = gradientFilter->GetOutput();
00060
00061 }
00062 }
00063 #endif