ETRI IVCL 1.0.0
Acceleration SW Platform for Ondevice
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Macros | Functions | Variables
lib.h File Reference
#include "CL/cl.hpp"
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <cmath>
#include <math.h>
#include <vector>
#include <chrono>
#include <float.h>

Macros

#define __CL_ENABLE_EXCEPTIONS
 
#define USE_CAM   false
 whether using camera or image More...
 
#define MMAX(a, b)   (((a)>(b))?(a):(b))
 
#define MMIN(a, b)   (((a)<(b))?(a):(b))
 

Functions

int openCL_Init ()
 Declare for OpenCL code execution. More...
 
void openCL_BufferSet ()
 Declare for OpenCL buffer. More...
 
void openCL_ImageSet ()
 Declare for OpenCL Image2D. More...
 
void openCL_ArgumentSet ()
 Declare for OpenCL argument. More...
 
int openCV_Init ()
 
void costComputation_SAD (float ***datacost, float **left, float **right, int width, int height, int dispRange, int mSize)
 Native SAD function. More...
 
void costComputation_ASW (float ***datacost, float **left, float **right, int width, int height, int dispRange, int mSize)
 Compute stereo datacost using a window of Adaptive Support Weight (ASW) More...
 
void winnerTakesALL (float ***datacost, uchar *result, int height, int width, int dispRange)
 Find the minimum cost for each pixel using winner takes all algorithm. More...
 
void startMethod (int, void *)
 
void selectASW (int, void *)
 
void selectSAD (int, void *)
 
void mSizeChanged (int)
 
void changeStaticImg (int)
 
void qt5_Init ()
 
int index_y (int y, int height)
 PADDING Y. More...
 
int index_x (int x, int width)
 PADDING X. More...
 
void filter_Gaussian (float **inputL, float **inputR, float **outputL, float **outputR, int width, int height)
 
void filter_Sobel (float **inputL, float **inputR, float **outputL, float **outputR, int width, int height)
 
float *** SGM (float **left, float ***datacost, int width, int height, int dispRange, float Penalty1, float Penalty2)
 Refine stereo datacost using Semi Global Mathcing (Native) More...
 
void iterate_direction_ocl (int dirx, int diry, int width, int height, int disp_range, float p1, float p2)
 CPU part. More...
 
void optimizeBeliefPropagation (float ***datacost, int width, int height, int dispRange, int HIER_ITER, int HIER_LEVEL, float CONT_COST, float DISCONT_COST)
 Refine stereo datacost using Hierarchy Belief Propagation. More...
 
float evaluation (Mat gt, double gt_scaling, Mat &errorMap, float *result, float focal_length, float base_line, int dispRange, float d_val[], float threshold)
 
float evaluation (Mat gt, double gt_scaling, Mat &errorMap, uchar *result, float focal_length, float base_line, int dispRange, float d_val[], float threshold)
 
int valid_pixel_cnt (Mat gt, double gt_scaling, Mat &validROI, float focal_length, float base_line, int dispRange, float d_val[])
 

Variables

char platformChooser
 
volatile bool flagCountEachTime
 
volatile bool sad_selected
 
volatile bool onPreFilter
 
volatile bool onlyGaussian
 whether using gaussian only or gaussian + sobel More...
 
volatile bool onPostFilter
 
uchar onMethod
 
volatile bool onlyGPU
 whether using CPU or GPU More...
 
const bool newCAM
 CAUTION !!! ask about parameter before change it! More...
 
int frameWidth
 The input image width. More...
 
int frameHeight
 The input image height. More...
 
int totalPixels
 frameWidth * frameHeight More...
 
int dispRange
 
int dispScale
 
int mSize
 
cv::Mat intrinsicL
 
cv::Mat intrinsicR
 
cv::Mat Translation
 
cv::Mat om
 
cv::Mat Rotation
 
cv::Mat distCoeffL
 
cv::Mat distCoeffR
 
cv::Mat imgDistL
 
cv::Mat imgDistR
 
cv::Mat imgRectiL
 
cv::Mat imgRectiR
 
cv::Mat R1
 
cv::Mat R2
 
cv::Mat P1
 
cv::Mat P2
 
cv::Mat Q
 
cv::Mat map1x
 
cv::Mat map1y
 
cv::Mat map2x
 
cv::Mat map2y
 
cv::Mat rectResultLeft
 
cv::Mat rectResultRight
 
cv::Mat RIden
 
cv::Mat rectResultFrame
 
cl_int err
 
vector< cl::Platform > platforms
 
cl::Context context
 
vector< cl::Device > devices
 
cl::CommandQueue queue1
 
cl::CommandQueue queue2
 
cl::Kernel gGaussian_8bit
 
cl::Kernel gGaussian_8bit_image
 
cl::Kernel gSobel_8bit
 
cl::Kernel gSobel_8bit_image
 
cl::Kernel gSAD_kernel
 
cl::Kernel gSAD_image_kernel
 
cl::Kernel gASW_kernel
 
cl::Kernel gASW_image_kernel
 
cl::Kernel gWTA_char
 
cl::Kernel gWTA_float
 
cl::Kernel gRectifyL_8bit
 kernel /// More...
 
cl::Kernel gRectifyR_8bit
 
cl::Kernel evaluate_path_ocl
 
cl::Kernel iterate_direction_dirxpos_ocl
 
cl::Kernel iterate_direction_dirypos_ocl
 
cl::Kernel iterate_direction_dirxneg_ocl
 
cl::Kernel iterate_direction_diryneg_ocl
 
cl::Kernel inplace_sum_views_ocl
 
cl::Kernel Kernel_InitHierCost
 
cl::Kernel Kernel_HierBP
 
cl::Kernel Kernel_UpdateCostLayer
 
cl::Kernel Kernel_FinalBP
 
cl::Buffer bufferInA
 buffer /// More...
 
cl::Buffer bufferInB
 
cl::Buffer bufferInL
 
cl::Buffer bufferInR
 
cl::Buffer bufferOutA
 
cl::Buffer bufferOutB
 
cl::Buffer bufferOutL
 
cl::Buffer bufferOutR
 
cl::Buffer bufferGaussianL
 
cl::Buffer bufferGaussianR
 
cl::Buffer bufferSobelL
 
cl::Buffer bufferSobelR
 
cl::Buffer bufferDisp
 
cl::Buffer bufferDispMid
 
cl::Buffer bufferDispFinal
 
cl::Buffer bufferDispFinalFloat
 
cl::Image2D imageInL
 Image2D ///. More...
 
cl::Image2D imageInR
 
cl::Image2D imageGaussianL
 
cl::Image2D imageGaussianR
 
cl::Buffer devPtr_accumulated_costs
 
cl::Buffer devPtr_dir_accumulated_costs
 
cl::Buffer ** bufferHierCost
 
cl::Buffer m_u
 
cl::Buffer m_l
 
cl::Buffer m_d
 
cl::Buffer m_r
 
cl::Buffer temp_m_u
 
cl::Buffer temp_m_l
 
cl::Buffer temp_m_d
 
cl::Buffer temp_m_r
 
cl::Buffer bufferZero
 
int selectedImg
 
volatile bool flagStartMethod
 
volatile bool flagFinishMethod
 
volatile bool nextImg
 
float minSAD_cost
 
float maxSAD_cost
 
float minASW_cost
 
float maxASW_cost
 
float sad_penalty1
 GPU part. More...
 
float sad_penalty2
 
float asw_penalty1
 
float asw_penalty2
 
const int HIER_LEVELS = 3
 The number of hierarchy. More...
 
const int HIER_ITER = 8
 BP interation per one Hierarchy. More...
 
float * zeros
 
float * zeros_dispRange
 

Macro Definition Documentation

◆ __CL_ENABLE_EXCEPTIONS

#define __CL_ENABLE_EXCEPTIONS

◆ MMAX

#define MMAX (   a,
 
)    (((a)>(b))?(a):(b))

◆ MMIN

#define MMIN (   a,
 
)    (((a)<(b))?(a):(b))

◆ USE_CAM

#define USE_CAM   false

whether using camera or image

Function Documentation

◆ changeStaticImg()

void changeStaticImg ( int  img)

◆ costComputation_ASW()

void costComputation_ASW ( float ***  datacost,
float **  left,
float **  right,
int  width,
int  height,
int  dispRange,
int  mSize 
)

Compute stereo datacost using a window of Adaptive Support Weight (ASW)

◆ costComputation_SAD()

void costComputation_SAD ( float ***  datacost,
float **  left,
float **  right,
int  width,
int  height,
int  dispRange,
int  mSize 
)

Native SAD function.

◆ evaluation() [1/2]

float evaluation ( Mat  gt,
double  gt_scaling,
Mat &  errorMap,
float *  result,
float  focal_length,
float  base_line,
int  dispRange,
float  d_val[],
float  threshold_ 
)

Evaluate the depth map (DISP_SPLIT == True)

Parameters
gtGround truth depth image
gt_scalingScale the depth image (according to ground truth)
errorMapError map in the result image (compared with GT)
resultInput depth image
focal_lengthCamera focal length
base_lineThe distance between the stereo camera
dispRangeThe number of pixels for matching comparison
d_valrange for evaluation (array)
threshold_
Returns
MSE_ROI / valid_pixels_cnt

◆ evaluation() [2/2]

float evaluation ( Mat  gt,
double  gt_scaling,
Mat &  errorMap,
uchar *  result,
float  focal_length,
float  base_line,
int  dispRange,
float  d_val[],
float  threshold_ 
)

Evaluate the depth map (DISP_SPLIT == False)

Parameters
gtGround truth depth image
gt_scalingScale the depth image (according to ground truth)
errorMapError map in the result image (compared with GT)
resultInput depth image
focal_lengthCamera focal length
base_lineThe distance between the stereo camera
dispRangeThe number of pixels for matching comparison
d_valrange for evaluation (array)
threshold_
Returns
MSE_ROI / valid_pixels_cnt

◆ filter_Gaussian()

void filter_Gaussian ( float **  inputL,
float **  inputR,
float **  outputL,
float **  outputR,
int  width,
int  height 
)

Perform 5x5 Gaussian filtering on an image (Native)

Parameters
inputLLeft input image
inputRRight input image
outputLThe Gaussian filtered left image
outputRThe Gaussian filtered right image
widthThe input image width
heightThe input image height

◆ filter_Sobel()

void filter_Sobel ( float **  inputL,
float **  inputR,
float **  outputL,
float **  outputR,
int  width,
int  height 
)

Perform 5x5 Sobel filtering on an image (Native)

Parameters
inputLLeft input image
inputRRight input image
outputLThe Gaussian filtered left image
outputRThe Gaussian filtered right image
widthThe input image width
heightThe input image height

◆ index_x()

int index_x ( int  x,
int  width 
)

PADDING X.

◆ index_y()

int index_y ( int  y,
int  height 
)

PADDING Y.

◆ iterate_direction_ocl()

void iterate_direction_ocl ( int  dirx,
int  diry,
int  width,
int  height,
int  disp_range,
float  penalty1,
float  penalty2 
)

CPU part.

Dynamically iterate horizontally/vertically in the up/down direction

CPU part.

◆ mSizeChanged()

void mSizeChanged ( int  ms)

◆ openCL_ArgumentSet()

void openCL_ArgumentSet ( )

Declare for OpenCL argument.

SAD ///

ASW ///

BP !!!! ///

◆ openCL_BufferSet()

void openCL_BufferSet ( )

Declare for OpenCL buffer.

◆ openCL_ImageSet()

void openCL_ImageSet ( )

Declare for OpenCL Image2D.

◆ openCL_Init()

int openCL_Init ( )

Declare for OpenCL code execution.

THIS NEW KENEL CODE USES UCHAR4 VECTOR

◆ openCV_Init()

int openCV_Init ( )

◆ optimizeBeliefPropagation()

void optimizeBeliefPropagation ( float ***  datacost,
int  width,
int  height,
int  dispRange,
int  HIER_ITER,
int  HIER_LEVEL,
float  CONT_COST,
float  DISCONT_COST 
)

Refine stereo datacost using Hierarchy Belief Propagation.

◆ qt5_Init()

void qt5_Init ( )

◆ selectASW()

void selectASW ( int  state,
void *  val 
)

◆ selectSAD()

void selectSAD ( int  state,
void *  val 
)

◆ SGM()

float *** SGM ( float **  left,
float ***  datacost,
int  width,
int  height,
int  dispRange,
float  Penalty1,
float  Penalty2 
)

Refine stereo datacost using Semi Global Mathcing (Native)

◆ startMethod()

void startMethod ( int  state,
void *  val 
)

◆ valid_pixel_cnt()

int valid_pixel_cnt ( Mat  gt,
double  gt_scaling,
Mat &  validROI,
float  focal_length,
float  base_line,
int  dispRange,
float  d_val[] 
)

Check valid pixels in depth map

d_val[0] < pixel distance in GT < d_val[1]

Returns
number of valid pixels

◆ winnerTakesALL()

void winnerTakesALL ( float ***  datacost,
uchar *  result,
int  height,
int  width,
int  dispRange 
)

Find the minimum cost for each pixel using winner takes all algorithm.

Variable Documentation

◆ asw_penalty1

float asw_penalty1
extern

◆ asw_penalty2

float asw_penalty2
extern

◆ bufferDisp

cl::Buffer bufferDisp
extern

◆ bufferDispFinal

cl::Buffer bufferDispFinal

◆ bufferDispFinalFloat

cl::Buffer bufferDispFinalFloat

◆ bufferDispMid

cl::Buffer bufferDispMid

◆ bufferGaussianL

cl::Buffer bufferGaussianL
extern

◆ bufferGaussianR

cl::Buffer bufferGaussianR

◆ bufferHierCost

cl::Buffer** bufferHierCost
extern

◆ bufferInA

cl::Buffer bufferInA
extern

buffer ///

◆ bufferInB

cl::Buffer bufferInB

◆ bufferInL

cl::Buffer bufferInL

◆ bufferInR

cl::Buffer bufferInR

◆ bufferOutA

cl::Buffer bufferOutA
extern

◆ bufferOutB

cl::Buffer bufferOutB

◆ bufferOutL

cl::Buffer bufferOutL

◆ bufferOutR

cl::Buffer bufferOutR

◆ bufferSobelL

cl::Buffer bufferSobelL

◆ bufferSobelR

cl::Buffer bufferSobelR

◆ bufferZero

cl::Buffer bufferZero
extern

◆ context

cl::Context context
extern

◆ devices

vector<cl::Device> devices
extern

◆ devPtr_accumulated_costs

cl::Buffer devPtr_accumulated_costs
extern

◆ devPtr_dir_accumulated_costs

cl::Buffer devPtr_dir_accumulated_costs

◆ dispRange

int dispRange
extern

The number of pixels for matching comparison
68 : Mobeius, 48 : Teddy

◆ dispScale

int dispScale
extern

◆ distCoeffL

cv::Mat distCoeffL
extern

◆ distCoeffR

cv::Mat distCoeffR
extern

◆ err

cl_int err
extern

◆ evaluate_path_ocl

cl::Kernel evaluate_path_ocl
extern

◆ flagCountEachTime

volatile bool flagCountEachTime
extern

◆ flagFinishMethod

volatile bool flagFinishMethod
extern

◆ flagStartMethod

volatile bool flagStartMethod
extern

◆ frameHeight

int frameHeight
extern

The input image height.

◆ frameWidth

int frameWidth
extern

The input image width.

◆ gASW_image_kernel

cl::Kernel gASW_image_kernel

◆ gASW_kernel

cl::Kernel gASW_kernel
extern

◆ gGaussian_8bit

cl::Kernel gGaussian_8bit
extern

◆ gGaussian_8bit_image

cl::Kernel gGaussian_8bit_image

◆ gRectifyL_8bit

cl::Kernel gRectifyL_8bit
extern

kernel ///

◆ gRectifyR_8bit

cl::Kernel gRectifyR_8bit

◆ gSAD_image_kernel

cl::Kernel gSAD_image_kernel

◆ gSAD_kernel

cl::Kernel gSAD_kernel
extern

◆ gSobel_8bit

cl::Kernel gSobel_8bit
extern

◆ gSobel_8bit_image

cl::Kernel gSobel_8bit_image

◆ gWTA_char

cl::Kernel gWTA_char
extern

◆ gWTA_float

cl::Kernel gWTA_float

◆ HIER_ITER

const int HIER_ITER = 8

BP interation per one Hierarchy.

◆ HIER_LEVELS

const int HIER_LEVELS = 3

The number of hierarchy.

◆ imageGaussianL

cl::Image2D imageGaussianL

◆ imageGaussianR

cl::Image2D imageGaussianR

◆ imageInL

cl::Image2D imageInL
extern

Image2D ///.

◆ imageInR

cl::Image2D imageInR

◆ imgDistL

cv::Mat imgDistL
extern

◆ imgDistR

cv::Mat imgDistR
extern

◆ imgRectiL

cv::Mat imgRectiL
extern

◆ imgRectiR

cv::Mat imgRectiR
extern

◆ inplace_sum_views_ocl

cl::Kernel inplace_sum_views_ocl

◆ intrinsicL

cv::Mat intrinsicL
extern

◆ intrinsicR

cv::Mat intrinsicR
extern

◆ iterate_direction_dirxneg_ocl

cl::Kernel iterate_direction_dirxneg_ocl

◆ iterate_direction_dirxpos_ocl

cl::Kernel iterate_direction_dirxpos_ocl

◆ iterate_direction_diryneg_ocl

cl::Kernel iterate_direction_diryneg_ocl

◆ iterate_direction_dirypos_ocl

cl::Kernel iterate_direction_dirypos_ocl

◆ Kernel_FinalBP

cl::Kernel Kernel_FinalBP
extern

◆ Kernel_HierBP

cl::Kernel Kernel_HierBP
extern

◆ Kernel_InitHierCost

cl::Kernel Kernel_InitHierCost
extern

◆ Kernel_UpdateCostLayer

cl::Kernel Kernel_UpdateCostLayer
extern

◆ m_d

cl::Buffer m_d

◆ m_l

cl::Buffer m_l

◆ m_r

cl::Buffer m_r

◆ m_u

cl::Buffer m_u
extern

◆ map1x

cv::Mat map1x
extern

◆ map1y

cv::Mat map1y

◆ map2x

cv::Mat map2x

◆ map2y

cv::Mat map2y

◆ maxASW_cost

float maxASW_cost

◆ maxSAD_cost

float maxSAD_cost

◆ minASW_cost

float minASW_cost
extern

◆ minSAD_cost

float minSAD_cost
extern

◆ mSize

int mSize
extern

◆ newCAM

const bool newCAM
extern

CAUTION !!! ask about parameter before change it!

◆ nextImg

volatile bool nextImg
extern

◆ om

cv::Mat om
extern

◆ onlyGaussian

volatile bool onlyGaussian
extern

whether using gaussian only or gaussian + sobel

◆ onlyGPU

volatile bool onlyGPU
extern

whether using CPU or GPU

◆ onMethod

uchar onMethod
extern

Choose depth estimation method

0 for desktop or laptop with non-optimus
1 for laptop with optimus
2 for embedded board (e.g. Odroid-XU4)

◆ onPostFilter

volatile bool onPostFilter
extern

◆ onPreFilter

volatile bool onPreFilter
extern

◆ P1

cv::Mat P1

◆ P2

cv::Mat P2

◆ platformChooser

char platformChooser
extern

Choose Platform

0 for desktop or laptop with non-optimus
1 for laptop with optimus
2 for embedded board (e.g. Odroid-XU4)

◆ platforms

vector<cl::Platform> platforms
extern

◆ Q

cv::Mat Q

◆ queue1

cl::CommandQueue queue1
extern

◆ queue2

cl::CommandQueue queue2

◆ R1

cv::Mat R1
extern

◆ R2

cv::Mat R2

◆ rectResultFrame

cv::Mat rectResultFrame
extern

◆ rectResultLeft

cv::Mat rectResultLeft
extern

◆ rectResultRight

cv::Mat rectResultRight

◆ RIden

cv::Mat RIden
extern

◆ Rotation

cv::Mat Rotation
extern

◆ sad_penalty1

float sad_penalty1
extern

GPU part.

◆ sad_penalty2

float sad_penalty2
extern

◆ sad_selected

volatile bool sad_selected
extern

◆ selectedImg

int selectedImg
extern

◆ temp_m_d

cl::Buffer temp_m_d

◆ temp_m_l

cl::Buffer temp_m_l

◆ temp_m_r

cl::Buffer temp_m_r

◆ temp_m_u

cl::Buffer temp_m_u
extern

◆ totalPixels

int totalPixels
extern

frameWidth * frameHeight

◆ Translation

cv::Mat Translation
extern

◆ zeros

float* zeros
extern

◆ zeros_dispRange

float* zeros_dispRange
extern