00001 #ifndef __GENERAL_VU_SphVwFlt_Fourier_H__
00002 #define __GENERAL_VU_SphVwFlt_Fourier_H__
00003
00004 #include "../vuSphericViewFilter.h"
00005 #include "vuFourierCluster.h"
00006 #include "vuFourier/vuFourierFilter/vuFourierFilter.h"
00007
00008 template <int SIZE, class TYPE>
00009 class vuSphVwFlt_Fourier : public vuSphericViewFilter<SIZE,TYPE>
00010 {
00011 private:
00012 using vuSphericViewFilter<SIZE,TYPE>::m_NumberOfViews;
00013 using vuSphericViewFilter<SIZE,TYPE>::m_Views;
00014 public:
00015 vuSphVwFlt_Fourier(const vuString& filterName);
00016
00017 bool needPreprocessing() { return true; };
00018 bool needViewsForFiltering() { return false; };
00019 void filter(vuCamera *camera);
00020 void preprocess(vuProgressHandler *handler=NULL);
00021
00022
00023
00024 void setFourierFilter(vuFourierFilter *filter);
00025 void setSliceFilter(vuSliceFilter *filter);
00026
00027 void computeUnscaledImage(vuCamera *camera, vuFixelMap<SIZE,float>* &image,
00028 float &minVal, float &maxVal, word method);
00029
00030 void computeUnscaledImage(vuCamera *camera, vuFixelMap<SIZE,float>* &image,
00031 word method);
00032
00033 bool isPreparedForInteractive();
00034 void setNoInteractiveMode();
00035
00037 bool writeFourierToFile(const char *fileName,
00038 vuProgressHandler *handler = NULL);
00039
00041 bool writeSpatialVolume(const char *fileName,
00042 vuProgressHandler *handler = NULL);
00043
00044 void prepareForInteractive(dword width, dword height);
00045 void addViewWithIndexToVolume(dword idx);
00046
00047 private:
00048 vuFourierCluster<SIZE,TYPE> m_Volume;
00049 };
00050
00051 template class vuSphVwFlt_Fourier<1,byte>;
00052 template class vuSphVwFlt_Fourier<2,byte>;
00053 template class vuSphVwFlt_Fourier<3,byte>;
00054
00055 template class vuSphVwFlt_Fourier<1,float>;
00056 template class vuSphVwFlt_Fourier<2,float>;
00057 template class vuSphVwFlt_Fourier<3,float>;
00058
00059 typedef vuSphVwFlt_Fourier<1,byte> vuSphVwFlt_Fourier1B;
00060 typedef vuSphVwFlt_Fourier<2,byte> vuSphVwFlt_Fourier2B;
00061 typedef vuSphVwFlt_Fourier<3,byte> vuSphVwFlt_Fourier3B;
00062
00063 typedef vuSphVwFlt_Fourier<1,float> vuSphVwFlt_Fourier1F;
00064 typedef vuSphVwFlt_Fourier<2,float> vuSphVwFlt_Fourier2F;
00065 typedef vuSphVwFlt_Fourier<3,float> vuSphVwFlt_Fourier3F;
00066
00067 #endif