OpenCV 4.0 + Python 機器學習與電腦視覺實戰

[印]梅努阿·吉沃吉安 等著 黃進青 譯

  • OpenCV 4.0 + Python 機器學習與電腦視覺實戰-preview-1
  • OpenCV 4.0 + Python 機器學習與電腦視覺實戰-preview-2
  • OpenCV 4.0 + Python 機器學習與電腦視覺實戰-preview-3
OpenCV 4.0 + Python 機器學習與電腦視覺實戰-preview-1

買這商品的人也買了...

商品描述

《OpenCV 4.0+Python機器學習與電腦視覺實戰》詳細闡述了機器學習與電腦視覺相關的基本解決方案,主要包括濾鏡、深度傳感器和手勢識別、通過特徵匹配和透視變換查找對象、使用運動恢復結構重建3D場景、在OpenCV中使用計算攝影、跟蹤視覺上的顯著對象、識別交通標志、識別面部表情、對象分類和定位、檢測和跟蹤對象等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。

目錄大綱

目    錄

第1章  濾鏡 1

1.1  準備工作 2

1.2  規劃應用程序 2

1.3  創建黑白鉛筆素描 3

1.3.1  瞭解使用減淡和加深技術的方法 4

1.3.2  使用二維捲積實現高斯模糊 6

1.3.3  應用鉛筆素描變換效果 7

1.3.4  使用高斯模糊的優化版本 9

1.4  生成暖調和冷調濾鏡 10

1.4.1  通過曲線平移使用顏色操作 11

1.4.2  使用查找表實現曲線濾鏡 11

1.4.3  設計暖調和冷調效果 12

1.5  創建圖像卡通化效果 15

1.5.1  使用雙邊濾鏡 16

1.5.2  檢測並強調突出的邊緣 17

1.5.3  組合顏色和輪廓以創建卡通效果 19

1.6  綜合演練 20

1.6.1  運行應用程序 20

1.6.2  映射GUI基類 21

1.6.3  瞭解GUI構造函數 22

1.6.4  瞭解基本的GUI佈局 23

1.6.5  處理視頻流 24

1.6.6  創建自定義濾鏡佈局 25

1.7  小結 27

1.8  許可 28

第2章  深度傳感器和手勢識別 29

2.1  準備工作 30

2.2  規劃應用程序 30

2.3  設置應用程序 31

2.3.1  訪問Kinect 3D傳感器 31

2.3.2  使用與OpenNI兼容的傳感器 32

2.3.3  運行應用程序和主函數例程 34

2.4  實時跟蹤手勢 35

2.5  瞭解手部區域分割 36

2.5.1  找到圖像中心區域最突出的深度 36

2.5.2  應用形態學閉合操作平滑蒙版 38

2.5.3  在分割蒙版中查找連接的組件 39

2.6  執行手形分析 41

2.6.1  確定分割之後手部區域的輪廓 41

2.6.2  查找輪廓區域的凸包 41

2.6.3  尋找凸包的凸缺陷 42

2.7  執行手勢識別 43

2.7.1  區分凸缺陷的不同原因 44

2.7.2  根據伸出的手指數對手勢進行分類 45

2.8  小結 47

第3章  通過特徵匹配和透視變換查找對象 49

3.1  準備工作 50

3.2  列出應用程序執行的任務 50

3.3  規劃應用程序 52

3.4  設置應用程序 52

3.4.1  運行應用程序 52

3.4.2  顯示結果 53

3.5  瞭解處理流程 54

3.6  學習特徵提取 56

3.6.1  特徵檢測 56

3.6.2  使用SURF檢測圖像中的特徵 57

3.6.3  使用SURF獲取特徵描述子 58

3.7  瞭解特徵匹配 59

3.7.1  使用FLANN算法匹配圖像特徵 60

3.7.2  執行比率檢驗以消除異常值 60

3.7.3  可視化特徵匹配 61

3.7.4  映射單應性估計 64

3.7.5  扭曲圖像 67

3.8  瞭解特徵跟蹤 69

3.9  理解早期異常值檢測和剔除 69

3.10  研究算法原理 72

3.11  小結 74

3.12  許可 75

第4章  使用運動恢復結構重建3D場景 77

4.1  準備工作 77

4.2  規劃應用程序 78

4.3  瞭解相機校準知識 81

4.3.1  瞭解針孔相機模型 81

4.3.2  估算相機內參 83

4.3.3  定義相機校準圖形用戶界面 84

4.3.4  初始化相機校準算法 84

4.3.5  收集圖像和對象點 86

4.3.6  尋找相機矩陣 87

4.4  設置應用程序 88

4.4.1  理解main例程函數 89

4.4.2  實現SceneReconstruction3D類 90

4.5  從一對圖像估計相機的運動 92

4.5.1  使用豐富特徵描述子應用點匹配 93

4.5.2  使用光流進行點匹配 94

4.5.3  查找相機矩陣 97

4.5.4  應用圖像校正 99

4.6  重建場景 101

4.7  瞭解3D點雲可視化 102

4.8  瞭解運動恢復結構 105

4.9  小結 105

第5章  在OpenCV中使用計算攝影 107

5.1  準備工作 107

5.2  規劃應用程序 107

5.3  瞭解8位問題 108

5.3.1  瞭解RAW圖像 110

5.3.2  使用伽瑪校正 111

5.4  瞭解高動態範圍成像 115

5.4.1  探索改變曝光度的方法 118

5.4.2  快門速度 119

5.4.3  光圈 119

5.4.4  ISO感光度 120

5.4.5  使用多重曝光圖像生成HDR圖像 120

5.4.6  從圖像中提取曝光強度值 122

5.4.7  估計相機響應函數 123

5.4.8  使用OpenCV編寫HDR腳本 124

5.4.9  顯示HDR圖像 125

5.5  瞭解全景拼接 126

5.5.1  編寫腳本參數並過濾圖像 126

5.5.2  計算相對位置和最終圖片尺寸 128

5.5.3  查找相機參數 128

5.5.4  為全景圖創建畫布 129

5.5.5  將圖像合並在一起 129

5.5.6  改善全景拼接 131

5.6  小結 131

5.7  延伸閱讀 131

5.8  許可 132

第6章  跟蹤視覺上的顯著對象 133

6.1  準備工作 133

6.2  瞭解視覺顯著性 134

6.3  規劃應用程序 135

6.4  設置應用程序 136

6.4.1  實現main函數 136

6.4.2  瞭解MultiObjectTracker類 137

6.5  映射視覺顯著性 138

6.5.1  瞭解傅里葉分析 140

6.5.2  瞭解自然場景統計 142

6.5.3  使用頻譜殘差法生成顯著圖 145

6.5.4  檢測場景中的原型對象 148

6.6  瞭解均值漂移跟蹤 149

6.7  自動跟蹤足球場上的所有球員 151

6.8  瞭解OpenCV跟蹤API 154

6.9  綜合演練 157

6.10  小結 158

6.11  數據集許可 158

第7章  識別交通標志 159

7.1  準備工作 160

7.2  規劃應用程序 160

7.3  監督學習概念簡介 161

7.3.1  訓練過程 161

7.3.2  測試過程 163

7.4  探索GTSRB數據集 164

7.5  解析數據集 166

7.6  瞭解數據集特徵提取 169

7.6.1  理解常見的預處理 170

7.6.2  瞭解灰度特徵 171

7.6.3  理解色彩空間 172

7.6.4  使用SURF描述子 172

7.6.5  映射HOG描述子 173

7.7  關於SVM 175

7.7.1  使用SVM進行多類分類 176

7.7.2  訓練SVM 177

7.7.3  測試SVM 178

7.7.4  準確率 179

7.7.5  混淆矩陣 180

7.7.6  精確率 181

7.7.7  召回率 183

7.8  綜合演練 185

7.9  使用神經網絡改善結果 187

7.10  小結 188

7.11  數據集許可 189

第8章  識別面部表情 191

8.1  準備工作 191

8.2  規劃應用程序 192

8.3  瞭解人臉檢測 194

8.3.1  瞭解基於Haar的級聯分類器 194

8.3.2  理解預訓練的級聯分類器 195

8.3.3  使用預先訓練的級聯分類器 196

8.3.4  理解FaceDetector類 198

8.3.5  在灰度圖像中檢測臉部 199

8.3.6  預處理檢測到的臉部 200

8.3.7  檢測眼睛部位 201

8.3.8  變換臉部 202

8.4  收集數據 203

8.4.1  收集訓練數據集 203

8.4.2  運行應用程序 204

8.4.3  實現數據收集器的圖形用戶界面 205

8.4.4  擴充基本佈局 206

8.4.5  處理當前幀 208

8.4.6  存儲數據 208

8.5  理解面部表情識別 210

8.5.1  處理數據集 210

8.5.2  瞭解PCA 211

8.5.3  理解MLP 213

8.5.4  理解感知器 213

8.5.5  瞭解深度架構 215

8.5.6  製作用於面部表情識別的MLP 217

8.5.7  訓練MLP 219

8.5.8  測試MLP 220

8.5.9  運行腳本 220

8.6  綜合演練 221

8.7  小結 224

8.8  參考資料 224

8.9  許可 225

第9章  對象分類和定位 227

9.1  準備工作 228

9.2  規劃應用程序 228

9.3  準備推理腳本 228

9.4  準備數據集 230

9.4.1  下載並解析數據集 230

9.4.2  創建一個TensorFlow數據集 233

9.5  使用捲積神經網絡分類 236

9.5.1  理解捲積神經網絡 236

9.5.2  瞭解遷移學習 237

9.5.3  準備寵物類型和品種的分類器 239

9.5.4  訓練和評估分類器網絡 240

9.6  使用捲積神經網絡進行定位 242

9.6.1  準備定位器模型 243

9.6.2  理解反向傳播算法 245

9.6.3  訓練模型 247

9.7  推理的實際應用 248

9.8  小結 249

9.9  數據集許可 249

第10章  檢測和跟蹤對象 251

10.1  準備工作 252

10.2  規劃應用程序 252

10.3  準備主腳本 252

10.4  使用SSD模型檢測對象 254

10.5  使用其他檢測器 257

10.6  瞭解對象檢測器 260

10.6.1  單對象檢測器 260

10.6.2  滑動窗口方法 260

10.6.3  單遍檢測器 261

10.6.4  瞭解交並比 263

10.6.5  訓練SSD和YOLO式網絡 264

10.7  跟蹤檢測到的對象 265

10.7.1  實現SORT跟蹤器 267

10.7.2  理解卡爾曼濾波器 267

10.7.3  結合使用邊界框跟蹤器和卡爾曼濾波器 271

10.7.4  將邊界框轉換為觀察值 272

10.7.5  實現卡爾曼濾波器 273

10.7.6  將檢測結果與跟蹤器關聯在一起 276

10.7.7  定義跟蹤器的類 277

10.8  查看程序的實際應用效果 279

10.9  小結 280

附錄A  應用程序性能分析和加速 281

A.1  用Numba加速 282

A.2  通過CPU加速 284

A.3  理解Numba、CUDA和GPU加速 286

附錄B  設置Docker容器 289

B.1  定義Dockerfile 289

B.2  使用GPU 293