Openholo  v2.1
Open Source Digital Holographic Library
ophNonHogelLF.h
Go to the documentation of this file.
1 #ifndef __ophNonHogelLF_h
2 #define __ophNonHogelLF_h
3 
4 #include "ophGen.h"
5 #include <fstream>
6 #include <io.h>
7 
8 using namespace oph;
9 
10 
11 //Build Option : Multi Core Processing (OpenMP)
12 #ifdef _OPENMP
13 #include <omp.h>
14 #endif#pragma once
15 
16 
17 class GEN_DLL ophNonHogelLF : public ophGen
18 {
19 public:
23  explicit ophNonHogelLF(void);
24 
25 protected:
29  virtual ~ophNonHogelLF(void) {}
30 
31 private:
32 
33  uchar** LF;
34  Complex<Real>** FToverUV_LF;
35  Complex<Real>* WField;
36  Complex<Real>* Hologram;
37 
38 private:
39 
40  // Light Field save parameters
41 
42  const char* LF_directory;
43  const char* ext;
44 
45 public:
46  inline void setNumImage(int nx, int ny) { num_image[_X] = nx; num_image[_Y] = ny; }
47  inline void setNumImage(ivec2 num) { num_image = num; }
48  inline void setResolImage(int nx, int ny) { resolution_image[_X] = nx; resolution_image[_Y] = ny; }
49  inline void setResolImage(ivec2 num) { resolution_image = num; }
50  inline void setDistRS2Holo(Real dist) { distanceRS2Holo = dist; }
51  inline void setFieldLens(Real lens) { fieldLens = lens; }
52  inline ivec2 getNumImage() { return num_image; }
53  inline ivec2 getResolImage() { return resolution_image; }
54  inline Real getDistRS2Holo() { return distanceRS2Holo; }
55  inline Real getFieldLens() { return fieldLens; }
56  inline uchar** getLF() { return LF; }
57 
58 public:
69  bool readConfig(const char* fname);
70 
78  int loadLF(const char* directory, const char* exten);
79  int loadLF();
80  //void readPNG(const string filename, uchar* data);
81 
86  void preprocessLF();
87  void generateHologram();
88  void generateHologram(double thetaX, double thetaY);
89 
90  // for Testing
91  void writeIntensity_gray8_bmp(const char* fileName, int nx, int ny, Complex<Real>* complexvalue, int k = -1);
101  void setViewingWindow(bool is_ViewingWindow);
102 protected:
103 
104  // Inner functions
105 
106  void initializeLF();
107  void convertLF2ComplexFieldUsingNonHogelMethod();
108  void makeRandomWField();
109  void makePlaneWaveWField(double thetaX, double thetaY);
110  void fourierTransformOverUVLF();
111  void setBuffer();
112 
113  // ==== GPU Methods ===============================================
114  //void prepareInputdataGPU();
115  //void convertLF2ComplexField_GPU();
116  //void fresnelPropagation_GPU();
117 
118 private:
119 
120  ivec2 num_image;
121  ivec2 resolution_image;
122  Real distanceRS2Holo;
123  Real fieldLens;
124  bool is_ViewingWindow;
125  int nImages;
126  int nBufferX;
127  int nBufferY;
128 };
129 
130 
131 #endif
unsigned char uchar
Definition: typedef.h:64
#define GEN_DLL
Definition: ophGen.h:54
void setResolImage(ivec2 num)
Definition: ophNonHogelLF.h:49
void setResolImage(int nx, int ny)
Definition: ophNonHogelLF.h:48
#define _Y
Definition: define.h:84
def k(wvl)
Definition: Depthmap.py:16
void setNumImage(ivec2 num)
Definition: ophNonHogelLF.h:47
uchar ** getLF()
Definition: ophNonHogelLF.h:56
void setDistRS2Holo(Real dist)
Definition: ophNonHogelLF.h:50
virtual ~ophNonHogelLF(void)
Destructor.
Definition: ophNonHogelLF.h:29
ivec2 getResolImage()
Definition: ophNonHogelLF.h:53
Real getFieldLens()
Definition: ophNonHogelLF.h:55
void setNumImage(int nx, int ny)
Definition: ophNonHogelLF.h:46
float Real
Definition: typedef.h:55
#define _X
Definition: define.h:80
void setFieldLens(Real lens)
Definition: ophNonHogelLF.h:51
Definition: Bitmap.h:49
Real getDistRS2Holo()
Definition: ophNonHogelLF.h:54
Definition: ophGen.h:68
ivec2 getNumImage()
Definition: ophNonHogelLF.h:52