00001 #ifndef _FVR_vuFourierClusterN_H_
00002 #define _FVR_vuFourierClusterN_H_
00003
00004 #include "vuFourierCluster.h"
00005 #include "General/vuMisc/vuProgressHandler.h"
00006
00007 template <int SIZE, class TYPE>
00008 class vuFourierClusterN
00009 {
00010 public:
00011 void preprocess(dword numberOfViews,
00012 vuSphericView<SIZE,TYPE> **view,
00013 vuProgressHandler *handler=NULL);
00014
00015 void prepareForInteractive(dword width, dword height);
00016 void addView(vuSphericView<1,TYPE> *view);
00017
00018 void setSliceFilter(vuSliceFilter *sliceFilter);
00019 vuSliceFilter *getSliceFilter();
00020
00021 void setFilter(vuFourierFilter* filter);
00022
00023 dword getImageWidth();
00024 dword getImageHeight();
00025
00027 bool isPreprocessed();
00028
00030 bool isPreparedForInteractive();
00031
00033 void setNoInteractiveMode();
00034
00036 bool writeFourierToFile(const char *fileName,
00037 vuProgressHandler *handler = NULL);
00038
00040 bool writeSpatialVolume(const char *fileName,
00041 vuProgressHandler *handler = NULL);
00042
00043
00044 void setCamera(vuCamera *camera);
00045
00046 void computeSlice();
00047
00048 void scaleAndBias(TYPE *byte);
00049
00050 void computeUnscaledImage(vuCamera *camera, vuFixelMap<SIZE,float>* &image,
00051 float &minVal, float &maxVal, word method);
00052
00053 private:
00054 void _preprocess(dword num, vuSphericView<SIZE,TYPE> **views);
00055
00056 private:
00057 vuFourierCluster<TYPE> m_Volume[SIZE];
00058 };
00059
00060 template vuFourierClusterN<1,byte>;
00061 template vuFourierClusterN<2,byte>;
00062 template vuFourierClusterN<3,byte>;
00063 template vuFourierClusterN<1,float>;
00064 template vuFourierClusterN<2,float>;
00065 template vuFourierClusterN<3,float>;
00066
00067 typedef vuFourierClusterN<1,byte> vuFourierClusterN1B;
00068 typedef vuFourierClusterN<2,byte> vuFourierClusterN2B;
00069 typedef vuFourierClusterN<3,byte> vuFourierClusterN3B;
00070 typedef vuFourierClusterN<1,float> vuFourierClusterN1F;
00071 typedef vuFourierClusterN<2,float> vuFourierClusterN2F;
00072 typedef vuFourierClusterN<3,float> vuFourierClusterN3F;
00073
00074 #endif