Openholo
v5.0
Open Source Digital Holographic Library
|
#include "ophGen.h"
#include "sys.h"
#include "function.h"
#include <cuda_runtime_api.h>
#include <cufft.h>
#include <omp.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include "ImgControl.h"
#include "tinyxml2.h"
#include "PLYparser.h"
Go to the source code of this file.
Functions | |
void | cudaFFT (CUstream_st *stream, int nx, int ny, cufftDoubleComplex *in_filed, cufftDoubleComplex *output_field, int direction, bool bNormailized=false) |
Convert data from the spatial domain to the frequency domain using 2D FFT on GPU. More... | |
void | cudaCropFringe (CUstream_st *stream, int nx, int ny, cufftDoubleComplex *in_field, cufftDoubleComplex *out_field, int cropx1, int cropx2, int cropy1, int cropy2) |
Crop input data according to x, y coordinates on GPU. More... | |
void | cudaGetFringe (CUstream_st *stream, int pnx, int pny, cufftDoubleComplex *in_field, cufftDoubleComplex *out_field, int sig_locationx, int sig_locationy, Real ssx, Real ssy, Real ppx, Real ppy, Real PI) |
Encode the CGH according to a signal location parameter on the GPU. More... | |
void cudaCropFringe | ( | CUstream_st * | stream, |
int | nx, | ||
int | ny, | ||
cufftDoubleComplex * | in_field, | ||
cufftDoubleComplex * | out_field, | ||
int | cropx1, | ||
int | cropx2, | ||
int | cropy1, | ||
int | cropy2 | ||
) |
Crop input data according to x, y coordinates on GPU.
call CUDA Kernel - cropFringe.
stream | : CUDA Stream |
nx | : the number of column of the input data |
ny | : the number of row of the input data |
in_field | : input complex data variable |
output_field | : output complex data variable |
cropx1 | : the start x-coordinate to crop. |
cropx2 | : the end x-coordinate to crop. |
cropy1 | : the start y-coordinate to crop. |
cropy2 | : the end y-coordinate to crop. |
void cudaFFT | ( | CUstream_st * | stream, |
int | nx, | ||
int | ny, | ||
cufftDoubleComplex * | in_filed, | ||
cufftDoubleComplex * | output_field, | ||
int | direction, | ||
bool | bNormailized = false |
||
) |
Convert data from the spatial domain to the frequency domain using 2D FFT on GPU.
call CUDA Kernel - fftShift and CUFFT Library.
stream | : CUDA Stream |
nx | : the number of column of the input data |
ny | : the number of row of the input data |
in_field | : input complex data variable |
output_field | : output complex data variable |
direction | : If direction == -1, forward FFT, if type == 1, inverse FFT. |
bNomarlized | : If bNomarlized == true, normalize the result after FFT. |
void cudaGetFringe | ( | CUstream_st * | stream, |
int | pnx, | ||
int | pny, | ||
cufftDoubleComplex * | in_field, | ||
cufftDoubleComplex * | out_field, | ||
int | sig_locationx, | ||
int | sig_locationy, | ||
Real | ssx, | ||
Real | ssy, | ||
Real | ppx, | ||
Real | ppy, | ||
Real | PI | ||
) |
Encode the CGH according to a signal location parameter on the GPU.
The variable, ((Real*)p_hologram) has the final result.
stream | : CUDA Stream |
pnx | : the number of column of the input data |
pny | : the number of row of the input data |
in_field | : input data |
out_field | : output data |
sig_locationx | : signal location of x-axis, left or right half |
sig_locationy | : signal location of y-axis, upper or lower half |
ssx | : pnx * ppx |
ssy | : pny * ppy |
ppx | : pixel pitch of x-axis |
ppy | : pixel pitch of y-axis |
PI | : Pi |