![]() |
ETRI IVCL 1.0.0
Acceleration SW Platform for Ondevice
|
#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 |
| #define __CL_ENABLE_EXCEPTIONS |
| #define MMAX | ( | a, | |
| b | |||
| ) | (((a)>(b))?(a):(b)) |
| #define MMIN | ( | a, | |
| b | |||
| ) | (((a)<(b))?(a):(b)) |
| #define USE_CAM false |
whether using camera or image
| void changeStaticImg | ( | int | img | ) |
| 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)
| void costComputation_SAD | ( | float *** | datacost, |
| float ** | left, | ||
| float ** | right, | ||
| int | width, | ||
| int | height, | ||
| int | dispRange, | ||
| int | mSize | ||
| ) |
Native SAD function.
| 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)
| gt | Ground truth depth image |
| gt_scaling | Scale the depth image (according to ground truth) |
| errorMap | Error map in the result image (compared with GT) |
| result | Input depth image |
| focal_length | Camera focal length |
| base_line | The distance between the stereo camera |
| dispRange | The number of pixels for matching comparison |
| d_val | range for evaluation (array) |
| 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_ | ||
| ) |
Evaluate the depth map (DISP_SPLIT == False)
| gt | Ground truth depth image |
| gt_scaling | Scale the depth image (according to ground truth) |
| errorMap | Error map in the result image (compared with GT) |
| result | Input depth image |
| focal_length | Camera focal length |
| base_line | The distance between the stereo camera |
| dispRange | The number of pixels for matching comparison |
| d_val | range for evaluation (array) |
| threshold_ |
| void filter_Gaussian | ( | float ** | inputL, |
| float ** | inputR, | ||
| float ** | outputL, | ||
| float ** | outputR, | ||
| int | width, | ||
| int | height | ||
| ) |
Perform 5x5 Gaussian filtering on an image (Native)
| inputL | Left input image |
| inputR | Right input image |
| outputL | The Gaussian filtered left image |
| outputR | The Gaussian filtered right image |
| width | The input image width |
| height | The input image height |
| void filter_Sobel | ( | float ** | inputL, |
| float ** | inputR, | ||
| float ** | outputL, | ||
| float ** | outputR, | ||
| int | width, | ||
| int | height | ||
| ) |
Perform 5x5 Sobel filtering on an image (Native)
| inputL | Left input image |
| inputR | Right input image |
| outputL | The Gaussian filtered left image |
| outputR | The Gaussian filtered right image |
| width | The input image width |
| height | The input image height |
| int index_x | ( | int | x, |
| int | width | ||
| ) |
PADDING X.
| int index_y | ( | int | y, |
| int | height | ||
| ) |
PADDING Y.
| 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.
| void mSizeChanged | ( | int | ms | ) |
| void openCL_ArgumentSet | ( | ) |
Declare for OpenCL argument.
SAD ///
ASW ///
BP !!!! ///
| void openCL_BufferSet | ( | ) |
Declare for OpenCL buffer.
| void openCL_ImageSet | ( | ) |
Declare for OpenCL Image2D.
| int openCL_Init | ( | ) |
Declare for OpenCL code execution.
THIS NEW KENEL CODE USES UCHAR4 VECTOR
| int openCV_Init | ( | ) |
| 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.
| void qt5_Init | ( | ) |
| void selectASW | ( | int | state, |
| void * | val | ||
| ) |
| void selectSAD | ( | int | state, |
| void * | val | ||
| ) |
| float *** SGM | ( | float ** | left, |
| float *** | datacost, | ||
| int | width, | ||
| int | height, | ||
| int | dispRange, | ||
| float | Penalty1, | ||
| float | Penalty2 | ||
| ) |
Refine stereo datacost using Semi Global Mathcing (Native)
| void startMethod | ( | int | state, |
| void * | val | ||
| ) |
| 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]
| void winnerTakesALL | ( | float *** | datacost, |
| uchar * | result, | ||
| int | height, | ||
| int | width, | ||
| int | dispRange | ||
| ) |
Find the minimum cost for each pixel using winner takes all algorithm.
|
extern |
|
extern |
|
extern |
| cl::Buffer bufferDispFinal |
| cl::Buffer bufferDispFinalFloat |
| cl::Buffer bufferDispMid |
|
extern |
| cl::Buffer bufferGaussianR |
|
extern |
|
extern |
buffer ///
| cl::Buffer bufferInB |
| cl::Buffer bufferInL |
| cl::Buffer bufferInR |
|
extern |
| cl::Buffer bufferOutB |
| cl::Buffer bufferOutL |
| cl::Buffer bufferOutR |
| cl::Buffer bufferSobelL |
| cl::Buffer bufferSobelR |
|
extern |
|
extern |
|
extern |
|
extern |
| cl::Buffer devPtr_dir_accumulated_costs |
|
extern |
The number of pixels for matching comparison
68 : Mobeius, 48 : Teddy
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
The input image height.
|
extern |
The input image width.
| cl::Kernel gASW_image_kernel |
|
extern |
|
extern |
| cl::Kernel gGaussian_8bit_image |
|
extern |
kernel ///
| cl::Kernel gRectifyR_8bit |
| cl::Kernel gSAD_image_kernel |
|
extern |
|
extern |
| cl::Kernel gSobel_8bit_image |
|
extern |
| cl::Kernel gWTA_float |
| const int HIER_ITER = 8 |
BP interation per one Hierarchy.
| const int HIER_LEVELS = 3 |
The number of hierarchy.
| cl::Image2D imageGaussianL |
| cl::Image2D imageGaussianR |
|
extern |
Image2D ///.
| cl::Image2D imageInR |
|
extern |
|
extern |
|
extern |
|
extern |
| cl::Kernel inplace_sum_views_ocl |
|
extern |
|
extern |
| cl::Kernel iterate_direction_dirxneg_ocl |
| cl::Kernel iterate_direction_dirxpos_ocl |
| cl::Kernel iterate_direction_diryneg_ocl |
| cl::Kernel iterate_direction_dirypos_ocl |
|
extern |
|
extern |
|
extern |
|
extern |
| cl::Buffer m_d |
| cl::Buffer m_l |
| cl::Buffer m_r |
|
extern |
|
extern |
| cv::Mat map1y |
| cv::Mat map2x |
| cv::Mat map2y |
| float maxASW_cost |
| float maxSAD_cost |
|
extern |
|
extern |
|
extern |
|
extern |
CAUTION !!! ask about parameter before change it!
|
extern |
|
extern |
|
extern |
whether using gaussian only or gaussian + sobel
|
extern |
whether using CPU or GPU
|
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)
|
extern |
|
extern |
| cv::Mat P1 |
| cv::Mat P2 |
|
extern |
Choose Platform
0 for desktop or laptop with non-optimus
1 for laptop with optimus
2 for embedded board (e.g. Odroid-XU4)
|
extern |
| cv::Mat Q |
|
extern |
| cl::CommandQueue queue2 |
|
extern |
| cv::Mat R2 |
|
extern |
|
extern |
| cv::Mat rectResultRight |
|
extern |
|
extern |
|
extern |
GPU part.
|
extern |
|
extern |
|
extern |
| cl::Buffer temp_m_d |
| cl::Buffer temp_m_l |
| cl::Buffer temp_m_r |
|
extern |
|
extern |
frameWidth * frameHeight
|
extern |
|
extern |
|
extern |