![]() |
Openholo
v3.0
Open Source Digital Holographic Library
|
Openholo Point Cloud based Compter-generated holography. More...
#include <ophPointCloud.h>
Public Types | |
enum | PC_DIFF_FLAG { PC_DIFF_RS, PC_DIFF_FRESNEL } |
![]() | |
enum | PRECISION { SINGLE, DOUBLE } |
enum | ENCODE_FLAG { ENCODE_PHASE, ENCODE_AMPLITUDE, ENCODE_REAL, ENCODE_IMAGINARY, ENCODE_SIMPLENI, ENCODE_BURCKHARDT, ENCODE_TWOPHASE, ENCODE_SSB, ENCODE_OFFSSB, ENCODE_SIMPLEBINARY, ENCODE_EDBINARY } |
enum | SSB_PASSBAND { SSB_LEFT, SSB_RIGHT, SSB_TOP, SSB_BOTTOM } |
enum | ED_WType { FLOYD_STEINBERG, SINGLE_RIGHT, SINGLE_DOWN, ITERATIVE_DESIGN } |
Public Member Functions | |
ophPointCloud (void) | |
Constructor. More... | |
ophPointCloud (const char *, const char *cfg_file) | |
void | setScale (Real sx, Real sy, Real sz) |
void | setDistance (Real distance) |
void | setFilterShapeFlag (int8_t *fsf) |
void | setFilterWidth (Real wx, Real wy) |
void | setFocalLength (Real lens_in, Real lens_out, Real lens_eye_piece) |
void | setTiltAngle (Real ax, Real ay) |
void | getScale (vec3 &scale) |
Real | getDistance (void) |
int8_t * | getFilterShapeFlag (void) |
void | getFilterWidth (vec2 &filterwidth) |
void | getFocalLength (Real *lens_in, Real *lens_out, Real *lens_eye_piece) |
void | getTiltAngle (vec2 &tiltangle) |
Real ** | getVertex (void) |
Real ** | getColorPC (void) |
Real ** | getPhasePC (void) |
void | setPointCloudModel (Real *vertex, Real *color, Real *phase) |
void | getPointCloudModel (Real *vertex, Real *color, Real *phase) |
const Real * | getModelVertex (Real *vertex) |
Directly Get Basic Data. More... | |
const Real * | getModelColor (Real *color) |
Directly Get Basic Data. More... | |
const Real * | getModelPhase (Real *phase) |
Directly Get Basic Data. More... | |
int | getNumberOfPoints () |
Directly Get Basic Data. More... | |
void | setNumberOfPoints (int nPoint) |
Directly Set Basic Data. More... | |
bool | isCPU () |
get the value of a variable generation mode (true or false) More... | |
![]() | |
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 | RS_Diffraction (vec3 src, Complex< Real > *dst, Real lambda, Real distance, Real amplitude) |
RS-diffraction method. More... | |
void | Fresnel_Diffraction (vec3 src, Complex< Real > *dst, Real lambda, Real distance, Real amplitude) |
Fresnel-diffraction method. More... | |
void | Fresnel_FFT (Complex< Real > *src, Complex< Real > *dst, Real lambda, Real waveRatio, Real distance) |
Fresnel-fft method. More... | |
void | AngularSpectrumMethod (Complex< Real > *src, Complex< Real > *dst, Real lambda, Real distance) |
Angular spectrum propagation method. More... | |
void | conv_fft2 (Complex< Real > *src1, Complex< Real > *src2, Complex< Real > *dst, ivec2 size) |
Convolution between Complex arrays which have same size. More... | |
void | normalize (void) |
Normalization function to save as image file after hologram creation. More... | |
void | normalize (int ch) |
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... | |
void | setPrecision (uint precision) |
Function for setting precision. More... | |
uint | getPrecision () |
void | setEncodeMethod (unsigned int ENCODE_FLAG) |
void | encoding (unsigned int ENCODE_FLAG) |
Encoding Functions. More... | |
void | encoding (unsigned int ENCODE_FLAG, Complex< Real > *holo, Real *encoded) |
void | encoding () |
virtual void | encoding (unsigned int ENCODE_FLAG, unsigned int SSB_PASSBAND, Complex< Real > *holo=nullptr, Real *encoded=nullptr) |
void | encoding (unsigned int BIN_ENCODE_FLAG, unsigned int ENCODE_FLAG, Real threshold, Complex< Real > *holo=nullptr, Real *encoded=nullptr) |
Binary Encoding Functions. More... | |
bool | Shift (Real x, Real y) |
void | waveCarry (Real carryingAngleX, Real carryingAngleY, Real distance) |
Wave carry. More... | |
void | waveCarry (Complex< Real > *src, Complex< Real > *dst, Real wavelength, int carryIdxX, int carryIdxY) |
void | transVW (int nSize, Real *dst, Real *src) |
int | getStream () |
Real | getFieldLength () |
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... | |
bool | saveRefImages (char *fnameW, char *fnameWC, char *fnameAS, char *fnameSSB, char *fnameHP, char *fnameFreq, char *fnameReal, char *fnameBin, char *fnameReconBin, char *fnameReconErr, char *fnameReconNo) |
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... | |
void | SetRandomPhase (bool bRandomPhase) |
Function for setting the random phase. More... | |
bool | GetRandomPhase () |
Function for getting the random phase. More... | |
void | SetMode (unsigned int mode) |
unsigned int | GetMode () |
![]() | |
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 uchar * | loadAsImg (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... | |
OphConfig & | getContext (void) |
Function for getting the current context. More... | |
ImageConfig & | getImageConfig () |
Function for getting the image config. More... | |
void | setPixelNumber (ivec2 n) |
Function for setting the output resolution. More... | |
void | setPixelNumber (int width, int height) |
void | setPixelPitch (vec2 p) |
Function for setting the output pixel pitch. More... | |
void | setPixelPitch (Real pitchX, Real pitchY) |
void | setWaveLength (Real w, const uint idx=0) |
Function for setting the wave length. More... | |
void | setWaveNum (int num) |
Function for setting the wave number. More... | |
void | setImageMerge (bool merge) |
Function for setting the image merge(true or false) More... | |
void | setImageRotate (bool rotate) |
Function for setting the image rotate(true or false) More... | |
void | setImageFlip (int flip) |
Function for setting the image flip. More... | |
void | setMaxThreadNum (int num) |
Function for setting the max thread num. More... | |
int | getMaxThreadNum () |
Function for getting the max thread num. More... | |
bool | mergeColor (int idx, int width, int height, uchar *src, uchar *dst) |
Function for generate RGB image from each grayscale image. More... | |
bool | separateColor (int idx, int width, int height, uchar *src, uchar *dst) |
Function for generate each grayscale image from RGB image. More... | |
![]() | |
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 | ~ophPointCloud (void) |
Destructor. More... | |
![]() | |
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... | |
template<typename T > | |
void | RealPart (Complex< T > *holo, T *encoded, const int size) |
Encoding method. More... | |
template<typename T > | |
void | ImaginaryPart (Complex< T > *holo, T *encoded, const int size) |
template<typename T > | |
void | Phase (Complex< T > *holo, T *encoded, const int size) |
template<typename T > | |
void | Amplitude (Complex< T > *holo, T *encoded, const int size) |
template<typename T > | |
void | TwoPhase (Complex< T > *holo, T *encoded, const int size) |
template<typename T > | |
void | Burckhardt (Complex< T > *holo, T *encoded, const int size) |
template<typename T > | |
void | SimpleNI (Complex< T > *holo, T *encoded, const int size) |
void | singleSideBand (Complex< Real > *holo, Real *encoded, const ivec2 holosize, int passband) |
Encoding method. More... | |
void | freqShift (Complex< Real > *holo, Complex< Real > *encoded, const ivec2 holosize, int shift_x, int shift_y) |
Frequency shift. More... | |
bool | binaryErrorDiffusion (Complex< Real > *holo, Real *encoded, const ivec2 holosize, const int type, Real threshold) |
bool | getWeightED (const ivec2 holosize, const int type, ivec2 *pNw) |
bool | shiftW (ivec2 holosize) |
void | binarization (Complex< Real > *src, Real *dst, const int size, int ENCODE_FLAG, Real threshold) |
void | CorrectionChromaticAberration (uchar *src, uchar *dst, int width, int height, int ch) |
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 | GetRandomPhaseValue (Complex< Real > &rand_phase_val, bool rand_phase) |
Assign random phase value if random_phase == 1. More... | |
void | ScaleChange (Real *src, Real *dst, int nSize, Real scaleX, Real scaleY, Real scaleZ) |
void | GetMaxMin (Real *src, int len, Real &max, Real &min) |
![]() | |
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 | imgScaleBilinear (uchar *src, uchar *dst, int w, int h, int neww, int newh, int channels=1) |
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, bool bReverse=false) |
Execution functions to be called after fft1, fft2, and fft3. More... | |
void | fftFree (void) |
Resource release method. More... | |
void | fftInit2D (ivec2 size, int sign, unsigned int flag) |
initialize method for 2D FFT More... | |
void | fft2 (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 | fftShift (int nx, int ny, Complex< Real > *input, fftw_complex *output) |
void | fftShift (int nx, int ny, fftw_complex *input, Complex< Real > *output) |
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) |
![]() | |
virtual | ~Base (void) |
Destructor. More... | |
int | loadPointCloud (const char *pc_file) |
override More... | |
bool | readConfig (const char *cfg_file) |
Import Specification Config File(*.config) file. More... | |
Real | generateHologram (uint diff_flag=PC_DIFF_RS) |
Generate a hologram, main funtion. More... | |
void | encodeHologram (vec2 band_limit=vec2(0.8, 0.5), vec2 spectrum_shift=vec2(0.0, 0.5)) |
encode Single-side band More... | |
virtual void | encoding (unsigned int ENCODE_FLAG) |
virtual void | encoding (unsigned int ENCODE_FLAG, unsigned int SSB_PASSBAND) |
void | setViewingWindow (bool is_ViewingWindow) |
Set the value of a variable is_ViewingWindow(true or false) More... | |
uint * | getProgress () |
Get the value of a CGH progress status. More... | |
Additional Inherited Members | |
![]() | |
ivec2 | m_vecEncodeSize |
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 | m_elapsedTime |
Elapsed time of generate hologram. More... | |
Real ** | m_lpEncoded |
buffer to encoded. More... | |
uchar ** | m_lpNormalized |
buffer to normalized. More... | |
Real | m_dFieldLength |
int | m_nStream |
Complex< Real > * | src1FT |
buffer to conv_fft2 More... | |
Complex< Real > * | src2FT |
Complex< Real > * | dstFT |
int | ss |
Binary Encoding - Error diffusion. More... | |
Complex< Real > * | AS |
Complex< Real > * | normalized |
Complex< Real > * | fftTemp |
Real * | weight |
Complex< Real > * | weightC |
Complex< Real > * | freqW |
Real * | realEnc |
Real * | binary |
Real * | maskSSB |
Real * | maskHP |
unsigned int | m_mode |
bool | m_bRandomPhase |
![]() | |
OphConfig | context_ |
ImageConfig | imgCfg |
Complex< Real > ** | complex_H |
ImgEncoderOhc * | OHC_encoder |
OHC file format Variables for read and write. More... | |
ImgDecoderOhc * | OHC_decoder |
![]() | |
unsigned long | refCnt |
Openholo Point Cloud based Compter-generated holography.
Definition at line 548 of file ophPointCloud.h.
Enumerator | |
---|---|
PC_DIFF_RS | |
PC_DIFF_FRESNEL |
Definition at line 551 of file ophPointCloud.h.
|
explicit |
|
explicit |
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 61 of file ophPointCloud.cpp.
|
protectedvirtual |
Destructor.
Definition at line 73 of file ophPointCloud.cpp.
void ophPointCloud::encodeHologram | ( | vec2 | band_limit = vec2(0.8, 0.5) , |
vec2 | spectrum_shift = vec2(0.0, 0.5) |
||
) |
encode Single-side band
Vector | band limit |
Vector | specturm shift |
Definition at line 190 of file ophPointCloud.cpp.
|
virtual |
Definition at line 269 of file ophPointCloud.cpp.
|
virtual |
Definition at line 274 of file ophPointCloud.cpp.
Real ophPointCloud::generateHologram | ( | uint | diff_flag = PC_DIFF_RS | ) |
Generate a hologram, main funtion.
Select | diffraction flag PC_DIFF_RS: Diffraction using R-S integral PC_DIFF_FRESNEL: Diffraction using Fresnel integral |
Definition at line 151 of file ophPointCloud.cpp.
|
inline |
Definition at line 589 of file ophPointCloud.h.
|
inline |
Definition at line 579 of file ophPointCloud.h.
|
inline |
Definition at line 580 of file ophPointCloud.h.
|
inline |
Definition at line 581 of file ophPointCloud.h.
|
inline |
Definition at line 582 of file ophPointCloud.h.
Directly Get Basic Data.
Color | 3D Point Cloud Color Data |
Definition at line 611 of file ophPointCloud.h.
Directly Get Basic Data.
Phase | 3D Point Cloud Model Phase Data of Point-Based Light Wave |
Definition at line 616 of file ophPointCloud.h.
Directly Get Basic Data.
Vertex | 3D Point Cloud Geometry Data |
Definition at line 606 of file ophPointCloud.h.
|
inline |
Directly Get Basic Data.
Definition at line 621 of file ophPointCloud.h.
|
inline |
Definition at line 590 of file ophPointCloud.h.
Definition at line 596 of file ophPointCloud.h.
|
inline |
Get the value of a CGH progress status.
Definition at line 698 of file ophPointCloud.h.
|
inline |
Definition at line 578 of file ophPointCloud.h.
|
inline |
Definition at line 587 of file ophPointCloud.h.
|
inline |
Definition at line 588 of file ophPointCloud.h.
|
inline |
get the value of a variable generation mode (true or false)
if isCPU() == true CPU implementation else GPU implementation
Definition at line 639 of file ophPointCloud.h.
int ophPointCloud::loadPointCloud | ( | const char * | pc_file | ) |
override
Import Point Cloud Data Base File : *.dat file. This Function is included memory location of Input Point Clouds. override
[in] | InputModelFile | PointCloud(*.dat) input file path |
Definition at line 82 of file ophPointCloud.cpp.
bool ophPointCloud::readConfig | ( | const char * | cfg_file | ) |
Import Specification Config File(*.config) file.
InputConfigFile | Specification Config(*.config) file path |
Definition at line 89 of file ophPointCloud.cpp.
|
inline |
Definition at line 572 of file ophPointCloud.h.
|
inline |
Definition at line 573 of file ophPointCloud.h.
Definition at line 574 of file ophPointCloud.h.
Definition at line 575 of file ophPointCloud.h.
|
inline |
Directly Set Basic Data.
Definition at line 625 of file ophPointCloud.h.
Definition at line 591 of file ophPointCloud.h.
Definition at line 571 of file ophPointCloud.h.
Definition at line 576 of file ophPointCloud.h.
void ophPointCloud::setViewingWindow | ( | bool | is_ViewingWindow | ) |
Set the value of a variable is_ViewingWindow(true or false)
if is_ViewingWindow == true Transform viewing window else Hologram
is_ViewingWindow | : the value for specifying whether the hologram generation method is implemented on the viewing window |
Definition at line 77 of file ophPointCloud.cpp.