計算機視覺40例從入門到深度學習(OpenCV-Python)( 簡體 字) | |
作者:李立宗 | 類別:1. -> 教材 -> 數位影像處理 2. -> 程式設計 -> Python |
出版社:電子工業出版社 | ![]() 詢問書籍請說出此書號! 缺書 NT售價: 645 元 |
出版日:6/1/2022 | |
頁數:540 | |
光碟數:0 | |
站長推薦: ![]() ![]() ![]() ![]() ![]() | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121436857 | 【不接受訂購】 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第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 本書以OpenCV-Python(the Python API for OpenCV)為工具,以案例為載體,系統介紹了計算機視覺從入門到深度學習的相關知識點。本書從基礎知識、基礎案例、機器學習、深度學習和人臉識別5個方面對計算機視覺的相關知識點進行了全面、系統、深入的介紹。書中共介紹了40余個經典的計算機視覺案例,其中既有圖像加密、指紋識別、車牌識別、缺陷檢測等基于傳統技術的計算機視覺經典案例,也有圖像分類、目標檢測、語義分割、實例分割、風格遷移、姿勢識別等基于深度學習的計算機視覺案例,還有表情識別、駕駛員疲勞檢測、易容術、性別和年齡識別等基于人臉識別的計算機視覺案例。在介紹具體的算法原理時,本書盡量使用通俗易懂的語言和貼近生活的示例來說明問題,避免使用復雜抽象的公式來介紹。本書適合計算機視覺領域的初學者閱讀,也適合學生、教師、專業技術人員、圖像處理愛好者閱讀。
計算機視覺是目前最熱門的研究領域之一,OpenCV-Python集成了OpenCV C++ API和Python的最佳特性,成為計算機視覺領域內極具影響力和實用性的工具。
近年來,我深耕計算機視覺領域,從事課程研發工作,在該領域,尤其是OpenCV-Python方面積累了一些經驗,因此經常會收到與該領域相關的咨詢,內容涵蓋圖像處理的基礎知識、OpenCV工具的使用、深度學習的具體應用等多個方面。為了更好地把積累的知識以圖文的形式分享給大家,我對該領域的知識點進行了系統的整理,編寫了本書。希望本書的內容能夠為大家在計算機視覺方面的學習提供幫助。 本書的主要內容 本書對計算機視覺涉及的知識點進行了全面、系統、深入的梳理,旨在幫助讀者快速掌握該領域的核心知識點。全書包含5個部分,40余個計算機視覺經典案例,主要內容如下。 第1部分 基礎知識導讀篇 本部分對計算機視覺領域的基礎內容進行了系統的梳理,以幫助初學者快速入門。本部分主要包含以下三方面內容: ? 數字圖像基礎(第1章) ? Python基礎(第2章) ? OpenCV基礎(第3章) 第2部分 基礎案例篇 本部分主要為使用OpenCV-Python實現圖像處理的經典案例,主要包含: ? 圖像加密與解密(第4章) ? 數字水印(第5章) ? 物體計數(第6章) ? 缺陷檢測(第7章) ? 手勢識別(第8章) ? 答題卡識別(第9章) ? 隱身術(第10章) ? 以圖搜圖(第11章) ? 手寫數字識別(第12章) ? 車牌識別(第13章) ? 指紋識別(第14章) 上述案例采用傳統的圖像處理方法解決問題,以幫助讀者理解如下知識點: ? 圖像預處理方法(閾值處理、形態學操作、圖像邊緣檢測、濾波處理) ? 色彩空間處理 ? 邏輯運算(按位與、按位異或) ? ROI(感興趣區域) ? 計算圖像輪廓 ? 特征值提取、比對 ? 距離計算 第3部分 機器學習篇 本部分主要對機器學習基礎知識及K近鄰模塊、SVM算法、K均值聚類模塊進行了具體介紹。在上述基礎上,使用OpenCV機器學習模塊實現了下述案例: ? KNN實現字符(手寫數字、英文字母)識別(第16章) ? 求解數獨圖像(第17章) ? SVM數字識別(第18章) ? 行人檢測(第19章) ? K均值聚類實現藝術畫(第20章) 第4部分 深度學習篇 本部分介紹了深度學習基礎知識、卷積神經網絡基礎知識、深度學習案例。在第24章介紹了使用DNN模塊實現計算機視覺的經典案例,主要有: ? 圖像分類 ? 目標檢測(YOLO算法、SSD算法) ? 語義分割 ? 實例分割 ? 風格遷移 ? 姿勢識別 第5部分 人臉識別篇 本部分對人臉識別的相關基礎、dlib庫、人臉識別的典型應用進行了深入介紹。主要案例如下: ? 人臉檢測(第25章) ? 人臉識別(第26章) ? 勾勒五官輪廓(第27章) ? 人臉對齊(第27章) ? 表情識別(第28章) ? 駕駛員疲勞檢測(第28章) ? 易容術(第28章) ? 年齡和性別識別(第28章) 本書的主要特點 本書在內容的安排、組織、設計上遵循了如下思路。 1.適合入門 第1部分對計算機視覺的基礎知識進行了全面的梳理,主要包括數字圖像基礎、Python基礎、OpenCV基礎。重點對計算機視覺中用到的基礎理論、算法、圖像處理,Python程序設計基礎語法,OpenCV核心函數進行了介紹。該部分內容能夠幫助沒有計算機視覺基礎的讀者快速入門,也能夠幫助有一定計算機視覺基礎的讀者對核心知識點進行快速梳理。 2.以案例為載體 按照知識點安排的教材的特點在于“相互獨立,完全窮盡”(Mutually Exclusive Collectively Exhaustive,MECE),能夠保證介紹的知識點“不重疊,不遺漏”。但是,跟著教材學習可能會存在如下問題:“了解了每一個知識點,但在遇到問題時感覺無從下手,不知道該運用哪些知識點來解決當前問題。” 知識點是一個個小石子,解決問題的思路是能夠把許多石子串起來的繩子。繩子可以賦予石子更大的意義和價值,解決問題能夠讓知識點得以運用。 本書通過案例來介紹相關知識點,盡量避免將案例作為一個孤立的問題來看待,而是更多地考慮知識點之間的銜接、組合、應用場景等。例如,本書采用了多種不同的方式來實現手寫數字識別,以幫助大家更好地從不同角度理解和分析問題。本書從案例實戰的角度展開,將案例作為一根線,把所有知識點串起來,以幫助讀者理解知識點間的關系并將它們組合運用,提高讀者對知識點的理解和運用能力。 3.輕量級實現 盡量以簡單明了的方式實現一個問題,以更好地幫讀者搞清問題的核心和算法。用最簡化的方式實現最小可用系統(Minimum Viable Product,MVP),用最低的成本和代價快速驗證和迭代一個算法,這樣更有利于理解問題、解決問題。在成本最低的前提下,利用現有的資源,以最快的速度行動起來才是最關鍵的。所以,本書盡可能簡化每一個案例,盡量將代碼控制在100行左右。希望通過這樣的設計,讓讀者更好地關注算法核心。 4.專注算法 抽象可以幫助讀者屏蔽無關細節,讓讀者能夠專注于工具的使用,極大地提高工作效率。OpenCV及很多其他庫提供的函數都是封裝好的,只需要直接把輸入傳遞給函數,函數就能夠返回需要的結果。因此,本書沒有對函數做過多介紹,而是將重點放在了實現案例所使用的核心算法上。 5.圖解 一圖勝千言。在描述關系、流程等一些相對比較復雜的知識點時,單純使用語言描述,讀者一時可能會難以理解。在面對復雜的知識點時,有經驗的學習者會根據已有知識點繪制一幅與該知識點有關的圖,從而進一步理解該知識點。因為圖像能夠更加清晰、直觀、細致地將知識點的全局、結構、關系、流程、脈絡等信息體現出來。本書配有大量精心制作的圖表,希望能夠更好地幫助讀者理解相關知識點。 6.案例全面 本書涉及的40余個案例都是相關領域中比較典型的,涵蓋了計算機視覺領域的核心應用和關鍵知識點。案例主要包括四個方面。 ? 基礎部分:圖像安全(圖像加密、圖像關鍵部位打碼、隱身術)、圖像識別(答題卡識別、手勢識別、車牌識別、指紋識別、手寫數字識別)、物體計數、圖像檢索、缺陷檢測等。 ? 機器學習:KNN實現字符(手寫數字、英文字母)識別、數獨圖像求解(KNN)、SVM手寫數字識別、行人檢測、藝術畫(K均值聚類)等。 ? 深度學習:圖像分類、目標檢測(YOLO算法、SSD算法)、語義分割、實例分割、風格遷移、姿勢識別等。 ? 人臉識別相關:人臉檢測、人臉識別、勾勒五官輪廓、人臉對齊、表情識別、駕駛員疲勞檢測、易容術、性別和年齡識別等。 感謝 首先,感謝我的導師高鐵杠教授,感謝高教授帶我走進了計算機視覺這一領域,以及一直以來給我的幫助。 感謝OpenCV開源庫的所有貢獻者讓OpenCV變得更好,讓計算機視覺領域更加精彩。 感謝本書的責任編輯符隆美老師,她積極促成本書的出版,修正了書中的技術性錯誤,并對本書內容進行了潤色。感謝本書的封面設計老師為本書設計了精美的封面。感謝為本書出版而付出辛苦工作的每一位老師。 感謝合作單位天津撥云咨詢服務有限公司為本書提供資源支持。 本書出版受天津職業技術師范大學教材支持項目(項目編號:XJJW1970)支持。 感謝家人的愛,我愛你們。 互動方式 限于本人水平,書中存在很多不足之處,歡迎大家提出寶貴的意見和建議,也非常歡迎大家跟我交流關于OpenCV的各種問題,我的郵箱。 另外,大家也可以關注我的微信公眾號“計算機視覺之光”(微信號cvlight)獲取關于本書的配套資源。 李立宗 2022年5月27日于天津 |