Openholo  v2.1
Open Source Digital Holographic Library
ophPAS_GPU.h
Go to the documentation of this file.
1 #ifndef __ophPAS_GPU_h
2 #define __ophPAS_GPU_h
3 
4 #include "ophGen.h"
5 
6 
7 using namespace oph;
8 
9 #define PI (3.14159265358979323846f)
10 #define M2_PI (PI*2.0)
11 #define RADIANS (PI/180.0) // Angle in radians
12 // DEGREE*asin(mytheta)
13 #define DEGREE2 (180./PI) // sin(RADIANS*DEGREE*asin(mytheta))
14 
15 #define NUMTBL 1024
16 #define NUMTBL2 (NUMTBL-1)
17 #define MAX_STR_LEN 4000
18 
19 #define FFT_SEGMENT_SIZE 64
20 
21 
22 struct constValue {
23  int* cf_cx;
24  int* cf_cy;
25  float* xc;
26  float* yc;
27 
28  float* costbl;
29  float* sintbl;
30  float cx, cy, cz, amplitude;
31  int segx, segy, segn;
32 
33 
34 };
35 
36 
37 class GEN_DLL ophPAS_GPU : public ophGen
38 {
39 private:
40  OphPointCloudConfig pc_config;
41  OphPointCloudData pc_data;
42  constValue val_d;
43 
44  int n_points;
45 public:
46  explicit ophPAS_GPU();
47 protected:
48  virtual ~ophPAS_GPU();
49 
50 public:
51 
52 
53 
54  bool readConfig(const char* fname);
55  int loadPoint(const char* _filename);
56 
57  //int saveAsImg(const char * fname, uint8_t bitsperpixel, void* src, int pic_width, int pic_height); // À̹ÌÁö ÀúÀå
58  int save(const char * fname, uint8_t bitsperpixel, uchar* src, uint px, uint py);
59  void save(const char* fname);
60 
61  //util
62  char* trim(char *s); // ¹®ÀÚ¿­ ÁÂ¿ì °ø¹é ¸ðµÎ »èÁ¦ ÇÔ¼ö char* ltrim(char *s); // ¹®ÀÚ¿­ ÁÂÃø °ø¹é Á¦°Å ÇÔ¼ö char* rtrim(char* s); // ¹®ÀÚ¿­ ¿ìÃø °ø¹é Á¦°Å ÇÔ¼ö //void PASCalcuation(long voxnum, unsigned char *cghfringe, VoxelStruct* h_vox, CGHEnvironmentData* _CGHE); void PASCalculation(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf); //void PAS(long voxelnum, struct VoxelStruct *voxel, double *m_pHologram, CGHEnvironmentData* _CGHE); void PAS(long voxelnum, OphPointCloudData *data, double *m_pHologram, OphPointCloudConfig& conf); void DataInit(int segsize, int cghwidth, int cghheight, float xiinter, float etainter); void DataInit(OphPointCloudConfig& conf); void MemoryRelease(void); void generateHologram(); void PASCalculation_GPU(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf); void CalcSpatialFrequency(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float * xc, float * yc, float * sf_cx, float * sf_cy, int * pp_cx, int * pp_cy, int * cf_cx, int * cf_cy, float xiint, float etaint, OphPointCloudConfig& conf); void CalcCompensatedPhase(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float *xc, float *yc, int *cf_cx, int *cf_cy, float *COStbl, float *SINtbl, float **inRe, float **inIm, OphPointCloudConfig& conf); void RunFFTW(int segnumx, int segnumy, int segsize, int hsegsize, float **inRe, float **inIm, fftw_complex *in, fftw_complex *out, fftw_plan *plan, double *pHologram, OphPointCloudConfig& conf); void encodeHologram(const vec2 band_limit, const vec2 spectrum_shift); void encoding(unsigned int ENCODE_FLAG); double *m_pHologram; float* m_COStbl; float* m_SINtbl; int m_segSize; int m_hsegSize; int m_dsegSize; int m_segNumx; int m_segNumy; int m_hsegNumx; int m_hsegNumy; float *m_SFrequency_cx; float *m_SFrequency_cy; int *m_PickPoint_cx; int *m_PickPoint_cy; int *m_Coefficient_cx; int *m_Coefficient_cy; float *m_xc; float *m_yc; unsigned char* cgh_fringe; float m_sf_base; float *m_inReHost; float *m_inImHost; fftw_complex *m_in, *m_out; fftw_plan m_plan; float **m_inRe; float **m_inIm; float *m_inRe_h; float *m_inIm_h; float m_cx; float m_cy; float m_cz; float m_amp; }; #endif // !__ophPAS_h
63  char* ltrim(char *s); // ¹®ÀÚ¿­ ÁÂÃø °ø¹é Á¦°Å ÇÔ¼ö char* rtrim(char* s); // ¹®ÀÚ¿­ ¿ìÃø °ø¹é Á¦°Å ÇÔ¼ö //void PASCalcuation(long voxnum, unsigned char *cghfringe, VoxelStruct* h_vox, CGHEnvironmentData* _CGHE); void PASCalculation(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf); //void PAS(long voxelnum, struct VoxelStruct *voxel, double *m_pHologram, CGHEnvironmentData* _CGHE); void PAS(long voxelnum, OphPointCloudData *data, double *m_pHologram, OphPointCloudConfig& conf); void DataInit(int segsize, int cghwidth, int cghheight, float xiinter, float etainter); void DataInit(OphPointCloudConfig& conf); void MemoryRelease(void); void generateHologram(); void PASCalculation_GPU(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf); void CalcSpatialFrequency(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float * xc, float * yc, float * sf_cx, float * sf_cy, int * pp_cx, int * pp_cy, int * cf_cx, int * cf_cy, float xiint, float etaint, OphPointCloudConfig& conf); void CalcCompensatedPhase(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float *xc, float *yc, int *cf_cx, int *cf_cy, float *COStbl, float *SINtbl, float **inRe, float **inIm, OphPointCloudConfig& conf); void RunFFTW(int segnumx, int segnumy, int segsize, int hsegsize, float **inRe, float **inIm, fftw_complex *in, fftw_complex *out, fftw_plan *plan, double *pHologram, OphPointCloudConfig& conf); void encodeHologram(const vec2 band_limit, const vec2 spectrum_shift); void encoding(unsigned int ENCODE_FLAG); double *m_pHologram; float* m_COStbl; float* m_SINtbl; int m_segSize; int m_hsegSize; int m_dsegSize; int m_segNumx; int m_segNumy; int m_hsegNumx; int m_hsegNumy; float *m_SFrequency_cx; float *m_SFrequency_cy; int *m_PickPoint_cx; int *m_PickPoint_cy; int *m_Coefficient_cx; int *m_Coefficient_cy; float *m_xc; float *m_yc; unsigned char* cgh_fringe; float m_sf_base; float *m_inReHost; float *m_inImHost; fftw_complex *m_in, *m_out; fftw_plan m_plan; float **m_inRe; float **m_inIm; float *m_inRe_h; float *m_inIm_h; float m_cx; float m_cy; float m_cz; float m_amp; }; #endif // !__ophPAS_h
64  char* rtrim(char* s); // ¹®ÀÚ¿­ ¿ìÃø °ø¹é Á¦°Å ÇÔ¼ö //void PASCalcuation(long voxnum, unsigned char *cghfringe, VoxelStruct* h_vox, CGHEnvironmentData* _CGHE); void PASCalculation(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf); //void PAS(long voxelnum, struct VoxelStruct *voxel, double *m_pHologram, CGHEnvironmentData* _CGHE); void PAS(long voxelnum, OphPointCloudData *data, double *m_pHologram, OphPointCloudConfig& conf); void DataInit(int segsize, int cghwidth, int cghheight, float xiinter, float etainter); void DataInit(OphPointCloudConfig& conf); void MemoryRelease(void); void generateHologram(); void PASCalculation_GPU(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf); void CalcSpatialFrequency(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float * xc, float * yc, float * sf_cx, float * sf_cy, int * pp_cx, int * pp_cy, int * cf_cx, int * cf_cy, float xiint, float etaint, OphPointCloudConfig& conf); void CalcCompensatedPhase(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float *xc, float *yc, int *cf_cx, int *cf_cy, float *COStbl, float *SINtbl, float **inRe, float **inIm, OphPointCloudConfig& conf); void RunFFTW(int segnumx, int segnumy, int segsize, int hsegsize, float **inRe, float **inIm, fftw_complex *in, fftw_complex *out, fftw_plan *plan, double *pHologram, OphPointCloudConfig& conf); void encodeHologram(const vec2 band_limit, const vec2 spectrum_shift); void encoding(unsigned int ENCODE_FLAG); double *m_pHologram; float* m_COStbl; float* m_SINtbl; int m_segSize; int m_hsegSize; int m_dsegSize; int m_segNumx; int m_segNumy; int m_hsegNumx; int m_hsegNumy; float *m_SFrequency_cx; float *m_SFrequency_cy; int *m_PickPoint_cx; int *m_PickPoint_cy; int *m_Coefficient_cx; int *m_Coefficient_cy; float *m_xc; float *m_yc; unsigned char* cgh_fringe; float m_sf_base; float *m_inReHost; float *m_inImHost; fftw_complex *m_in, *m_out; fftw_plan m_plan; float **m_inRe; float **m_inIm; float *m_inRe_h; float *m_inIm_h; float m_cx; float m_cy; float m_cz; float m_amp; }; #endif // !__ophPAS_h
65 
66 
67 
68  //void PASCalcuation(long voxnum, unsigned char *cghfringe, VoxelStruct* h_vox, CGHEnvironmentData* _CGHE);
69  void PASCalculation(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf);
70  //void PAS(long voxelnum, struct VoxelStruct *voxel, double *m_pHologram, CGHEnvironmentData* _CGHE);
71  void PAS(long voxelnum, OphPointCloudData *data, double *m_pHologram, OphPointCloudConfig& conf);
72  void DataInit(int segsize, int cghwidth, int cghheight, float xiinter, float etainter);
73  void DataInit(OphPointCloudConfig& conf);
74  void MemoryRelease(void);
75 
76  void generateHologram();
77  void PASCalculation_GPU(long voxnum, unsigned char * cghfringe, OphPointCloudData *data, OphPointCloudConfig& conf);
78 
79 
80  void CalcSpatialFrequency(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float * xc, float * yc, float * sf_cx, float * sf_cy, int * pp_cx, int * pp_cy, int * cf_cx, int * cf_cy, float xiint, float etaint, OphPointCloudConfig& conf);
81 
82  void CalcCompensatedPhase(float cx, float cy, float cz, float amp, int segnumx, int segnumy, int segsize, int hsegsize, float sf_base, float *xc, float *yc, int *cf_cx, int *cf_cy, float *COStbl, float *SINtbl, float **inRe, float **inIm, OphPointCloudConfig& conf);
83 
84  void RunFFTW(int segnumx, int segnumy, int segsize, int hsegsize, float **inRe, float **inIm, fftw_complex *in, fftw_complex *out, fftw_plan *plan, double *pHologram, OphPointCloudConfig& conf);
85 
86  void encodeHologram(const vec2 band_limit, const vec2 spectrum_shift);
87 
88  void encoding(unsigned int ENCODE_FLAG);
89 
90 
91  double *m_pHologram;
92 
93  float* m_COStbl;
94  float* m_SINtbl;
95 
96  int m_segSize;
97  int m_hsegSize;
98  int m_dsegSize;
99  int m_segNumx;
100  int m_segNumy;
101  int m_hsegNumx;
102  int m_hsegNumy;
103 
104  float *m_SFrequency_cx;
105  float *m_SFrequency_cy;
106  int *m_PickPoint_cx;
107  int *m_PickPoint_cy;
108  int *m_Coefficient_cx;
109  int *m_Coefficient_cy;
110  float *m_xc;
111  float *m_yc;
112  unsigned char* cgh_fringe;
113 
114  float m_sf_base;
115  float *m_inReHost;
116  float *m_inImHost;
117  fftw_complex *m_in, *m_out;
118  fftw_plan m_plan;
119 
120  float **m_inRe;
121  float **m_inIm;
122  float *m_inRe_h;
123  float *m_inIm_h;
124 
125  float m_cx;
126  float m_cy;
127  float m_cz;
128  float m_amp;
129 };
130 
131 
132 #endif // !__ophPAS_h
unsigned char uchar
Definition: typedef.h:64
#define GEN_DLL
Definition: ophGen.h:54
__managed__ float amplitude
Definition: ophPAS_GPU.cpp:28
Configuration for Point Cloud.
Definition: ophGen.h:522
Data for Point Cloud.
Definition: ophGen.h:549
Definition: Bitmap.h:49
unsigned int uint
Definition: typedef.h:62
Definition: ophGen.h:68