C:/cmcintos/defOrgs/examples/vesselCrawler/source/Sense_HessianBased.cxx

00001 #ifndef _Sense_HessianBased_CXX
00002 #define _Sense_HessianBased_CXX
00003 
00004 #include "Sense_HessianBased.h"
00005 
00006 
00007 namespace mial
00008 {
00009         //Default constructor
00010         template<class DataType, class TInputImage, class TGradientImage, int nDims>
00011                 Sense_HessianBased<DataType,TInputImage,TGradientImage,nDims>
00012                 ::Sense_HessianBased()
00013                 : Sensor()
00014         {
00015                 //Instantiate the filters
00016                 magnitudeFilter = MagnitudeFilterType::New();
00017                 gradientFilter = GradientFilterType::New();
00018         }
00019 
00020         template<class DataType, class TInputImage, class TGradientImage, int nDims>
00021                 void 
00022                 Sense_HessianBased<DataType,TInputImage,TGradientImage,nDims>
00023 		::writeImageToFile(OutputImagePointer img,char * name)
00024         {
00025                 typedef typename itk::ImageFileWriter<OutputImageType> WriterType;
00026                 WriterType::Pointer writer = WriterType::New(); 
00027                 writer->SetFileName(name);
00028                 writer->SetInput(img);
00029                 writer->Update();
00030         }
00031 
00032         template<class DataType, class TInputImage, class TGradientImage, int nDims>
00033                 void 
00034                 Sense_HessianBased<DataType, TInputImage, TGradientImage, nDims>
00035                 ::run(void * i)
00036         {
00037                 sensorIn in = *(reinterpret_cast<sensorIn *>(i)); //Typecast the input to its desired form
00038 
00039                 //Calculate the gradient magnitude at scale sigma
00040                 magnitudeFilter->SetSigma(in.sigma);
00041                 magnitudeFilter->SetNormalizeAcrossScale(1); //Set so magnitude is normalized across scales.
00042                 magnitudeFilter->SetInput(in.imageIn);
00043 
00044                 //testing
00045                 //this->writeImageToFile(magnitudeFilter->GetOutput(),"mag.mhd");
00046                 //this->sensorOutput.imageOut = magnitudeFilter->GetOutput();
00047                 //magnitudeFilter->Update();
00048 
00049                 //Calculate the gradients
00050                 gradientFilter->SetSigma(in.sigma);
00051                 gradientFilter->SetNormalizeAcrossScale(1); //Set so magnitude is normalized across scales.
00052                 gradientFilter->SetInput(magnitudeFilter->GetOutput());
00053 
00054                 this->sensorOutput.imageOut = gradientFilter->GetOutput();
00055 
00056                 gradientFilter->Update();
00057         }
00058 }
00059 #endif

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