Hands-on GPU-accelerated computer vision with OpenCV and CUDA : effective techniques for processing complex image data in real time using GPUs.
2018
TA1634
Formats
Format | |
---|---|
BibTeX | |
MARCXML | |
TextMARC | |
MARC | |
DublinCore | |
EndNote | |
NLM | |
RefWorks | |
RIS |
Linked e-resources
Details
Title
Hands-on GPU-accelerated computer vision with OpenCV and CUDA : effective techniques for processing complex image data in real time using GPUs.
Author
ISBN
9781789343687 (electronic bk.)
1789343682 (electronic bk.)
1789343682 (electronic bk.)
Imprint
Birmingham : Packt, 2018.
Language
English
Description
1 online resource (373 pages)
Call Number
TA1634
System Control No.
(OCoLC)1056071267
Summary
This book is a guide to explore how accelerating of computer vision applications using GPUs will help you develop algorithms that work on complex image data in real time. It will solve the problems you face while deploying these algorithms on embedded platforms with the help of development boards from NVIDIA such as the Jetson TX1, Jetson TX2 ...
Formatted Contents Note
Cover
Title Page
Copyright and Credits
Packt Upsell
Contributors
Table of Contents
Preface
Chapter 1: Introducing CUDA and Getting Started with CUDA
Technical requirements
Introducing CUDA
Parallel processing
Introducing GPU architecture and CUDA
CUDA architecture
CUDA applications
CUDA development environment
CUDA-supported GPU
NVIDIA graphics card driver
Standard C compiler
CUDA development kit
Installing the CUDA toolkit on all operating systems
Windows
Linux
Mac
A basic program in CUDA C
Steps for creating a CUDA C program on Windows
Steps for creating a CUDA C program on Ubuntu
Summary
Questions
Chapter 2: Parallel Programming using CUDA C
Technical requirements
CUDA program structure
Two-variable addition program in CUDA C
A kernel call
Configuring kernel parameters
CUDA API functions
Passing parameters to CUDA functions
Passing parameters by value
Passing parameters by reference
Executing threads on a device
Accessing GPU device properties from CUDA programs
General device properties
Memory-related properties
Thread-related properties
Vector operations in CUDA
Two-vector addition program
Comparing latency between the CPU and the GPU code
Elementwise squaring of vectors in CUDA
Parallel communication patterns
Map
Gather
Scatter
Stencil
Transpose
Summary
Questions
Chapter 3: Threads, Synchronization, and Memory
Technical requirements
Threads
Memory architecture
Global memory
Local memory and registers
Cache memory
Thread synchronization
Shared memory
Atomic operations
Constant memory
Texture memory
Dot product and matrix multiplication example
Dot product
Matrix multiplication
Summary
Questions.
Advanced Concepts in Chapter 4: CUDA
Technical requirements
Performance measurement of CUDA programs
CUDA Events
The Nvidia Visual Profiler
Error handling in CUDA
Error handling from within the code
Debugging tools
Performance improvement of CUDA programs
Using an optimum number of blocks and threads
Maximizing arithmetic efficiency
Using coalesced or strided memory access
Avoiding thread divergence
Using page-locked host memory
CUDA streams
Using multiple CUDA streams
Acceleration of sorting algorithms using CUDA
Enumeration or rank sort algorithms
Image processing using CUDA
Histogram calculation on the GPU using CUDA
Summary
Questions
Chapter 5: Getting Started with OpenCV with CUDA Support
Technical requirements
Introduction to image processing and computer vision
Introduction to OpenCV
Installation of OpenCV with CUDA support
Installation of OpenCV on Windows
Using pre-built binaries
Building libraries from source
Installation of OpenCV with CUDA support on Linux
Working with images in OpenCV
Image representation inside OpenCV
Reading and displaying an image
Reading and displaying a color image
Creating images using OpenCV
Drawing shapes on the blank image
Drawing a line
Drawing a rectangle
Drawing a circle
Drawing an ellipse
Writing text on an image
Saving an image to a file
Working with videos in OpenCV
Working with video stored on a computer
Working with videos from a webcam
Saving video to a disk
Basic computer vision applications using the OpenCV CUDA module
Introduction to the OpenCV CUDA module
Arithmetic and logical operations on images
Addition of two images
Subtracting two images
Image blending
Image inversion
Changing the color space of an image
Image thresholding.
Performance comparison of OpenCV applications with and without CUDA support
Summary
Questions
Chapter 6: Basic Computer Vision Operations Using OpenCV and CUDA
Technical requirements
Accessing the individual pixel intensities of an image
Histogram calculation and equalization in OpenCV
Histogram equalization
Grayscale images
Color image
Geometric transformation on images
Image resizing
Image translation and rotation
Filtering operations on images
Convolution operations on an image
Low pass filtering on an image
Averaging filters
Gaussian filters
Median filtering
High-pass filtering on an image
Sobel filters
Scharr filters
Laplacian filters
Morphological operations on images
Summary
Questions
Chapter 7: Object Detection and Tracking Using OpenCV and CUDA
Technical requirements
Introduction to object detection and tracking
Applications of object detection and tracking
Challenges in object detection
Object detection and tracking based on color
Blue object detection and tracking
Object detection and tracking based on shape
Canny edge detection
Straight line detection using Hough transform
Circle detection
Key-point detectors and descriptors
Features from Accelerated Segment Test (FAST) feature detector
Oriented FAST and Rotated BRIEF (ORB) feature detection
Speeded up robust feature detection and matching
Object detection using Haar cascades
Face detection using Haar cascades
From video
Eye detection using Haar cascades
Object tracking using background subtraction
Mixture of Gaussian (MoG) method
GMG for background subtraction
Summary
Questions
Chapter 8: Introduction to the Jetson TX1 Development Board and Installing OpenCV on Jetson TX1
Technical requirements
Introduction to Jetson TX1.
Important features of the Jetson TX1
Applications of Jetson TX1
Installation of JetPack on Jetson TX1
Basic requirements for installation
Steps for installation
Summary
Questions
Chapter 9: Deploying Computer Vision Applications on Jetson TX1
Technical requirements
Device properties of Jetson TX1 GPU
Basic CUDA program on Jetson TX1
Image processing on Jetson TX1
Compiling OpenCV with CUDA support (if necessary)
Reading and displaying images
Image addition
Image thresholding
Image filtering on Jetson TX1
Interfacing cameras with Jetson TX1
Reading and displaying video from onboard camera
Advanced applications on Jetson TX1
Face detection using Haar cascades
Eye detection using Haar cascades
Background subtraction using Mixture of Gaussian (MoG)
Computer vision using Python and OpenCV on Jetson TX1
Summary
Questions
Chapter 10: Getting Started with PyCUDA
Technical requirements
Introduction to Python programming language
Introduction to the PyCUDA module
Installing PyCUDA on Windows
Steps to check PyCUDA installation
Installing PyCUDA on Ubuntu
Steps to check the PyCUDA installation
Summary
Questions
Chapter 11: Working with PyCUDA
Technical requirements
Writing the first program in PyCUDA
A kernel call
Accessing GPU device properties from PyCUDA program
Thread and block execution in PyCUDA
Basic programming concepts in PyCUDA
Adding two numbers in PyCUDA
Simplifying the addition program using driver class
Measuring performance of PyCUDA programs using CUDA events
CUDA events
Measuring performance of PyCUDA using large array addition
Complex programs in PyCUDA
Element-wise squaring of a matrix in PyCUDA
Simple kernel invocation with multidimensional threads
Using inout with the kernel invocation.
Using gpuarray class
Dot product using GPU array
Matrix multiplication
Advanced kernel functions in PyCUDA
Element-wise kernel in PyCUDA
Reduction kernel
Scan kernel
Summary
Questions
Chapter 12: Basic Computer Vision Applications Using PyCUDA
Technical requirements
Histogram calculation in PyCUDA
Using atomic operations
Using shared memory
Basic computer vision operations using PyCUDA
Color space conversion in PyCUDA
BGR to gray conversion on an image
BGR to gray conversion on a webcam video
Image addition in PyCUDA
Image inversion in PyCUDA using gpuarray
Summary
Questions
Assessments
Other Books You May Enjoy
Leave a review
let other readers know what you think
Index.
Title Page
Copyright and Credits
Packt Upsell
Contributors
Table of Contents
Preface
Chapter 1: Introducing CUDA and Getting Started with CUDA
Technical requirements
Introducing CUDA
Parallel processing
Introducing GPU architecture and CUDA
CUDA architecture
CUDA applications
CUDA development environment
CUDA-supported GPU
NVIDIA graphics card driver
Standard C compiler
CUDA development kit
Installing the CUDA toolkit on all operating systems
Windows
Linux
Mac
A basic program in CUDA C
Steps for creating a CUDA C program on Windows
Steps for creating a CUDA C program on Ubuntu
Summary
Questions
Chapter 2: Parallel Programming using CUDA C
Technical requirements
CUDA program structure
Two-variable addition program in CUDA C
A kernel call
Configuring kernel parameters
CUDA API functions
Passing parameters to CUDA functions
Passing parameters by value
Passing parameters by reference
Executing threads on a device
Accessing GPU device properties from CUDA programs
General device properties
Memory-related properties
Thread-related properties
Vector operations in CUDA
Two-vector addition program
Comparing latency between the CPU and the GPU code
Elementwise squaring of vectors in CUDA
Parallel communication patterns
Map
Gather
Scatter
Stencil
Transpose
Summary
Questions
Chapter 3: Threads, Synchronization, and Memory
Technical requirements
Threads
Memory architecture
Global memory
Local memory and registers
Cache memory
Thread synchronization
Shared memory
Atomic operations
Constant memory
Texture memory
Dot product and matrix multiplication example
Dot product
Matrix multiplication
Summary
Questions.
Advanced Concepts in Chapter 4: CUDA
Technical requirements
Performance measurement of CUDA programs
CUDA Events
The Nvidia Visual Profiler
Error handling in CUDA
Error handling from within the code
Debugging tools
Performance improvement of CUDA programs
Using an optimum number of blocks and threads
Maximizing arithmetic efficiency
Using coalesced or strided memory access
Avoiding thread divergence
Using page-locked host memory
CUDA streams
Using multiple CUDA streams
Acceleration of sorting algorithms using CUDA
Enumeration or rank sort algorithms
Image processing using CUDA
Histogram calculation on the GPU using CUDA
Summary
Questions
Chapter 5: Getting Started with OpenCV with CUDA Support
Technical requirements
Introduction to image processing and computer vision
Introduction to OpenCV
Installation of OpenCV with CUDA support
Installation of OpenCV on Windows
Using pre-built binaries
Building libraries from source
Installation of OpenCV with CUDA support on Linux
Working with images in OpenCV
Image representation inside OpenCV
Reading and displaying an image
Reading and displaying a color image
Creating images using OpenCV
Drawing shapes on the blank image
Drawing a line
Drawing a rectangle
Drawing a circle
Drawing an ellipse
Writing text on an image
Saving an image to a file
Working with videos in OpenCV
Working with video stored on a computer
Working with videos from a webcam
Saving video to a disk
Basic computer vision applications using the OpenCV CUDA module
Introduction to the OpenCV CUDA module
Arithmetic and logical operations on images
Addition of two images
Subtracting two images
Image blending
Image inversion
Changing the color space of an image
Image thresholding.
Performance comparison of OpenCV applications with and without CUDA support
Summary
Questions
Chapter 6: Basic Computer Vision Operations Using OpenCV and CUDA
Technical requirements
Accessing the individual pixel intensities of an image
Histogram calculation and equalization in OpenCV
Histogram equalization
Grayscale images
Color image
Geometric transformation on images
Image resizing
Image translation and rotation
Filtering operations on images
Convolution operations on an image
Low pass filtering on an image
Averaging filters
Gaussian filters
Median filtering
High-pass filtering on an image
Sobel filters
Scharr filters
Laplacian filters
Morphological operations on images
Summary
Questions
Chapter 7: Object Detection and Tracking Using OpenCV and CUDA
Technical requirements
Introduction to object detection and tracking
Applications of object detection and tracking
Challenges in object detection
Object detection and tracking based on color
Blue object detection and tracking
Object detection and tracking based on shape
Canny edge detection
Straight line detection using Hough transform
Circle detection
Key-point detectors and descriptors
Features from Accelerated Segment Test (FAST) feature detector
Oriented FAST and Rotated BRIEF (ORB) feature detection
Speeded up robust feature detection and matching
Object detection using Haar cascades
Face detection using Haar cascades
From video
Eye detection using Haar cascades
Object tracking using background subtraction
Mixture of Gaussian (MoG) method
GMG for background subtraction
Summary
Questions
Chapter 8: Introduction to the Jetson TX1 Development Board and Installing OpenCV on Jetson TX1
Technical requirements
Introduction to Jetson TX1.
Important features of the Jetson TX1
Applications of Jetson TX1
Installation of JetPack on Jetson TX1
Basic requirements for installation
Steps for installation
Summary
Questions
Chapter 9: Deploying Computer Vision Applications on Jetson TX1
Technical requirements
Device properties of Jetson TX1 GPU
Basic CUDA program on Jetson TX1
Image processing on Jetson TX1
Compiling OpenCV with CUDA support (if necessary)
Reading and displaying images
Image addition
Image thresholding
Image filtering on Jetson TX1
Interfacing cameras with Jetson TX1
Reading and displaying video from onboard camera
Advanced applications on Jetson TX1
Face detection using Haar cascades
Eye detection using Haar cascades
Background subtraction using Mixture of Gaussian (MoG)
Computer vision using Python and OpenCV on Jetson TX1
Summary
Questions
Chapter 10: Getting Started with PyCUDA
Technical requirements
Introduction to Python programming language
Introduction to the PyCUDA module
Installing PyCUDA on Windows
Steps to check PyCUDA installation
Installing PyCUDA on Ubuntu
Steps to check the PyCUDA installation
Summary
Questions
Chapter 11: Working with PyCUDA
Technical requirements
Writing the first program in PyCUDA
A kernel call
Accessing GPU device properties from PyCUDA program
Thread and block execution in PyCUDA
Basic programming concepts in PyCUDA
Adding two numbers in PyCUDA
Simplifying the addition program using driver class
Measuring performance of PyCUDA programs using CUDA events
CUDA events
Measuring performance of PyCUDA using large array addition
Complex programs in PyCUDA
Element-wise squaring of a matrix in PyCUDA
Simple kernel invocation with multidimensional threads
Using inout with the kernel invocation.
Using gpuarray class
Dot product using GPU array
Matrix multiplication
Advanced kernel functions in PyCUDA
Element-wise kernel in PyCUDA
Reduction kernel
Scan kernel
Summary
Questions
Chapter 12: Basic Computer Vision Applications Using PyCUDA
Technical requirements
Histogram calculation in PyCUDA
Using atomic operations
Using shared memory
Basic computer vision operations using PyCUDA
Color space conversion in PyCUDA
BGR to gray conversion on an image
BGR to gray conversion on a webcam video
Image addition in PyCUDA
Image inversion in PyCUDA using gpuarray
Summary
Questions
Assessments
Other Books You May Enjoy
Leave a review
let other readers know what you think
Index.
Source of Description
Online resource; title from PDF title page (EBSCO, viewed October 17, 2018).
Linked Resources
Record Appears in