• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

include/DGVTransform.h

Go to the documentation of this file.
00001 
00022 #ifndef DGVTRANSFORM_H
00023 #define DGVTRANSFORM_H
00024 
00026 #include "DGVImage.h" 
00027 #include "DGVConsole.h"
00028 
00030 #include "DGVRadonTransform.h"
00031 #include "DGVFourierTransform.h"
00032 
00034 enum transformType {None = 0, FFT, iFFT, FFT_Real, iFFT_Real, FFT_1D, iFFT_1D, FFT_Real_1D, iFFT_Real_1D,
00035                     FFT_1D_Batch, iFFT_1D_Batch, FFT_Real_1D_Batch, iFFT_Real_1D_Batch,
00036                     radonSlicing, radonSlicing_Real, FRT, iFRT, iFRT_Unscaled};
00037 
00046 class DGV_EXPORT DGVTransform : public QThread
00047 {
00048     Q_OBJECT
00049 
00050 public:
00051     DGVTransform(QObject *parent = 0);
00052     virtual ~DGVTransform();
00053 
00058     inline void setName(QString newName)
00059     {   name = newName; }
00064     inline QString getName()
00065     {   return name;    }
00066 
00073     void frt(DGVImage *image);
00078     void frt(Array<imageType,2> &image);
00083     void ifrt(DGVImage *bins);
00088     void ifrt(Array<imageType,2> &bins);
00093     void ifrtUnscaled(DGVImage *image);
00098     void ifrtUnscaled(Array<imageType,2> &bins);
00100 
00107     void fft(Array<complex<imageType>,2> &image);
00112     void ifft(Array<complex<imageType>,2> &kSpace);
00117     void fft_real(Array<imageType,2> &image);
00122     void ifft_real(Array<complex<imageType>,2> &kSpace);
00127     void fft_1D(Array<complex<imageType>,1> &image);
00132     void fft_1D(Array<complex<imageType>,2> &image);
00137     void ifft_1D(Array<complex<imageType>,1> &kSpace);
00142     void ifft_1D(Array<complex<imageType>,2> &kSpace);
00147     void fft_real_1D(Array<imageType,1> &image);
00152     void fft_real_1D(Array<imageType,2> &image);
00157     void ifft_real_1D(Array<complex<imageType>,1> &kSpace);
00162     void ifft_real_1D(Array<complex<imageType>,2> &kSpace);
00167     void radonSlices(Array<complex<imageType>,2> &kSpace);
00172     void radonSlices(Array<imageType,2> &kSpace);
00174 
00181     void reset();
00186     inline void shiftDC(Array<imageType,2> &kSpace)
00187     {   kSpace = Fourier.shiftDC(kSpace);   }
00192     inline void shiftDC(Array<complex<imageType>,2> &kSpace)
00193     {   kSpace = Fourier.shiftDC(kSpace);   }
00198     inline void normalise(Array<imageType,2> &kSpace)
00199     {   Fourier.normalise(kSpace);   }
00204     inline void normalise(Array<complex<imageType>,2> &kSpace)
00205     {   Fourier.normalise(kSpace);   }
00210     inline void alwaysWaitTillComplete(bool waitTillComplete)
00211     {   alwaysWait = waitTillComplete;    }
00216     DGVImage* getImageResult()
00217     {   return resultImage; }
00223         void setConsole(DGVConsole *newConsole);
00225 
00226 signals:
00231     void resultAvailable(DGVImage *);
00236     void resultAvailable(Array<imageType,1> , QString);
00241     void resultAvailable(Array<imageType,2> , QString);
00246     void resultAvailable_1D(Array<imageType,2> , QString);
00251     void resultAvailable(Array< complex<imageType>,1 > , QString);
00256     void resultAvailable(Array< complex<imageType>,2 > , QString);
00261     void resultAvailable_1D(Array< complex<imageType>,2 > , QString);
00262 
00263 protected:
00264     QMutex mutex;
00265     QWaitCondition condition;
00266     bool abort;
00267     bool alwaysWait; 
00268     bool consoleAssigned; 
00269     QString name; 
00270 
00271     transformType transform; 
00272     Array<imageType,1> *inData_1D; 
00273     Array<imageType,1> *outData_1D; 
00274     Array<imageType,2> *inData; 
00275     Array<imageType,2> *outData; 
00276     Array<complex<imageType>,1> *inComplexData_1D; 
00277     Array<complex<imageType>,1> *outComplexData_1D; 
00278     Array<complex<imageType>,2> *inComplexData; 
00279     Array<complex<imageType>,2> *outComplexData; 
00280 
00281     Array<complex<imageType>,2> fftSpace; 
00282     Array<imageType,2> frtSpace; 
00283 
00284     Array<complex<imageType>,1> fftSpace_1D; 
00285     Array<imageType,1> frtSpace_1D; 
00286 
00287     DGVRadonTransform<imageType> RT; 
00288     DGVFourierTransform<imageType,1> Fourier_1D; 
00289     DGVFourierTransform<imageType,2> Fourier; 
00290 
00291     DGVImage *resultImage; 
00292     DGVConsole *console; 
00293 
00298     void run();
00299 };
00300 
00301 
00302 
00303 #endif // DGVTRANSFORM_H

Generated on Wed Sep 8 2010 01:36:51 for DGV by  doxygen 1.7.1