C:/cmcintos/defOrgs/source/sensory/Sense_Gradient.cxx

00001 #ifndef _SENSE_GRADIENT_CXX
00002 #define _SENSE_GRADIENT_CXX
00003 
00004 #include "Sense_Gradient.h"
00005 
00006 
00007 namespace mial
00008 {
00009         //Default constructor
00010         template<class DataType, class TInputImage, class TGradientImage, int nDims>
00011                 Sense_Gradient<DataType,TInputImage,TGradientImage,nDims>
00012                 ::Sense_Gradient()
00013                 : Sensor()
00014         {
00015                 //Instantiate the filters
00016                 magnitudeFilter = MagnitudeFilterType::New();
00017                 gradientFilter = GradientFilterType::New();
00018                 sensorOutput = sensorOut::New();
00019                 //Set the base class pointer
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); //Typecast the input to its desired form
00041 
00042                 //Calculate the gradient magnitude at scale sigma
00043                 magnitudeFilter->SetSigma(in->sigma);
00044                 magnitudeFilter->SetNormalizeAcrossScale(1); //Set so magnitude is normalized across scales.
00045                 magnitudeFilter->SetInput(in->imageIn);
00046 
00047                 //testing
00048                 //this->writeImageToFile(magnitudeFilter->GetOutput(),"mag.mhd");
00049                 //this->sensorOutput.imageOut = magnitudeFilter->GetOutput();
00050                 //magnitudeFilter->Update();
00051 
00052                 //Calculate the gradients
00053                 gradientFilter->SetSigma(in->sigma);
00054                 gradientFilter->SetNormalizeAcrossScale(1); //Set so magnitude is normalized across scales.
00055                 gradientFilter->SetInput(magnitudeFilter->GetOutput());
00056 
00057                 gradientFilter->Update();
00058 
00059                 this->sensorOutput->imageOut = gradientFilter->GetOutput();
00060 
00061         }
00062 }
00063 #endif

Generated on Wed Jul 19 13:05:19 2006 for IDO by  doxygen 1.4.7