計算機視覺40例從入門到深度學習(OpenCV-Python)
內容描述
本書以OpenCV-Python(the Python API for OpenCV)為工具,以案例為載體,系統介紹了電腦視覺從入門到深度學習的相關知識點。本書從基礎知識、基礎案例、機器學習、深度學習和人臉識別5個方面對電腦視覺的相關知識點進行了全面、系統、深入的介紹。書中共介紹了40餘個經典的電腦視覺案例,其中既有圖像加密、指紋識別、車牌識別、缺陷檢測等基於傳統技術的電腦視覺經典案例,也有圖像分類、目標檢測、語義分割、實例分割、風格遷移、姿勢識別等基於深度學習的電腦視覺案例,還有表情識別、駕駛員疲勞檢測、易容術、性別和年齡識別等基於人臉識別的電腦視覺案例。在介紹具體的算法原理時,本書盡量使用通俗易懂的語言和貼近生活的示例來說明問題,避免使用復雜抽象的公式來介紹。本書適合電腦視覺領域的初學者閱讀,也適合學生、教師、專業技術人員、圖像處理愛好者閱讀。
目錄大綱
目錄
第1部分 基礎知識導讀篇
第1章 數字圖像基礎 2
1.1 圖像表示基礎 2
1.1.1 藝術與生活 2
1.1.2 數字圖像 3
1.1.3 二值圖像的處理 5
1.1.4 像素值的範圍 5
1.1.5 圖像索引 7
1.2 彩色圖像的表示 8
1.3 應用基礎 9
1.3.1 量化 10
1.3.2 特徵 10
1.3.3 距離 11
1.3.4 圖像識別 13
1.3.5 信息隱藏 15
1.4 智能圖像處理基礎 16
1.5 抽象 18
第2章 Python基礎 21
2.1 如何開始 21
2.2 基礎語法 22
2.2.1 變量的概念 22
2.2.2 變量的使用 22
2.3 數據類型 24
2.3.1 基礎類型 25
2.3.2 列表 25
2.3.3 元組 28
2.3.4 字典 29
2.4 選擇結構 31
2.5 循環結構 35
2.6 函數 39
2.6.1 什麽是函數 39
2.6.2 內置函數 41
2.6.3 自定義函數 42
2.7 模塊 44
2.7.1 標準模塊 44
2.7.2 第三方模塊 45
2.7.3 自定義模塊 46
第3章 OpenCV基礎 47
3.1 基礎 47
3.1.1 安裝OpenCV 47
3.1.2 讀取圖像 49
3.1.3 顯示圖像 50
3.1.4 保存圖像 51
3.2 圖像處理 52
3.2.1 像素處理 52
3.2.2 通道處理 57
3.2.3 調整圖像大小 60
3.3 感興趣區域 62
3.4 掩模 63
3.4.1 掩模基礎及構造 64
3.4.2 乘法運算 65
3.4.3 邏輯運算 66
3.4.4 掩模作為函數參數 68
3.5 色彩處理 69
3.5.1 色彩空間基礎 69
3.5.2 色彩空間轉換 71
3.5.3 獲取皮膚範圍 72
3.6 濾波處理 73
3.6.1 均值濾波 75
3.6.2 高斯濾波 78
3.6.3 中值濾波 82
3.7 形態學 84
3.7.1 腐蝕 85
3.7.2 膨脹 88
3.7.3 通用形態學函數 91
第2部分 基礎案例篇
第4章 圖像加密與解密 94
4.1 加密與解密原理 94
4.2 圖像整體加密與解密 96
4.3 臉部打碼及解碼 98
4.3.1 掩模方式實現 98
4.3.2 ROI方式實現 101
第5章 數字水印 105
5.1 位平面 106
5.2 數字水印原理 114
5.3 實現方法 115
5.4 具體實現 119
5.5 可視化水印 121
5.5.1 ROI 121
5.5.2 加法運算 123
5.6 擴展學習 125
5.6.1 算術運算實現數字水印 125
5.6.2 藝術字 128
第6章 物體計數 131
6.1 理論基礎 131
6.1.1 如何計算圖像的中心點 131
6.1.2 獲取圖像的中心點 133
6.1.3 按照面積篩選前景對象 135
6.2 核心程序 138
6.2.1 核函數 138
6.2.2 zip函數 140
6.2.3 閾值處理函數threshold 140
6.3 程序設計 141
6.4 實現程序 142
第7章 缺陷檢測 144
7.1 理論基礎 144
7.1.1 開運算 144
7.1.2 距離變換函數distanceTransform 146
7.1.3 最小包圍圓形 148
7.1.4 篩選標準 149
7.2 程序設計 150
7.3 實現程序 151
第8章 手勢識別 153
8.1 理論基礎 154
8.1.1 獲取凸包 154
8.1.2 凸缺陷 156
8.1.3 凸缺陷占凸包面積比 159
8.2 識別過程 161
8.2.1 識別流程 162
8.2.2 實現程序 165
8.3 擴展學習:石頭、剪刀、布的識別 167
8.3.1 形狀匹配 167
8.3.2 實現程序 170
第9章 答題卡識別 173
9.1 單道題目的識別 173
9.1.1 基本流程及原理 173
9.1.2 實現程序 178
9.2 整張答題卡識別原理 180
9.2.1 圖像預處理 180
9.2.2 答題卡處理 181
9.2.3 篩選出所有選項 189
9.2.4 將選項按照題目分組 190
9.2.5 處理每一道題目的選項 195
9.2.6 顯示結果 195
9.3 整張答題卡識別程序 195
第10章 隱身術 201
10.1 圖像的隱身術 201
10.1.1 基本原理與實現 201
10.1.2 實現程序 213
10.1.3 問題及優化方向 214
10.2 視頻隱身術 215
第11章 以圖搜圖 217
11.1 原理與實現 218
11.1.1 算法原理 218
11.1.2 感知哈希值計算方法 220
11.1.3 感知哈希值計算函數 224
11.1.4 計算距離 224
11.1.5 計算圖像庫內所有圖像的哈希值 225
11.1.6 結果顯示 226
11.2 實現程序 228
11.3 擴展學習 230
第12章 手寫數字識別 231
12.1 基本原理 232
12.2 實現細節 233
12.3 實現程序 235
12.4 擴展閱讀 236
第13章 車牌識別 238
13.1 基本原理 238
13.1.1 提取車牌 238
13.1.2 分割車牌 240
13.1.3 識別車牌 242
13.2 實現程序 246
13.3 下一步學習 249
第14章 指紋識別 250
14.1 指紋識別基本原理 251
14.2 指紋識別算法概述 251
14.2.1 描述關鍵點特徵 251
14.2.2 特徵提取 252
14.2.3 MCC匹配方法 254
14.2.4 參考資料 258
14.3 尺度不變特徵變換 258
14.3.1 尺度空間變換 260
14.3.2 關鍵點定位 266
14.3.3 通過方向描述關鍵點 267
14.3.4 顯示關鍵點 271
14.4 基於SIFT的指紋識別 273
14.4.1 距離計算 273
14.4.2 特徵匹配 274
14.4.3 算法及實現程序 277
第3部分 機器學習篇
第15章 機器學習導讀 282
15.1 機器學習是什麽 283
15.2 機器學習基礎概念 284
15.2.1 機器學習的類型 284
15.2.2 泛化能力 289
15.2.3 數據集的劃分 290
15.2.4 模型的擬合 291
15.2.5 性能度量 292
15.2.6 偏差與方差 293
15.3 OpenCV中的機器學習模塊 294
15.3.1 人工神經網絡 295
15.3.2 決策樹 296
15.3.3 EM模塊 300
15.3.4 K近鄰模塊 300
15.3.5 logistic回歸 303
15.3.6 貝葉斯分類器 305
15.3.7 支持向量機 308
15.3.8 隨機梯度下降 SVM 分類器 310
15.4 OpenCV機器學習模塊的使用 312
15.4.1 使用KNN模塊分類 312
15.4.2 使用SVM模塊分類 314
第16章 KNN實現字符識別 317
16.1 手寫數字識別 317
16.2 英文字母識別 319
第17章 求解數獨圖像 322
17.1 基本過程 322
17.2 定位數獨圖像內的單元格 323
17.3 構造KNN模型 327
17.4 識別數獨圖像內的數字 330
17.5 求解數獨 332
17.6 繪制數獨求解結果 334
17.7 實現程序 335
17.8 擴展學習 338
第18章 SVM數字識別 339
18.1 基本流程 339
18.2 傾斜校正 340
18.3 HOG特徵提取 343
18.4 數據處理 348
18.5 構造及使用SVM分類器 351
18.6 實現程序 352
18.7 參考學習 354
第19章 行人檢測 355
19.1 方向梯度直方圖特徵 355
19.2 基礎實現 358
19.2.1 基本流程 359
19.2.2 實現程序 359
19.3 函數detectMultiScale參數及優化 360
19.3.1 參數winStride 360
19.3.2 參數padding 362
19.3.3 參數scale 364
19.3.4 參數useMeanshiftGrouping 366
19.4 完整程序 369
19.5 參考學習 370
第20章 K均值聚類實現藝術畫 371
20.1 理論基礎 371
20.1.1 案例 371
20.1.2 K均值聚類的基本步驟 373
20.2 K均值聚類模塊 374
20.3 藝術畫 377
第4部分 深度學習篇
第21章 深度學習導讀 384
21.1 從感知機到人工神經網絡 384
21.1.1 感知機 384
21.1.2 激活函數 385
21.1.3 人工神經網絡 387
21.1.4 完成分類 388
21.2 人工神經網絡如何學習 389
21.3 深度學習是什麽 390
21.3.1 深度的含義 390
21.3.2 表示學習 391
21.3.3 端到端 392
21.3.4 深度學習可視化 393
21.4 激活函數的分類 394
21.4.1 sigmoid函數 394
21.4.2 tanh函數 395
21.4.3 ReLU函數 395
21.4.4 Leaky ReLU函數 396
21.4.5 ELU函數 396
21.5 損失函數 397
21.5.1 為什麽要用損失值 397
21.5.2 損失值如何起作用 398
21.5.3 均方誤差 399
21.5.4 交叉熵誤差 400
21.6 學習的技能與方法 401
21.6.1 全連接 401
21.6.2 隨機失活 402
21.6.3 One-hot編碼 403
21.6.4 學習率 403
21.6.5 正則化 404
21.6.6 mini-batch方法 405
21.6.7 超參數 406
21.7 深度學習游樂場 406
第22章 捲積神經網絡基礎 407
22.1 捲積基礎 407
22.2 捲積原理 409
22.2.1 數值捲積 409
22.2.2 圖像捲積 410
22.2.3 如何獲取捲積核 411
22.3 填充和步長 412
22.4 池化操作 413
22.5 感受野 414
22.6 預處理與初始化 416
22.6.1 擴充數據集 416
22.6.2 標準化與歸一化 417
22.6.3 網絡參數初始化 418
22.7 CNN 418 22.7.1 LeNet 418
22.7.2 AlexNet 419
22.7.3 VGG網絡 420
22.7.4 NiN 420
22.7.5 GooLeNet 421
22.7.6 殘差網絡 423
第23章 DNN模塊 426
23.1 工作流程 427
23.2 模型導入 428
23.3 圖像預處理 429
23.4 推理相關函數 438
第24章 深度學習應用實踐 440
24.1 圖像分類 441
24.1.1 圖像分類模型 441
24.1.2 實現程序 442
24.2 目標檢測 443
24.2.1 YOLO 444
24.2.2 SSD 447
24.3 圖像分割 450
24.3.1 語義分割 450
24.3.2 實例分割 453
24.4 風格遷移 458
24.5 姿勢識別 460
24.6 說明 463
第5部分 人臉識別篇
第25章 人臉檢測 466
25.1 基本原理 466
25.2 級聯分類器的使用 469
25.3 函數介紹 470
25.4 人臉檢測實現 471
25.5 表情檢測 473
第26章 人臉識別 475
26.1 人臉識別基礎 475
26.1.1 人臉識別基本流程 475
26.1.2 OpenCV人臉識別基礎 476
26.2 LBPH人臉識別 478
26.2.1 基本原理 478
26.2.2 函數介紹 482
26.2.3 案例介紹 482
26.3 EigenFaces人臉識別 484
26.3.1 基本原理 484
26.3.2 函數介紹 485
26.3.3 案例介紹 485
26.4 FisherFaces人臉識別 487
26.4.1 基本原理 487
26.4.2 函數介紹 489
26.4.3 案例介紹 489
26.5 人臉數據庫 491
第27章 dlib庫 493
27.1 定位人臉 493
27.2 繪制關鍵點 494
27.3 勾勒五官輪廓 497
27.4 人臉對齊 500
27.5 調用CNN實現人臉檢測 502
第28章 人臉識別應用案例 504
28.1 表情識別 504
28.2 駕駛員疲勞檢測 507
28.3 易容術 511
28.3.1 仿射 511
28.3.2 算法流程 512
28.3.3 實現程序 514
28.4 年齡和性別識別 517