基于GPU加速的計(jì)算機(jī)視覺編程:使用OpenCV和CUDA實(shí)時(shí)處理復(fù)雜圖像數(shù)據(jù)
定 價(jià):79 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[美] 巴烏米克·維迪婭(Bhaumik Vaidya)
- 出版時(shí)間:2020/4/1
- ISBN:9787111651475
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP302.7
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書提供了OpenCV與CUDA集成以實(shí)現(xiàn)實(shí)際應(yīng)用的詳細(xì)概述。首先介紹使用CUDA進(jìn)行GPU編程的基礎(chǔ)知識。然后,通過一些實(shí)際的例子講解如何利用GPU和CUDA實(shí)現(xiàn)OpenCV加速。一旦掌握了核心概念,讀者將熟悉如何在NVIDIA Jetson TX1上部署OpenCV應(yīng)用程序,該應(yīng)用程序在計(jì)算機(jī)視覺和深度學(xué)習(xí)應(yīng)用程序中非常流行。本書的*后幾章解釋了PyCUDA,這是一個(gè)Python庫,它利用CUDA和GPU的強(qiáng)大功能來加速。在本書的*后,讀者將通過本書的實(shí)踐方法增強(qiáng)計(jì)算機(jī)視覺應(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 一個(gè)基本的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 測驗(yàn)題 11
第2章 使用CUDA C進(jìn)行并行編程 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中的向量運(yùn)算 24
2.5.1 兩個(gè)向量加法程序 24
2.5.2 對比CPU代碼和GPU代碼的延遲 27
2.5.3 對向量的每個(gè)元素進(jìn)行平方 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 測驗(yàn)題 31
第3章 線程、同步和存儲(chǔ)器 32
3.1 技術(shù)要求 32
3.2 線程 33
3.3 存儲(chǔ)器架構(gòu) 36
3.3.1 全局內(nèi)存 37
3.3.2 本地內(nèi)存和寄存器堆 38
3.3.3 高速緩沖存儲(chǔ)器 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 向量點(diǎn)乘和矩陣乘法實(shí)例 50
3.7.1 向量點(diǎn)乘 50
3.7.2 矩陣乘法 54
3.8 總結(jié) 58
3.9 測驗(yàn)題 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中的錯(cuò)誤處理 64
4.3.1 從代碼中進(jìn)行錯(cuò)誤處理 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é)運(yùn)算效率 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進(jìn)行圖像處理 75
4.8 總結(jié) 80
4.9 測驗(yàn)題 81
第5章 支持CUDA的OpenCV入門 82
5.1 技術(shù)要求 82
5.2 圖像處理和計(jì)算機(jī)視覺簡介 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 處理存儲(chǔ)在計(jì)算機(jī)上的視頻 100
5.6.2 處理從網(wǎng)絡(luò)攝像機(jī)讀取的視頻 101
5.6.3 將視頻保存到磁盤 102
5.7 使用OpenCV CUDA模塊的基本計(jì)算機(jī)視覺應(yīng)用程序 104
5.7.1 OpenCV CUDA模塊簡介 104
5.7.2 對圖像的算術(shù)和邏輯運(yùn)算 104
5.7.3 更改圖像的顏色空間 108
5.7.4 圖像閾值處理 109
5.8 OpenCV應(yīng)用程序使用和不使用CUDA支持的性能比較 110
5.9 總結(jié) 113
5.10 測驗(yàn)題 114
第6章 使用OpenCV和CUDA進(jìn)行基本的計(jì)算機(jī)視覺操作 115
6.1 技術(shù)要求 115
6.2 訪問圖像的各個(gè)像素強(qiáng)度 116
6.3 OpenCV中直方圖的計(jì)算和均衡 117
6.4 圖像的幾何變換 120
6.4.1 圖像大小調(diào)整 120
6.4.2 圖像平移與旋轉(zhuǎn) 121
6.5 對圖像進(jìn)行濾波操作 122
6.5.1 對圖像的卷積運(yùn)算 122
6.5.2 對圖像進(jìn)行低通濾波操作 123
6.5.3 對圖像進(jìn)行高通濾波操作 128
6.6 圖像的形態(tài)學(xué)操作 131
6.7 總結(jié) 134
6.8 測驗(yàn)題 134
第7章 使用OpenCV和CUDA進(jìn)行對象檢測和跟蹤 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變換進(jìn)行直線檢測 140
7.4.3 對圓形進(jìn)行檢測 143
7.5 關(guān)鍵點(diǎn)檢測器和描述符 144
7.5.1 加速段測試特征功能檢測器 144
7.5.2 面向FAST和旋轉(zhuǎn)BRIEF的特征檢測 145
7.5.3 加速強(qiáng)特征檢測和匹配 147
7.6 使用Haar級聯(lián)的對象檢測 150
7.6.1 使用Haar級聯(lián)進(jìn)行人臉檢測 151
7.6.2 使用Haar級聯(lián)進(jìn)行眼睛檢測 153
7.7 使用背景減法進(jìn)行對象跟蹤 155
7.7.1 高斯混合法 155
7.7.2 GMG背景減法 157
7.8 總結(jié) 159
7.9 測驗(yàn)題 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 測驗(yàn)題 171
第9章 在Jetson TX1上部署計(jì)算機(jī)視覺應(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的攝像機(jī)接口 184
9.6 Jetson TX1上的高級應(yīng)用程序 185
9.6.1 使用Haar級聯(lián)進(jìn)行人臉檢測 185
9.6.2 使用Haar級聯(lián)進(jìn)行眼睛檢測 187
9.6.3 高斯混合背景減法 188
9.7 在Jetson TX1上使用Python和OpenCV實(shí)現(xiàn)計(jì)算機(jī)視覺 191
9.8 總結(jié) 192
9.9 測驗(yàn)題 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 測驗(yàn)題 201
第11章 使用PyCUDA 202
11.1 技術(shù)要求 202
11.2 編寫第一個(gè)PyCUDA程序 203
11.3 從PyCUDA程序訪問GPU設(shè)備屬性 204
11.4 在PyCUDA中執(zhí)行線程和塊 206
11.5 PyCUDA中的基本編程概念 206
11.5.1 在PyCUDA中兩個(gè)數(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中的矩陣元素進(jìn)行平方運(yùn)算 212
11.7.2 GPU數(shù)組點(diǎn)乘 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 測驗(yàn)題 223
第12章 使用PyCUDA的基本計(jì)算機(jī)視覺應(yīng)用程序 224
12.1 技術(shù)要求 224
12.2 PyCUDA中的直方圖計(jì)算 224
12.2.1 使用原子操作 225
12.2.2 使用共享內(nèi)存 227
12.3 使用PyCUDA進(jìn)行基本的計(jì)算機(jī)視覺操作 229
12.3.1 PyCUDA中的顏色空間轉(zhuǎn)換 230
12.3.2 在PyCUDA執(zhí)行圖像合成 233
12.3.3 在PyCUDA中使用gpuarray進(jìn)行圖像反轉(zhuǎn) 234
12.4 總結(jié) 235
12.5 測驗(yàn)題 235
測驗(yàn)題答案 236