基于GPU加速的計算機視覺編程:使用OpenCV和CUDA實時處理復(fù)雜圖像數(shù)據(jù)
定 價:79 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[美] 巴烏米克·維迪婭(Bhaumik Vaidya)
- 出版時間:2020/4/1
- ISBN:9787111651475
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP302.7
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書提供了OpenCV與CUDA集成以實現(xiàn)實際應(yīng)用的詳細概述。首先介紹使用CUDA進行GPU編程的基礎(chǔ)知識。然后,通過一些實際的例子講解如何利用GPU和CUDA實現(xiàn)OpenCV加速。一旦掌握了核心概念,讀者將熟悉如何在NVIDIA Jetson TX1上部署OpenCV應(yīng)用程序,該應(yīng)用程序在計算機視覺和深度學(xué)習(xí)應(yīng)用程序中非常流行。本書的*后幾章解釋了PyCUDA,這是一個Python庫,它利用CUDA和GPU的強大功能來加速。在本書的*后,讀者將通過本書的實踐方法增強計算機視覺應(yīng)用程序。
前言
作者簡介
審稿人簡介
第1章 CUDA介紹及入門 1
1.1 技術(shù)要求 1
1.2 CUDA介紹 1
1.2.1 并行處理 2
1.2.2 GPU架構(gòu)和CUDA介紹 2
1.2.3 CUDA架構(gòu) 3
1.3 CUDA應(yīng)用程序 4
1.4 CUDA開發(fā)環(huán)境 5
1.4.1 支持CUDA的GPU 5
1.4.2 CUDA開發(fā)工具包 6
1.5 在所有操作系統(tǒng)上安裝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上創(chuàng)建CUDA C程序的步驟 10
1.6.2 在Ubuntu上創(chuàng)建CUDA C程序的步驟 10
1.7 總結(jié) 11
1.8 測驗題 11
第2章 使用CUDA C進行并行編程 12
2.1 技術(shù)要求 12
2.2 CUDA程序結(jié)構(gòu) 13
2.2.1 CUDA C中的雙變量加法程序 13
2.2.2 內(nèi)核調(diào)用 14
2.2.3 配置內(nèi)核參數(shù) 15
2.2.4 CUDA API函數(shù) 16
2.2.5 將參數(shù)傳遞給CUDA函數(shù) 17
2.3 在設(shè)備上執(zhí)行線程 19
2.4 在CUDA程序中獲取GPU設(shè)備屬性 20
2.4.1 通用設(shè)備信息 21
2.4.2 內(nèi)存相關(guān)屬性 22
2.4.3 線程相關(guān)屬性 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 轉(zhuǎn)置 30
2.7 總結(jié) 30
2.8 測驗題 31
第3章 線程、同步和存儲器 32
3.1 技術(shù)要求 32
3.2 線程 33
3.3 存儲器架構(gòu) 36
3.3.1 全局內(nèi)存 37
3.3.2 本地內(nèi)存和寄存器堆 38
3.3.3 高速緩沖存儲器 39
3.4 線程同步 39
3.4.1 共享內(nèi)存 39
3.4.2 原子操作 42
3.5 常量內(nèi)存 46
3.6 紋理內(nèi)存 48
3.7 向量點乘和矩陣乘法實例 50
3.7.1 向量點乘 50
3.7.2 矩陣乘法 54
3.8 總結(jié) 58
3.9 測驗題 58
第4章 CUDA中的高級概念 60
4.1 技術(shù)要求 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 調(diào)試工具 66
4.4 CUDA程序性能的提升 66
4.4.1 使用適當(dāng)?shù)膲K數(shù)量和線程數(shù)量 66
4.4.2 最大化數(shù)學(xué)運算效率 67
4.4.3 使用合并的或跨步式的訪存 67
4.4.4 避免warp內(nèi)分支 67
4.4.5 使用鎖定頁面的內(nèi)存 68
4.5 CUDA流 69
4.6 使用CUDA加速排序算法 73
4.7 利用CUDA進行圖像處理 75
4.8 總結(jié) 80
4.9 測驗題 81
第5章 支持CUDA的OpenCV入門 82
5.1 技術(shù)要求 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創(chuàng)建圖像 96
5.5.4 將圖像保存到文件 99
5.6 使用OpenCV處理視頻 99
5.6.1 處理存儲在計算機上的視頻 100
5.6.2 處理從網(wǎng)絡(luò)攝像機讀取的視頻 101
5.6.3 將視頻保存到磁盤 102
5.7 使用OpenCV CUDA模塊的基本計算機視覺應(yīng)用程序 104
5.7.1 OpenCV CUDA模塊簡介 104
5.7.2 對圖像的算術(shù)和邏輯運算 104
5.7.3 更改圖像的顏色空間 108
5.7.4 圖像閾值處理 109
5.8 OpenCV應(yīng)用程序使用和不使用CUDA支持的性能比較 110
5.9 總結(jié) 113
5.10 測驗題 114
第6章 使用OpenCV和CUDA進行基本的計算機視覺操作 115
6.1 技術(shù)要求 115
6.2 訪問圖像的各個像素強度 116
6.3 OpenCV中直方圖的計算和均衡 117
6.4 圖像的幾何變換 120
6.4.1 圖像大小調(diào)整 120
6.4.2 圖像平移與旋轉(zhuǎn) 121
6.5 對圖像進行濾波操作 122
6.5.1 對圖像的卷積運算 122
6.5.2 對圖像進行低通濾波操作 123
6.5.3 對圖像進行高通濾波操作 128
6.6 圖像的形態(tài)學(xué)操作 131
6.7 總結(jié) 134
6.8 測驗題 134
第7章 使用OpenCV和CUDA進行對象檢測和跟蹤 135
7.1 技術(shù)要求 135
7.2 對象檢測和跟蹤簡介 136
7.2.1 對象檢測和跟蹤的應(yīng)用 136
7.2.2 對象檢測中的挑戰(zhàn) 136
7.3 基于顏色的對象檢測和跟蹤 136
7.4 基于形狀的對象檢測和跟蹤 139
7.4.1 Canny邊緣檢測 139
7.4.2 使用Hough變換進行直線檢測 140
7.4.3 對圓形進行檢測 143
7.5 關(guān)鍵點檢測器和描述符 144
7.5.1 加速段測試特征功能檢測器 144
7.5.2 面向FAST和旋轉(zhuǎn)BRIEF的特征檢測 145
7.5.3 加速強特征檢測和匹配 147
7.6 使用Haar級聯(lián)的對象檢測 150
7.6.1 使用Haar級聯(lián)進行人臉檢測 151
7.6.2 使用Haar級聯(lián)進行眼睛檢測 153
7.7 使用背景減法進行對象跟蹤 155
7.7.1 高斯混合法 155
7.7.2 GMG背景減法 157
7.8 總結(jié) 159
7.9 測驗題 160
第8章 Jetson TX1開發(fā)套件 161
8.1 技術(shù)要求 161
8.2 Jetson TX1簡介 161
8.2.1 Jetson TX1的重要特性 163
8.2.2 Jetson TX1的應(yīng)用 163
8.3 在Jetson TX1上安裝JetPack 163
8.3.1 安裝的基本要求 164
8.3.2 安裝的步驟 164
8.4 總結(jié) 171
8.5 測驗題 171
第9章 在Jetson TX1上部署計算機視覺應(yīng)用程序 172
9.1 技術(shù)要求 172
9.2 Jetson TX1 GPU的設(shè)備屬性 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上的高級應(yīng)用程序 185
9.6.1 使用Haar級聯(lián)進行人臉檢測 185
9.6.2 使用Haar級聯(lián)進行眼睛檢測 187
9.6.3 高斯混合背景減法 188
9.7 在Jetson TX1上使用Python和OpenCV實現(xiàn)計算機視覺 191
9.8 總結(jié) 192
9.9 測驗題 193
第10章 PyCUDA入門 194
10.1 技術(shù)要求 194
10.2 Python編程語言簡介 194
10.3 PyCUDA模塊簡介 195
10.4 在Windows上安裝PyCUDA 196
10.5 在Ubuntu上安裝PyCUDA 199
10.6 總結(jié) 201
10.7 測驗題 201
第11章 使用PyCUDA 202
11.1 技術(shù)要求 202
11.2 編寫第一個PyCUDA程序 203
11.3 從PyCUDA程序訪問GPU設(shè)備屬性 204
11.4 在PyCUDA中執(zhí)行線程和塊 206
11.5 PyCUDA中的基本編程概念 206
11.5.1 在PyCUDA中兩個數(shù)字相加 207
11.5.2 使用driver類簡化加法程序 208
11.6 使用CUDA事件測量PyCUDA程序的性能 209
11.6.1 CUDA事件 209
11.6.2 使用大型數(shù)組加法測量PyCUDA的性能 210
11.7 PyCUDA中的復(fù)雜程序 212
11.7.1 對PyCUDA中的矩陣元素進行平方運算 212
11.7.2 GPU數(shù)組點乘 215
11.7.3 矩陣乘法 217
11.8 PyCUDA的高級內(nèi)核函數(shù) 219
11.8.1 PyCUDA的元素級內(nèi)核函數(shù) 219
11.8.2 歸約內(nèi)核函數(shù) 220
11.8.3 scan內(nèi)核函數(shù) 221
11.9 總結(jié) 222
11.10 測驗題 223
第12章 使用PyCUDA的基本計算機視覺應(yīng)用程序 224
12.1 技術(shù)要求 224
12.2 PyCUDA中的直方圖計算 224
12.2.1 使用原子操作 225
12.2.2 使用共享內(nèi)存 227
12.3 使用PyCUDA進行基本的計算機視覺操作 229
12.3.1 PyCUDA中的顏色空間轉(zhuǎn)換 230
12.3.2 在PyCUDA執(zhí)行圖像合成 233
12.3.3 在PyCUDA中使用gpuarray進行圖像反轉(zhuǎn) 234
12.4 總結(jié) 235
12.5 測驗題 235
測驗題答案 236