#ifndef _SENSE_GRADIENT_CXX #define _SENSE_GRADIENT_CXX #include "Sense_Gradient.h" namespace mial { //Default constructor template Sense_Gradient ::Sense_Gradient() : Sensor() { //Instantiate the filters magnitudeFilter = MagnitudeFilterType::New(); gradientFilter = GradientFilterType::New(); sensorOutput = sensorOut::New(); //Set the base class pointer Sensor::sensorOutput = sensorOutput.GetPointer(); } template void Sense_Gradient ::writeImageToFile(OutputImagePointer img,char * name) { typedef typename itk::ImageFileWriter WriterType; typename WriterType::Pointer writer = WriterType::New(); writer->SetFileName(name); writer->SetInput(img); writer->Update(); } template void Sense_Gradient ::run(typename Sensor::sensorIn * const i) { typename sensorIn::Pointer in = reinterpret_cast(i); //Typecast the input to its desired form //Calculate the gradient magnitude at scale sigma magnitudeFilter->SetSigma(in->sigma); magnitudeFilter->SetNormalizeAcrossScale(1); //Set so magnitude is normalized across scales. magnitudeFilter->SetInput(in->imageIn); //testing //this->writeImageToFile(magnitudeFilter->GetOutput(),"mag.mhd"); //this->sensorOutput.imageOut = magnitudeFilter->GetOutput(); //magnitudeFilter->Update(); //Calculate the gradients gradientFilter->SetSigma(in->sigma); gradientFilter->SetNormalizeAcrossScale(1); //Set so magnitude is normalized across scales. gradientFilter->SetInput(magnitudeFilter->GetOutput()); gradientFilter->Update(); this->sensorOutput->imageOut = gradientFilter->GetOutput(); } } #endif