]> Creatis software - clitk.git/commitdiff
fftw
authorlgrezesb <lgrezesb>
Fri, 19 Feb 2010 14:01:42 +0000 (14:01 +0000)
committerlgrezesb <lgrezesb>
Fri, 19 Feb 2010 14:01:42 +0000 (14:01 +0000)
common/CMakeLists.txt
common/clitkSignal.cxx
common/clitkSignal.h

index 9f4700e1ece4ce5c778dbf865c44d30c3914a3bf..38eb7e11a75864c483597d89788faaeeb73b3f58 100644 (file)
@@ -26,7 +26,8 @@ SET(clitkCommon_SRC
   clitkOrientation.cxx
   vvImage.cxx
   clitkImageToImageGenericFilter.cxx
-  )  
+  clitkSignal.cxx  
+)  
 
 ADD_LIBRARY(clitkCommon STATIC ${clitkCommon_SRC})
 
index 9f65bbf421daa038b9deeed6f69f3e2538c4fe8b..25a7db046c200b1d78a055a929ec0e086e1719f6 100644 (file)
@@ -315,117 +315,117 @@ namespace clitk {
 
 
   //---------------------------------------------------------------------
-  Signal Signal::HighPassFilter (double sampPeriod, double cutOffFrequency )
-  {
-    //output
-    Signal temp(m_SamplingPeriod);
-    temp.resize(size());
-
-    //the fft
-    SIGNAL_FFT_TYPE fft;
-  
-    //calculate the cut off frequency  
-    unsigned int samp=lrint(cutOffFrequency*static_cast<double>(size())*sampPeriod);
-   
-    //forward fft with empty fft
-    if(fft.size()==0)  OneDForwardFourier(*this, fft);
-    
-    //remove the frequencies
-    for(unsigned int i=0;i<samp && i<fft.size();i++)
-      fft[i]=complex<double>(0.,0.);
-    
-    //backward with remaining frequencies
-    OneDBackwardFourier(fft,temp);
-    return temp;
-  }
+//   Signal Signal::HighPassFilter (double sampPeriod, double cutOffFrequency )
+//   {
+//     //output
+//     Signal temp(m_SamplingPeriod);
+//     temp.resize(size());
+// 
+//     //the fft
+//     SIGNAL_FFT_TYPE fft;
+//   
+//     //calculate the cut off frequency  
+//     unsigned int samp=lrint(cutOffFrequency*static_cast<double>(size())*sampPeriod);
+//    
+//     //forward fft with empty fft
+//     if(fft.size()==0)  OneDForwardFourier(*this, fft);
+//     
+//     //remove the frequencies
+//     for(unsigned int i=0;i<samp && i<fft.size();i++)
+//       fft[i]=complex<double>(0.,0.);
+//     
+//     //backward with remaining frequencies
+//     OneDBackwardFourier(fft,temp);
+//     return temp;
+//   }
   //---------------------------------------------------------------------
 
   
  //---------------------------------------------------------------------
-  Signal Signal::LowPassFilter (double sampPeriod, double cutOffFrequency )
-  {
-    //output
-    Signal temp(m_SamplingPeriod);
-    temp.resize(size());
-
-    //the fft
-    SIGNAL_FFT_TYPE fft;
-  
-    //calculate the cut off frequency  
-    unsigned int samp=lrint(cutOffFrequency*static_cast<double>(size())*sampPeriod);
-    
-    //forward fft with empty fft
-    if(fft.size()==0)  OneDForwardFourier(*this, fft);
-    unsigned int fsize=fft.size();
-
-    //remove the frequencies 
-    unsigned int limit=min (samp, fsize);
-    for(unsigned int i=limit;i<fft.size();i++)
-       fft[i]=complex<double>(0.,0.);
-       
-    //backward with remaining frequencies
-    OneDBackwardFourier(fft,temp);
-    return temp;
-  }
+//   Signal Signal::LowPassFilter (double sampPeriod, double cutOffFrequency )
+//   {
+//     //output
+//     Signal temp(m_SamplingPeriod);
+//     temp.resize(size());
+// 
+//     //the fft
+//     SIGNAL_FFT_TYPE fft;
+//   
+//     //calculate the cut off frequency  
+//     unsigned int samp=lrint(cutOffFrequency*static_cast<double>(size())*sampPeriod);
+//     
+//     //forward fft with empty fft
+//     if(fft.size()==0)  OneDForwardFourier(*this, fft);
+//     unsigned int fsize=fft.size();
+// 
+//     //remove the frequencies 
+//     unsigned int limit=min (samp, fsize);
+//     for(unsigned int i=limit;i<fft.size();i++)
+//             fft[i]=complex<double>(0.,0.);
+//     
+//     //backward with remaining frequencies
+//     OneDBackwardFourier(fft,temp);
+//     return temp;
+//   }
   //---------------------------------------------------------------------
 
 
   //---------------------------------------------------------------------
-  void  Signal::OneDForwardFourier(const Signal& input, SIGNAL_FFT_TYPE & fft)
-  {
-    //Create output array
-    fft.resize(input.size()/2+1);
-    //Temp copy
-    double *tempCopy=new double[size()];
-    copy(begin(), end(), tempCopy);
-
-    //Forward Fourier Transform   
-    fftw_plan p;
-    p=fftw_plan_dft_r2c_1d(size(),tempCopy,reinterpret_cast<fftw_complex*>(&(fft[0])),FFTW_ESTIMATE);
-    fftw_execute(p);
-    fftw_destroy_plan(p);
-    //delete tempCopy;
-    return;
-  }
+//   void  Signal::OneDForwardFourier(const Signal& input, SIGNAL_FFT_TYPE & fft)
+//   {
+//     //Create output array
+//     fft.resize(input.size()/2+1);
+//     //Temp copy
+//     double *tempCopy=new double[size()];
+//     copy(begin(), end(), tempCopy);
+// 
+//     //Forward Fourier Transform   
+//     fftw_plan p;
+//     p=fftw_plan_dft_r2c_1d(size(),tempCopy,reinterpret_cast<fftw_complex*>(&(fft[0])),FFTW_ESTIMATE);
+//     fftw_execute(p);
+//     fftw_destroy_plan(p);
+//     //delete tempCopy;
+//     return;
+//   }
   //---------------------------------------------------------------------
   
   
   //---------------------------------------------------------------------
-  void Signal::OneDBackwardFourier(SIGNAL_FFT_TYPE & fft, Signal &output)
-  {
-      
-    //Backward
-    fftw_plan p;
-    p=fftw_plan_dft_c2r_1d(output.size(),reinterpret_cast<fftw_complex*>(&(fft[0])),&(output[0]),FFTW_ESTIMATE);
-    fftw_execute(p); 
-    fftw_destroy_plan(p);
-  
-    vector<double>::iterator it=output.begin();
-    while(it!=output.end()){    
-      *it /= (double)output.size();
-      it++;
-    } 
-    return;
-  }
+//   void Signal::OneDBackwardFourier(SIGNAL_FFT_TYPE & fft, Signal &output)
+//   {
+//       
+//     //Backward
+//     fftw_plan p;
+//     p=fftw_plan_dft_c2r_1d(output.size(),reinterpret_cast<fftw_complex*>(&(fft[0])),&(output[0]),FFTW_ESTIMATE);
+//     fftw_execute(p); 
+//     fftw_destroy_plan(p);
+//   
+//     vector<double>::iterator it=output.begin();
+//     while(it!=output.end()){    
+//       *it /= (double)output.size();
+//       it++;
+//     } 
+//     return;
+//   }
   //---------------------------------------------------------------------
 
   
   //---------------------------------------------------------------------
-  double Signal::MaxFreq(const Signal &sig,SIGNAL_FFT_TYPE & fft)
-  {
-  
-    if(fft.size()==0) OneDForwardFourier(sig,fft);
-    int posMax=1;
-    double amplitude, amplitudeMax=abs(fft[1]);
-    for(unsigned int i=1;i<fft.size();i++){      
-      amplitude=abs(fft[i]);
-      if(amplitude>amplitudeMax){
-       posMax=i;
-       amplitudeMax=amplitude;
-      }
-    }
-    return ((double)(posMax)/((double)sig.size()*sig.GetSamplingPeriod()));
-  }
+//   double Signal::MaxFreq(const Signal &sig,SIGNAL_FFT_TYPE & fft)
+//   {
+//   
+//     if(fft.size()==0) OneDForwardFourier(sig,fft);
+//     int posMax=1;
+//     double amplitude, amplitudeMax=abs(fft[1]);
+//     for(unsigned int i=1;i<fft.size();i++){      
+//       amplitude=abs(fft[i]);
+//       if(amplitude>amplitudeMax){
+//     posMax=i;
+//     amplitudeMax=amplitude;
+//       }
+//     }
+//     return ((double)(posMax)/((double)sig.size()*sig.GetSamplingPeriod()));
+//   }
   //---------------------------------------------------------------------
 
 
index c955936860e9ea6b3fceea86345f3c7fed941e70..fc57b78de7d649b92d5bc7e3ba7e222dc7529776 100644 (file)
@@ -7,8 +7,8 @@
 #include "clitkIO.h"
 
 //include external library
-#include <fftw3.h>
-#include <complex>
+//#include <fftw3.h>
+//#include <complex>
 
 //itk include
 #include "itkImage.h"
@@ -29,7 +29,7 @@ class Signal{
   typedef vector< SignalValueType > SignalType;
   typedef SignalType::iterator iterator;
   typedef SignalType::const_iterator const_iterator;
-  typedef vector< complex<double> > SIGNAL_FFT_TYPE;
+  //typedef vector< complex<double> > SIGNAL_FFT_TYPE;
   
   typedef itk::Image<double,1> ImageType;
   typedef itk::Vector<double,1> VectorType;
@@ -84,11 +84,11 @@ class Signal{
   Signal MovingAverageFilter ( unsigned int length);
   Signal GaussLikeFilter ();
   Signal NormalizeMeanStdDev(double newMean=0.5,double newStdDev=0.5);
-  Signal HighPassFilter (double sampPeriod, double cutOffFrequency );
-  Signal LowPassFilter (double sampPeriod, double cutOffFrequency );
-  double MaxFreq(const Signal &sig,SIGNAL_FFT_TYPE & fft);
-  void OneDForwardFourier(const Signal& input,SIGNAL_FFT_TYPE & fft);
-  void OneDBackwardFourier(SIGNAL_FFT_TYPE & fft, Signal &output);
+  //Signal HighPassFilter (double sampPeriod, double cutOffFrequency );
+  //Signal LowPassFilter (double sampPeriod, double cutOffFrequency );
+  //double MaxFreq(const Signal &sig,SIGNAL_FFT_TYPE & fft);
+  //void OneDForwardFourier(const Signal& input,SIGNAL_FFT_TYPE & fft);
+  //void OneDBackwardFourier(SIGNAL_FFT_TYPE & fft, Signal &output);
   Signal DetectLocalExtrema(unsigned int width);
   Signal LimPhase();
   Signal MonPhase();