| 作者 |
| [美] 包米克·维迪雅(Bhaumik Vaidya) [西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendon&ccedil a) [美]普拉蒂克·乔希(Prateek Joshi) |
| 丛书名 |
| 智能系统与技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782005189251 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------基于GPU加速的计算机视觉编程:使用OpenCV和CUDA实时处理复杂图像数据--------------------------- 本书提供了OpenCV与CUDA集成以实现实际应用的详细概述。首先介绍使用CUDA进行GPU编程的基础知识。然后,通过一些实际的例子讲解如何利用GPU和CUDA实现OpenCV加速。一旦掌握了核心概念,读者将熟悉如何在NVIDIA Jetson TX1上部署OpenCV应用程序,该应用程序在计算机视觉和深度学习应用程序中非常流行。本书的最后几章解释了PyCUDA,这是一个Python库,它利用CUDA和GPU的强大功能来加速。在本书的最后,读者将通过本书的实践方法增强计算机视觉应用程序。 ---------------------------OpenCV 4计算机视觉项目实战(原书第2版)--------------------------- 本书通过实例和项目讲解OpenCV概念及其算法。首先介绍OpenCV的安装和图像处理的基础知识。然后,覆盖用户界面并深入讲解图像处理,读者将学到复杂的计算机视觉算法,并探索机器学习和人脸检测。之后,本书将介绍如何在复杂场景中创建光流视频分析和背景减除,还将讲解文本分割和识别,以及新的和改进的深度学习模块的基础知识。最后,本书介绍了OpenCV的基础知识,例如矩阵运算、滤波器和直方图,帮读者掌握常用的计算机视觉技术,从头开始构建OpenCV项目。 |
| 目录 |
---------------------------基于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 1.7 总结 11 1.8 测验题 11 第2章 使用CUDA C进行并行编程 12 2.1 技术要求 12 2.2 CUDA程序结构 13 2.2.1 CUDA C中的双变量加法程序 13 2.2.2 内核调用 14 2.2.3 配置内核参数 15 2.2.4 CUDA API函数 16 2.2.5 将参数传递给CUDA函数 17 2.3 在设备上执行线程 19 2.4 在CUDA程序中获取GPU设备属性 20 2.4.1 通用设备信息 21 2.4.2 内存相关属性 22 2.4.3 线程相关属性 22 2.5 CUDA中的向量运算 24 2.5.1 两个向量加法程序 24 2.5.2 对比CPU代码和GPU代码的延迟 27 2.5.3 对向量的每个元素进行平方 28 2.6 并行通信模式 29 2.6.1 映射 29 2.6.2 收集 29 2.6.3 分散式 30 2.6.4 蒙板 30 2.6.5 转置 30 2.7 总结 30 2.8 测验题 31 第3章 线程、同步和存储器 32 3.1 技术要求 32 3.2 线程 33 3.3 存储器架构 36 3.3.1 全局内存 37 3.3.2 本地内存和寄存器堆 38 3.3.3 高速缓冲存储器 39 3.4 线程同步 39 3.4.1 共享内存 39 3.4.2 原子操作 42 3.5 常量内存 46 3.6 纹理内存 48 3.7 向量点乘和矩阵乘法实例 50 3.7.1 向量点乘 50 3.7.2 矩阵乘法 54 3.8 总结 58 3.9 测验题 58 第4章 CUDA中的高级概念 60 4.1 技术要求 60 4.2 测量CUDA程序的性能 61 4.2.1 CUDA事件 61 4.2.2 NVIDIA Visual Profiler 63 4.3 CUDA中的错误处理 64 4.3.1 从代码中进行错误处理 65 4.3.2 调试工具 66 4.4 CUDA程序性能的提升 66 4.4.1 使用适当的块数量和线程数量 66 4.4.2 最大化数学运算效率 67 4.4.3 使用合并的或跨步式的访存 67 4.4.4 避免warp内分支 67 4.4.5 使用锁定页面的内存 68 4.5 CUDA流 69 4.6 使用CUDA加速排序算法 73 4.7 利用CUDA进行图像处理 75 4.8 总结 80 4.9 测验题 81 第5章 支持CUDA的OpenCV入门 82 5.1 技术要求 82 5.2 图像处理和计算机视觉简介 83 5.3 OpenCV简介 83 5.4 安装支持CUDA的OpenCV 84 5.4.1 在Windows上安装OpenCV 84 5.4.2 在Linux上安装OpenCV 89 5.5 使用OpenCV处理图像 92 5.5.1 OpenCV中的图像表示 92 5.5.2 图像的读取和显示 93 5.5.3 使用OpenCV创建图像 96 5.5.4 将图像保存到文件 99 5.6 使用OpenCV处理视频 99 5.6.1 处理存储在计算机上的视频 100 5.6.2 处理从网络摄像机读取的视频 101 5.6.3 将视频保存到磁盘 102 5.7 使用OpenCV CUDA模块的基本计算机视觉应用程序 104 5.7.1 OpenCV CUDA模块简介 104 5.7.2 对图像的算术和逻辑运算 104 5.7.3 更改图像的颜色空间 108 5.7.4 图像阈值处理 109 5.8 OpenCV应用程序使用和不使用CUDA支持的性能比较 110 5.9 总结 113 5.10 测验题 114 第6章 使用OpenCV和CUDA进行基本的计算机视觉操作 115 6.1 技术要求 115 6.2 访问图像的各个像素强度 116 6.3 OpenCV中直方图的计算和均衡 117 6.4 图像的几何变换 120 6.4.1 图像大小调整 120 6.4.2 图像平移与旋转 121 6.5 对图像进行滤波操作 122 6.5.1 对图像的卷积运算 122 6.5.2 对图像进行低通滤波操作 123 6.5.3 对图像进行高通滤波操作 128 6.6 图像的形态学操作 131 6.7 总结 134 6.8 测验题 134 第7章 使用OpenCV和CUDA进行对象检测和跟踪 135 7.1 技术要求 135 7.2 对象检测和跟踪简介 136 7.2.1 对象检测和跟踪的应用 136 7.2.2 对象检测中的挑战 136 7.3 基于颜色的对象检测和跟踪 136 7.4 基于形状的对象检测和跟踪 139 7.4.1 Canny边缘检测 139 7.4.2 使用Hough变换进行直线检测 140 7.4.3 对圆形进行检测 143 7.5 关键点检测器和描述符 144 7.5.1 加速段测试特征功能检测器 144 7.5.2 面向FAST和旋转BRIEF的特征检测 145 7.5.3 加速强特征检测和匹配 147 7.6 使用Haar级联的对象检测 150 7.6.1 使用Haar级联进行人脸检测 151 7.6.2 使用Haar级联进行眼睛检测 153 7.7 使用背景减法进行对象跟踪 155 7.7.1 高斯混合法 155 7.7.2 GMG背景减法 157 7.8 总结 159 7.9 测验题 160 第8章 Jetson TX1开发套件 161 8.1 技术要求 161 8.2 Jetson TX1简介 161 8.2.1 Jetson TX1的重要特性 163 8.2.2 Jetson TX1的应用 163 8.3 在Jetson TX1上安装JetPack 163 8.3.1 安装的基本要求 164 8.3.2 安装的步骤 164 8.4 总结 171 8.5 测验题 171 第9章 在Jetson TX1上部署计算机视觉应用程序 172 9.1 技术要求 172 9.2 Jetson TX1 GPU的设备属性 173 9.3 Jetson TX1上的基本CUDA程序 174 9.4 Jetson TX1上的图像处理 176 9.4.1 编译支持CUDA的OpenCV 176 9.4.2 读取和显示图像 178 9.4.3 图像合成 178 9.4.4 图像阈值处理 180 9.4.5 Jetson TX1上的图像滤波 182 9.5 Jetson TX1的摄像机接口 184 9.6 Jetson TX1上的高级应用程序 185 9.6.1 使用Haar级联进行人脸检测 185 9.6.2 使用Haar级联进行眼睛检测 187 9.6.3 高斯混合背景减法 188 9.7 在Jetson TX1上使用Python和OpenCV实现计算机视觉 191 9.8 总结 192 9.9 测验题 193 第10章 PyCUDA入门 194 10.1 技术要求 194 10.2 Python编程语言简介 194 10.3 PyCUDA模块简介 195 10.4 在Windows上安装PyCUDA 196 10.5 在Ubuntu上安装PyCUDA 199 10.6 总结 201 10.7 测验题 201 第11章 使用PyCUDA 202 11.1 技术要求 202 11.2 编写第一个PyCUDA程序 203 11.3 从PyCUDA程序访问GPU设备属性 204 11.4 在PyCUDA中执行线程和块 206 11.5 PyCUDA中的基本编程概念 206 11.5.1 在PyCUDA中两个数字相加 207 11.5.2 使用driver类简化加法程序 208 11.6 使用CUDA事件测量PyCUDA程序的性能 209 11.6.1 CUDA事件 209 11.6.2 使用大型数组加法测量PyCUDA的性能 210 11.7 PyCUDA中的复杂程序 212 11.7.1 对PyCUDA中的矩阵元素进行平方运算 212 11.7.2 GPU数组点乘 215 11.7.3 矩阵乘法 217 11.8 PyCUDA的高级内核函数 219 11.8.1 PyCUDA的元素级内核函数 219 11.8.2 归约内核函数 220 11.8.3 scan内核函数 221 11.9 总结 222 11.10 测验题 223 第12章 使用PyCUDA的基本计算机视觉应用程序 224 12.1 技术要求 224 12.2 PyCUDA中的直方图计算 224 12.2.1 使用原子操作 225 12.2.2 使用共享内存 227 12.3 使用PyCUDA进行基本的计算机视觉操作 229 12.3.1 PyCUDA中的颜色空间转换 230 12.3.2 在PyCUDA执行图像合成 233 12.3.3 在PyCUDA中使用gpuarray进行图像反转 234 12.4 总结 235 12.5 测验题 235 测验题答案 236 ---------------------------OpenCV 4计算机视觉项目实战(原书第2版)--------------------------- 前言 作者简介 审校者简介 第1章 OpenCV入门 1 1.1 了解人类视觉系统 1 1.2 人类如何理解图像内容 3 1.3 你能用OpenCV做什么 4 1.3.1 内置数据结构和输入/输出 4 1.3.2 图像处理操作 5 1.3.3 GUI 5 1.3.4 视频分析 6 1.3.5 3D重建 6 1.3.6 特征提取 7 1.3.7 对象检测 7 1.3.8 机器学习 8 1.3.9 计算摄影 8 1.3.10 形状分析 9 1.3.11 光流算法 9 1.3.12 人脸和对象识别 9 1.3.13 表面匹配 10 1.3.14 文本检测和识别 10 1.3.15 深度学习 10 1.4 安装OpenCV 10 1.4.1 Windows 11 1.4.2 Mac OS X 11 1.4.3 Linux 13 1.5 总结 14 第2章 OpenCV基础知识导论 15 2.1 技术要求 15 2.2 基本CMake配置文件 16 2.3 创建一个库 16 2.4 管理依赖项 17 2.5 让脚本更复杂 18 2.6 图像和矩阵 20 2.7 读/写图像 22 2.8 读取视频和摄像头 25 2.9 其他基本对象类型 27 2.9.1 Vec对象类型 27 2.9.2 Scalar对象类型 28 2.9.3 Point对象类型 28 2.9.4 Size对象类型 29 2.9.5 Rect对象类型 29 2.9.6 RotatedRect对象类型 29 2.10 基本矩阵运算 30 2.11 基本数据存储 32 2.12 总结 34 第3章 学习图形用户界面 35 3.1 技术要求 35 3.2 OpenCV用户界面介绍 36 3.3 OpenCV的基本图形用户界面 36 3.4 Qt图形用户界面 44 3.5 OpenGL支持 50 3.6 总结 54 第4章 深入研究直方图和滤波器 55 4.1 技术要求 56 4.2 生成CMake脚本文件 56 4.3 创建图形用户界面 57 4.4 绘制直方图 59 4.5 图像颜色均衡 62 4.6 Lomography效果 64 4.7 卡通效果 68 4.8 总结 72 第5章 自动光学检查、对象分割和检测 73 5.1 技术要求 73 5.2 隔离场景中的对象 74 5.3 为AOI创建应用程序 76 5.4 预处理输入图像 78 5.4.1 噪声消除 78 5.4.2 用光模式移除背景进行分割 79 5.4.3 阈值 84 5.5 分割输入图像 85 5.5.1 连通组件算法 85 5.5.2 findContours算法 90 5.6 总结 92 第6章 学习对象分类 94 6.1 技术要求 94 6.2 机器学习概念介绍 95 6.3 计算机视觉和机器学习工作流程 98 6.4 自动对象检查分类示例 100 6.4.1 特征提取 102 6.4.2 训练SVM模型 105 6.4.3 输入图像预测 109 6.5 总结 111 第7章 检测面部部位与覆盖面具 112 7.1 技术要求 112 7.2 了解Haar级联 112 7.3 什么是积分图像 114 7.4 在实时视频中覆盖面具 115 7.5 戴上太阳镜 118 7.6 跟踪鼻子、嘴巴和耳朵 121 7.7 总结 122 第8章 视频监控、背景建模和形态学操作 123 8.1 技术要求 123 8.2 理解背景减除 124 8.3 直接的背景减除 124 8.4 帧差分 128 8.5 高斯混合方法 131 8.6 形态学图像处理 133 8.7 使形状变细 134 8.8 使形状变粗 135 8.9 其他形态运算符 136 8.9.1 形态开口 136 8.9.2 形态闭合 137 8.9.3 绘制边界 138 8.9.4 礼帽变换 139 8.9.5 黑帽变换 140 8.10 总结 140 第9章 学习对象跟踪 141 9.1 技术要求 141 9.2 跟踪特定颜色的对象 141 9.3 构建交互式对象跟踪器 143 9.4 用Harris角点检测器检测点 148 9.5 用于跟踪的好特征 151 9.6 基于特征的跟踪 153 9.6.1 Lucas-Kanade方法 153 9.6.2 Farneback算法 157 9.7 总结 161 第10章 开发用于文本识别的分割算法 162 10.1 技术要求 162 10.2 光学字符识别介绍 162 10.3 预处理阶段 164 10.3.1 对图像进行阈值处理 164 10.3.2 文本分割 165 10.4 在你的操作系统上安装Tesseract OCR 172 10.4.1 在Windows上安装Tesseract 172 10.4.2 在Mac上安装Tesseract 173 10.5 使用Tesseract OCR库 173 10.6 总结 177 第11章 用Tesseract进行文本识别 178 11.1 技术要求 178 11.2 文本API的工作原理 179 11.2.1 场景检测问题 179 11.2.2 极值区域 180 11.2.3 极值区域过滤 181 11.3 使用文本API 182 11.3.1 文本检测 182 11.3.2 文本提取 187 11.3.3 文本识别 189 11.4 总结 193 第12章 使用OpenCV进行深度学习 194 12.1 技术要求 194 12.2 深度学习简介 195 12.2.1 什么是神经网络,我们如何从数据中学习 195 12.2.2 卷积神经网络 197 12.3 OpenCV中的深度学习 198 12.4 YOLO用于实时对象检测 199 12.4.1 YOLO v3深度学习模型架构 200 12.4.2 YOLO数据集、词汇表和模型 200 12.4.3 将YOLO导入OpenCV 201 12.5 用SSD进行人脸检测 204 12.5.1 SSD模型架构 204 12.5.2 将SSD人脸检测导入OpenCV 204 12.6 总结 208 |