Openholo  v1.0
Open Source Digital Holographic Library
ophTri Class Reference

Openholo Triangular Mesh based CGH generation. More...

#include <ophTriMesh.h>

Inheritance diagram for ophTri:
Collaboration diagram for ophTri:

Public Types

enum  SHADING_FLAG { SHADING_FLAT, SHADING_CONTINUOUS }
 
- Public Types inherited from ophGen
enum  ENCODE_FLAG {
  ENCODE_PHASE, ENCODE_AMPLITUDE, ENCODE_REAL, ENCODE_SIMPLENI,
  ENCODE_BURCKHARDT, ENCODE_TWOPHASE, ENCODE_SSB, ENCODE_OFFSSB,
  ENCODE_SYMMETRIZATION
}
 
enum  SSB_PASSBAND { SSB_LEFT, SSB_RIGHT, SSB_TOP, SSB_BOTTOM }
 

Public Member Functions

 ophTri (void)
 Constructor. More...
 
void setObjSize (Real in)
 SHADING_FLAT, SHADING_CONTINUOUS. More...
 
void setObjShift (vec3 in)
 
void setObjShift (vector< Real > in)
 
void setCarrierWave (Real in1, Real in2, Real in3)
 
void setIllumination (vec3 in)
 
void setIllumination (Real inx, Real iny, Real inz)
 
void setShadingType (int in)
 
ulonglong getNumMesh ()
 
RealgetMeshData ()
 
Complex< Real > * getAngularSpectrum ()
 
RealgetScaledMeshData ()
 
const RealgetObjSize (void)
 
const vec3 & getObjShift (void)
 
const vec3 & getIllumination (void)
 
const RealgetFieldLens (void)
 
void setMode (bool is_CPU)
 Set the value of a variable is_CPU(true or false) More...
 
bool readConfig (const char *fname)
 Triangular mesh basc CGH configuration file load. More...
 
bool loadMeshData (const char *fileName, const char *ext)
 Mesh data load. More...
 
void objScaleShift ()
 Mesh object data scaling and shifting. More...
 
void objScaleShift (Real objSize_, vector< Real > objShift_)
 
void objScaleShift (Real objSize_, vec3 objShift_)
 
void generateHologram (uint SHADING_FLAG)
 Hologram generation. More...
 
void generateMeshHologram ()
 
void setViewingWindow (bool is_ViewingWindow)
 Set the value of a variable is_ViewingWindow(true or false) More...
 
- Public Member Functions inherited from ophGen
 ophGen (void)
 Constructor. More...
 
Real ** getEncodedBuffer (void)
 Function for getting the encoded complex field buffer. More...
 
uchar ** getNormalizedBuffer (void)
 Function for getting the normalized(0~255) complex field buffer. More...
 
void initialize (void)
 Initialize variables for Hologram complex field, encoded data, normalized data. More...
 
int loadPointCloud (const char *pc_file, OphPointCloudData *pc_data_)
 load to point cloud data. More...
 
bool readConfig (const char *fname)
 load to configuration file. More...
 
void propagationAngularSpectrum (int ch, Complex< Real > *input_u, Real propagation_dist, Real k, Real lambda)
 Angular spectrum propagation method. More...
 
void normalize (void)
 Normalization function to save as image file after hologram creation. More...
 
bool save (const char *fname, uint8_t bitsperpixel=8, uchar *src=nullptr, uint px=0, uint py=0)
 Function for saving image files. More...
 
void * load (const char *fname)
 Function for loading image files. More...
 
virtual bool loadAsOhc (const char *fname)
 Function to read OHC file. More...
 
virtual void encoding (unsigned int ENCODE_FLAG, Complex< Real > *holo=nullptr, bool bShift=false)
 Encoding Functions. More...
 
virtual void encoding (unsigned int ENCODE_FLAG, unsigned int SSB_PASSBAND, Complex< Real > *holo=nullptr)
 
void encoding ()
 
void waveCarry (Real carryingAngleX, Real carryingAngleY, Real distance)
 Wave carry. More...
 
ivec2 & getEncodeSize (void)
 Function for getting encode size. More...
 
void setResolution (ivec2 resolution)
 Function for setting buffer size. More...
 
Real getElapsedTime ()
 Function for getting elapsed time.
More...
 
void fresnelPropagation (OphConfig context, Complex< Real > *in, Complex< Real > *out, Real distance)
 Fresnel propagation. More...
 
void fresnelPropagation (Complex< Real > *in, Complex< Real > *out, Real distance, uint channel)
 Fresnel propagation. More...
 
- Public Member Functions inherited from Openholo
 Openholo (void)
 Constructor. More...
 
virtual bool saveAsImg (const char *fname, uint8_t bitsperpixel, uchar *src, int width, int height)
 Function for creating image files. More...
 
virtual ucharloadAsImg (const char *fname)
 Function for loading image files. More...
 
virtual bool saveAsOhc (const char *fname)
 Function to write OHC file
More...
 
Complex< Real > ** getComplexField (void)
 Function for getting the complex field. More...
 
OphConfiggetContext (void)
 Function for getting the current context. More...
 
void setPixelNumber (ivec2 n)
 Function for setting the output resolution. More...
 
void setPixelPitch (vec2 p)
 Function for setting the output pixel pitch. More...
 
void setWaveLength (Real w, const uint idx)
 Function for setting the wave length. More...
 
- Public Member Functions inherited from Base
 Base (void)
 Constructor. More...
 
unsigned long addRef (void)
 If referenced this(Base's child, not abstract class) instance, must call this method. More...
 
unsigned long release (void)
 Call release() when reference is finished. More...
 

Protected Member Functions

virtual ~ophTri (void)
 Destructor. More...
 
- Protected Member Functions inherited from ophGen
virtual ~ophGen (void)=0
 Destructor. More...
 
bool save (const char *fname, uint8_t bitsperpixel, uint px, uint py, uint fnum, uchar *args ...)
 Called when saving multiple hologram data at a time. More...
 
void resetBuffer ()
 reset buffer More...
 
void numericalInterference (Complex< Real > *holo, Real *encoded, const int size)
 Encoding method. More...
 
void twoPhaseEncoding (Complex< Real > *holo, Real *encoded, const int size)
 
void burckhardt (Complex< Real > *holo, Real *encoded, const int size)
 
void singleSideBand (Complex< Real > *holo, Real *encoded, const ivec2 holosize, int passband)
 Encoding method. More...
 
void encodeSymmetrization (Complex< Real > *holo, Real *encoded, const ivec2 sig_loc)
 Encoding method. More...
 
void freqShift (Complex< Real > *src, Complex< Real > *dst, const ivec2 holosize, int shift_x, int shift_y)
 Frequency shift. More...
 
void encodeSideBand (bool bCPU, ivec2 sig_location)
 Encode the CGH according to a signal location parameter. More...
 
void encodeSideBand_CPU (int cropx1, int cropx2, int cropy1, int cropy2, ivec2 sig_location)
 Encode the CGH according to a signal location parameter on the CPU. More...
 
void encodeSideBand_GPU (int cropx1, int cropx2, int cropy1, int cropy2, ivec2 sig_location)
 Encode the CGH according to a signal location parameter on the GPU. More...
 
void getShiftPhaseValue (Complex< Real > &shift_phase_val, int idx, ivec2 sig_location)
 Calculate the shift phase value. More...
 
void getRandPhaseValue (Complex< Real > &rand_phase_val, bool rand_phase)
 Assign random phase value if RANDOM_PHASE == 1. More...
 
virtual void ophFree (void)
 Pure virtual function for override in child classes. More...
 
- Protected Member Functions inherited from Openholo
virtual ~Openholo (void)=0
 Destructor. More...
 
bool checkExtension (const char *fname, const char *ext)
 Functions for extension checking. More...
 
bool loadAsImgUpSideDown (const char *fname, uchar *dst)
 Function for loading image files | Output image data upside down. More...
 
bool getImgSize (int &w, int &h, int &bytesperpixel, const char *fname)
 Function for getting the image size. More...
 
void imgScaleBilnear (uchar *src, uchar *dst, int w, int h, int neww, int newh)
 Function for change image size. More...
 
void convertToFormatGray8 (uchar *src, uchar *dst, int w, int h, int bytesperpixel)
 Function for convert image format to gray8. More...
 
void fft1 (int n, Complex< Real > *in, int sign=OPH_FORWARD, uint flag=OPH_ESTIMATE)
 Functions for performing fftw 1-dimension operations inside Openholo. More...
 
void fft2 (ivec2 n, Complex< Real > *in, int sign=OPH_FORWARD, uint flag=OPH_ESTIMATE)
 Functions for performing fftw 2-dimension operations inside Openholo. More...
 
void fft3 (ivec3 n, Complex< Real > *in, int sign=OPH_FORWARD, uint flag=OPH_ESTIMATE)
 Functions for performing fftw 3-dimension operations inside Openholo. More...
 
void fftExecute (Complex< Real > *out)
 Execution functions to be called after fft1, fft2, and fft3. More...
 
void fftFree (void)
 
void fftwShift (Complex< Real > *src, Complex< Real > *dst, int nx, int ny, int type, bool bNormalized=false)
 Convert data from the spatial domain to the frequency domain using 2D FFT on CPU. More...
 
void fftShift (int nx, int ny, Complex< Real > *input, Complex< Real > *output)
 Swap the top-left quadrant of data with the bottom-right , and the top-right quadrant with the bottom-left. More...
 
void setPixelNumberOHC (const ivec2 pixel_number)
 getter/setter for OHC file read and write More...
 
void setPixelPitchOHC (const vec2 pixel_pitch)
 
void setWavelengthOHC (const Real wavelength, const LenUnit wavelength_unit)
 
void setWaveLengthNumOHC (const uint wavelength_num)
 
void setColorTypeOHC (const ColorType color_type)
 
void setColorArrangeOHC (const ColorArran color_arrange)
 
void setWaveLengthUnitOHC (const LenUnit length_unit)
 
void setFieldEncodingOHC (const FldStore field_store, const FldCodeType field_code_type)
 
void setPhaseEncodingOHC (const BPhaseCode phase_code, const vec2 phase_code_range)
 
void addWaveLengthNComplexFieldDataOHC (const Real wavelength, const OphComplexField &complex_field)
 Function to add ComplexField when adding wavelength data. More...
 
void addWaveLengthOHC (const Real wavelength)
 
void addComplexFieldDataOHC (const OphComplexField &complex_field)
 
void getPixelNumberOHC (ivec2 &pixel_number)
 
void getPixelPitchOHC (vec2 &pixel_pitch)
 
void getWavelengthOHC (vector< Real > &wavelength)
 
void getWaveLengthNumOHC (uint &wavelength_num)
 
void getColorTypeOHC (ColorType &color_type)
 
void getColorArrangeOHC (ColorArran &color_arrange)
 
void getWaveLengthUnitOHC (LenUnit &length_unit)
 
void getComplexFieldDataOHC (Complex< Real > **cmplx, uint wavelen_idx)
 
void getComplexFieldDataOHC (OphComplexField &cmplx, uint wavelen_idx)
 
- Protected Member Functions inherited from Base
virtual ~Base (void)
 Destructor. More...
 

Additional Inherited Members

- Protected Attributes inherited from ophGen
ivec2 encode_size
 Encoded hologram size, varied from encoding type. More...
 
int ENCODE_METHOD
 Encoding method flag. More...
 
int SSB_PASSBAND
 Passband in Single-side band encoding. More...
 
Real elapsedTime
 Elapsed time of generate hologram. More...
 
Real ** holo_encoded
 buffer to encoded. More...
 
uchar ** holo_normalized
 buffer to normalized. More...
 
- Protected Attributes inherited from Openholo
OphConfig context_
 
Complex< Real > ** complex_H
 
ImgEncoderOhcOHC_encoder
 OHC file format Variables for read and write. More...
 
ImgDecoderOhcOHC_decoder
 
- Protected Attributes inherited from Base
unsigned long refCnt
 

Detailed Description

Openholo Triangular Mesh based CGH generation.

Author
Yeon-Gyeong Ju, Jae-Hyeung Park

Definition at line 100 of file ophTriMesh.h.

Member Enumeration Documentation

◆ SHADING_FLAG

Enumerator
SHADING_FLAT 
SHADING_CONTINUOUS 

Definition at line 199 of file ophTriMesh.h.

Constructor & Destructor Documentation

◆ ophTri()

ophTri::ophTri ( void  )
inlineexplicit

Constructor.

Definition at line 106 of file ophTriMesh.h.

◆ ~ophTri()

virtual ophTri::~ophTri ( void  )
inlineprotectedvirtual

Destructor.

Definition at line 118 of file ophTriMesh.h.

Member Function Documentation

◆ generateHologram()

void ophTri::generateHologram ( uint  SHADING_FLAG)

Hologram generation.

Parameters
SHADING_FLAG: SHADING_FLAT, SHADING_CONTINUOUS This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 410 of file ophTriMesh.cpp.

◆ generateMeshHologram()

void ophTri::generateMeshHologram ( )

Definition at line 444 of file ophTriMesh.cpp.

◆ getAngularSpectrum()

Complex<Real>* ophTri::getAngularSpectrum ( )
inline

Definition at line 152 of file ophTriMesh.h.

◆ getFieldLens()

const Real& ophTri::getFieldLens ( void  )
inline

Definition at line 158 of file ophTriMesh.h.

◆ getIllumination()

const vec3& ophTri::getIllumination ( void  )
inline

Definition at line 157 of file ophTriMesh.h.

◆ getMeshData()

Real* ophTri::getMeshData ( )
inline

Definition at line 151 of file ophTriMesh.h.

◆ getNumMesh()

ulonglong ophTri::getNumMesh ( )
inline

Definition at line 150 of file ophTriMesh.h.

◆ getObjShift()

const vec3& ophTri::getObjShift ( void  )
inline

Definition at line 156 of file ophTriMesh.h.

◆ getObjSize()

const Real& ophTri::getObjSize ( void  )
inline

Definition at line 155 of file ophTriMesh.h.

◆ getScaledMeshData()

Real* ophTri::getScaledMeshData ( )
inline

Definition at line 153 of file ophTriMesh.h.

◆ loadMeshData()

bool ophTri::loadMeshData ( const char *  fileName,
const char *  ext 
)

Mesh data load.

Text file data structure : N*9 / Each row = [x1 y1 z1 x2 y2 z2 x3 y3 z3]

File extension : txt, ply

Parameters
extFile extension
Returns
bool return false : Failed to load mesh data return true : Success to load mesh data

Definition at line 105 of file ophTriMesh.cpp.

◆ objScaleShift() [1/3]

void ophTri::objScaleShift ( )

Mesh object data scaling and shifting.

Parameters
objSize_Object maximum of width and height / unit : [m]
objShift_Object shift value / Data structure : [shiftX, shiftY, shiftZ] / unit : [m]
Returns
scaledMeshData This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 277 of file ophTriMesh.cpp.

◆ objScaleShift() [2/3]

void ophTri::objScaleShift ( Real  objSize_,
vector< Real objShift_ 
)

Definition at line 319 of file ophTriMesh.cpp.

◆ objScaleShift() [3/3]

void ophTri::objScaleShift ( Real  objSize_,
vec3  objShift_ 
)

Definition at line 356 of file ophTriMesh.cpp.

◆ readConfig()

bool ophTri::readConfig ( const char *  fname)

Triangular mesh basc CGH configuration file load.

xml configuration file load

Returns
bool return false : Failed to load configure file return true : Success to load configure file

Definition at line 137 of file ophTriMesh.cpp.

◆ setCarrierWave()

void ophTri::setCarrierWave ( Real  in1,
Real  in2,
Real  in3 
)
inline

Definition at line 146 of file ophTriMesh.h.

◆ setIllumination() [1/2]

void ophTri::setIllumination ( vec3  in)
inline

Definition at line 147 of file ophTriMesh.h.

◆ setIllumination() [2/2]

void ophTri::setIllumination ( Real  inx,
Real  iny,
Real  inz 
)
inline

Definition at line 148 of file ophTriMesh.h.

◆ setMode()

void ophTri::setMode ( bool  is_CPU)

Set the value of a variable is_CPU(true or false)

if is_CPU == true
CPU implementation
else
GPU implementation 
Parameters
[in]is_CPUthe value for specifying whether the hologram generation method is implemented on the CPU or GPU

Definition at line 64 of file ophTriMesh.cpp.

◆ setObjShift() [1/2]

void ophTri::setObjShift ( vec3  in)
inline

Definition at line 144 of file ophTriMesh.h.

◆ setObjShift() [2/2]

void ophTri::setObjShift ( vector< Real in)
inline

Definition at line 145 of file ophTriMesh.h.

◆ setObjSize()

void ophTri::setObjSize ( Real  in)
inline

SHADING_FLAT, SHADING_CONTINUOUS.

Definition at line 143 of file ophTriMesh.h.

◆ setShadingType()

void ophTri::setShadingType ( int  in)
inline

Definition at line 149 of file ophTriMesh.h.

◆ setViewingWindow()

void ophTri::setViewingWindow ( bool  is_ViewingWindow)

Set the value of a variable is_ViewingWindow(true or false)

if is_ViewingWindow == true
Transform viewing window
else
Hologram 
Parameters
is_ViewingWindow: the value for specifying whether the hologram generation method is implemented on the viewing window

Definition at line 69 of file ophTriMesh.cpp.


The documentation for this class was generated from the following files: