35
Lane Detection in Open CL

Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Embed Size (px)

Citation preview

Page 1: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Lane Detection in OpenCL

Page 2: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation

• CPU Code– Using C/C++ and OpenCV

• CPU + OpenCL Device Code– CPU Code: Using C/C++ and OpenCV– OpenCL Device Code: OpenCL kernels

Page 3: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code

Page 4: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Original Image & Selected ROI

Page 5: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code

•Sobel Edge-Detector

•Gradient Matrix

: value of an element in gradient matrix at a given

: pixel value at a given

•  

Page 6: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code

Page 7: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Detection | Lane Detection Schematic

Page 8: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Detection | Line Sampling

Page 9: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Detection

•Assigning Weight to a Line

: weight assigned to a line : Neighborhood : value of element chosen by in gradient matrix

•  

Page 10: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Detection• Extract High-Weight Lines

Page 11: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Detection | Lane Detection Schematic

Page 12: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code

Page 13: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Tracking

• Particle Filter developed in two phases

1. Particle Filter for Tracking a Robot in 2D

2. Particle Filter for Lane Tracking

Page 14: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Tracking

• Particle Filter developed in two phases

1. Particle Filter for Tracking a Robot in 2D

2. Particle Filter for Lane Tracking

Page 15: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 16: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

•Lane Tracking Schematic

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 17: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

•Motion Update / Prediction Update

(X, Y, ϴ): Position and Orientation of a particle

(, , ): Translational and Angular Velocities of a particle

•  

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 18: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

•Measurement Update / Correction Update

•Evidence

•Likelihoods are obtained from Normalization

•  

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 19: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

•Lane Tracking Schematic

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 20: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 21: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 22: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Tracking

• Particle Filter developed in two phases

1. Particle Filter for Tracking a Robot in 2D

2. Particle Filter for Lane Tracking

Page 23: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code | Lane Tracking | Particle Filter for Lane

Tracking

Page 24: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

•Lane Tracking Schematic

Implementation | CPU Code | Lane Tracking | Particle Filter for Tracking a Robot in

2D

Page 25: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation

• CPU Code– Using C/C++ and OpenCV

• CPU + OpenCL Device Code– CPU Code: Using C/C++ and OpenCV– OpenCL Device Code: OpenCL kernels

Page 26: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code | OpenCL

•OpenCL divides any given problem into

1. Platform Model

2. Execution Model

3. Memory Model

4. Programming Model

Page 27: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code | Platform Model

Page 28: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code | Execution Model

Page 29: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code | Memory Model

Page 30: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code | Programming Model

Page 31: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU Code

Page 32: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code

Page 33: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code

• Kernel 1: Lane Detection’s Device Code – Creates Lines

• Kernel 2: Lane Tracking’s Device Code– Motion Update– Measurement Update

Page 34: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code | OpenCL Execution

Schematic

Page 35: Lane Detection in OpenCL. Implementation CPU Code Using C/C++ and OpenCV CPU + OpenCL Device Code CPU Code: Using C/C++ and OpenCV OpenCL Device Code:

Implementation | CPU + OpenCL Device Code | OpenCL Execution

Schematic

• Schematic for execution on Altera FPGA