基于GPU加速的计算机视觉编程:使用OpenCV和CUDA实时处理复杂图像数据
基本信息

内容简介
作译者
目录
作者简介
审稿人简介
第1章 CUDA介绍及入门 1
1.1 技术要求 1
1.2 CUDA介绍 1
1.2.1 并行处理 2
1.2.2 GPU架构和CUDA介绍 2
1.2.3 CUDA架构 3
1.3 CUDA应用程序 4
1.4 CUDA开发环境 5
1.4.1 支持CUDA的GPU 5
1.4.2 CUDA开发工具包 6
1.5 在所有操作系统上安装CUDA工具包 6
1.5.1 Windows 6
1.5.2 Linux 7
1.5.3 Mac 8
1.6 一个基本的CUDA C程序 9
1.6.1 在Windows上创建CUDA C程序的步骤 10
1.6.2 在Ubuntu上创建CUDA C程序的步骤 10
前言
本书的读者对象
对于想学习如何利用GPU处理更复杂的图像数据的OpenCV开发人员,本书是必读指南。大多数计算机视觉工程师或开发人员在试图实时处理复杂的图像数据时都会遇到问题。这就需要使用GPU进行计算机视觉算法的加速,而这有助于人们开发能够实时处理复杂图像数据的算法。大多数人认为硬件加速只能通过FPGA和ASIC设计来实现,为此,他们需要Verilog或VHDL等硬件描述语言的知识。然而,只在CUDA出现之前情况才如此。CUDA利用了NVIDIA GPU的强大功能,可以使用支持CUDA的C++和Python等编程语言来加速算法。本书将通过开发实际应用程序来帮助这些开发人员了解这些概念并在嵌入式平台上部署计算机视觉应用程序,如NVIDIA Jetson TX1。
本书的主要内容
第1章介绍了CUDA架构以及它如何重新定义GPU的并行处理能力,讨论了CUDA架构在实际场景中的应用,介绍了CUDA的开发环境,以及如何在所有操作系统上安装CUDA。
第2章教读者使用CUDA为GPU编写程序。从一个简单的Hello World程序开始,逐步用CUDA C构建复杂示例。该章还介绍了内核如何工作以及如何使用设备属性,并讨论了与CUDA编程相关的术语。
第3章向读者介绍了如何从CUDA程序中调用线程,多个线程如何相互通信,多个线程并行工作时如何同步,以及常量内存和纹理内存。
第4章包括CUDA流和CUDA事件等高级概念,描述了如何使用CUDA加速排序算法,并研究了使用CUDA加速简单图像处理功能。
第5章描述了在所有操作系统中安装支持CUDA的OpenCV库,解释了如何使用一个简单的程序来测试这个安装,比较了使用和不使用CUDA支持执行的图像处理程序的性能。
第6章教读者如何使用OpenCV开发基本的计算机视觉操作应用程序,如像素级的图像操作、滤波和形态学操作。
第7章介绍了使用OpenCV和CUDA加速一些实际计算机视觉应用程序的步骤,描述了用于对象检测的特征检测和描述算法。该章还介绍了基于Haar级联和视频分析技术的人脸检测加速,如用于对象跟踪的背景减法。
第8章介绍了Jetson TX1嵌入式平台以及如何使用它来加速和部署计算机视觉应用程序,还介绍了在Jetson TX1上使用JetPack安装文件安装OpenCV for Tegra的过程。
第9章包括在Jetson TX1上部署计算机视觉应用程序,介绍了如何构建不同的计算机视觉应用程序,以及如何将摄像机与Jetson TX1连接用于视频处理应用程序。
第10章介绍了PyCUDA,这是一个用于GPU加速的Python库。该章描述了在所有操作系统上的安装过程。
第11章教读者如何使用PyCUDA编写程序,其中详细描述了从主机到设备的数据传输和内核执行的概念,涵盖了如何在PyCUDA中使用数组和开发复杂的算法。
第12章介绍了使用PyCUDA的基本计算机视觉应用的开发和加速,描述了颜色空间转换操作、直方图计算和不同的算术操作作为计算机视觉应用的例子。
充分利用本书
本书介绍的示例可以在Windows、Linux和macOS上运行,书中涵盖了所有的安装说明。读者最好对计算机视觉概念和编程语言(如C++和Python)有全面了解,最好用NVIDIA GPU硬件来执行书中介绍的示例。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
媒体评论
本书详细介绍了OpenCV与CUDA集成以实现实际应用。首先,你将了解如何使用CUDA进行GPU编程,这对于从未使用过GPU的计算机视觉开发人员来说是必不可少的。然后,你将通过一些实际的例子继续探索如何利用GPU和CUDA实现OpenCV加速。一旦掌握了核心概念,你将理解如何在NVIDIA Jetson TX1上部署OpenCV应用程序,该应用程序在计算机视觉和深度学习应用程序中非常流行。本书最后几章解释了PyCUDA,这是一个Python库,它利用CUDA和GPU的强大功能来加速,使用OpenCV和Python的计算机视觉开发人员可以运用它。在本书最后,你将通过本书提供的实践方法增强计算机视觉应用程序。
通过阅读本书,你将学到:
如何从CUDA程序访问GPU设备属性和功能。
如何加快搜索和排序算法。
如何检测图像中的线条和圆等形状。
如何使用算法探索目标跟踪和检测。
如何在Jetson TX1中使用不同的视频分析技术处理视频。
如何从PyCUDA程序访问GPU设备属性。
理解内核执行的工作原理。