內容簡介

電腦視覺是在圖像處理的基礎上發展起來的新興學科。OpenCV是一個開源的電腦視覺庫,是英特爾公司資助的兩大圖像處理利器之一。它為圖像處理、模式識別、三維重建、物體跟蹤、機器學習和線性代數提供了各種各樣的演算法。

《學習OpenCV3(中文版)》由OpenCV發起人所寫,站在一線開發人員的角度用通俗易懂的語言解釋了OpenCV的緣起和電腦視覺基礎結構,演示了如何用OpenCV和現有的自由代碼為各種各樣的機器進行編程,這些都有助於讀者迅速入門並漸入佳境,興趣盎然地深入探索電腦視覺領域。

《學習OpenCV3(中文版)》可作為信息處理、電腦、機器人、人工智慧、遙感圖像處理、認知神經科學等有關專業的高年級學生或研究生的教學用書,也可供相關領域的研究工作者參考。






 

作者介紹

安德里安凱勒(Adrian Kaehler)博士,企業家,矽谷深度學習小組創始人。他的工作重心包括機器學習、統計建模、電腦視覺和機器人。他就職於斯坦福大學人工智慧實驗室,他 還是該校斯坦利團隊的成員,該團隊在美國國家航空與航天局(NASA)主辦的機器人挑戰賽中勝出,贏得了200萬美元的大獎。加里?布拉德斯基(Gary Bradski)博士是Arraiy.ai的架構師(CTO),他曾經就職於好幾個創業公司,擔任過斯坦福大學電腦系人工智慧實驗室的顧問教授。他是 OpenCV庫的創始人,是一名享有廣泛聲譽的演講人、開源社區的積极參与者。
 

目錄

譯者序 xvii
前言 xxi
第1章 概述 1
什麼是OpenCV 1
OpenCV怎麼用 2
什麼是電腦視覺 3
OpenCV的起源 6
OpenCV的結構 7
使用IPP來加速OpenCV 8
誰擁有OpenCV 9
下載和安裝OpenCV 9
安裝 9
從Git獲取最新的OpenCV 12
更多的OpenCV文檔 13
提供的文檔 13
線上文檔和維琪資源 13
OpenCV貢獻庫 15
下載和編譯Contributed模組 16
可攜性 16
小結 17
練習 17
第2章 OpenCV初探 19
標頭檔 19
資源 20
第一個程式:顯示圖片 21
第二個程式:視頻 23
跳轉 24
簡單的變換 28
不那麼簡單的變換 30
從攝像頭中讀取 32
寫入AVI文件 33
小結 34
練習 35
第3章 瞭解OpenCV的資料類型 37
基礎知識 37
OpenCV的資料類型 37
基礎類型概述 38
深入瞭解基礎類型 39
輔助對象 46
工具函數 53
範本結構 60
小結 61
練習 61
第4章 圖像和大型陣列類型 63
動態可變的存儲 63
cv::Mat類N維稠密陣列 64
創建一個陣列 65
獨立獲取陣列元素 69
陣列反覆運算器NAryMatIterator 72
通過塊訪問陣列元素 74
矩陣運算式:代數和cv::Mat 75
飽和轉換 77
陣列還可以做很多事情 78
稀疏數據類cv::SparesMat 79
訪問稀疏陣列中的元素 79
稀疏陣列中的特有函數 82
為大型陣列準備的範本結構 83
小結 85
練習 86
第5章 矩陣操作 87
矩陣還可以做更多事情 87
cv::abs() 90
cv::add() 91
cv::addWeighted() 92
cv::bitwise_and() 94
cv::bitwise_not() 94
cv::bitwise_or() 94
cv::bitwise_xor() 95
cv::calcCovarMatrix() 95
cv::cartToPolar() 97
cv::checkRange() 97
cv::compare() 98
cv::completeSymm() 99
cv::convertScaleAbs() 99
cv::countNonZero() 100
cv::Mat cv::cvarrToMat() 100
cv::dct() 101
cv::dft() 102
cv::cvtColor() 103
cv::determinant() 106
cv::divide() 106
cv::eigen() 106
cv::exp() 107
cv::extractImageCOI() 107
cv::flip() 108
cv::gemm() 108
cv::getConvertElem()和cv::getConvertScaleElem() 109
cv::idct() 110
cv::inRange() 110
cv::insertImageCOI() 111
cv::invert() 111
cv::log() 112
cv::LUT() 112
cv::Mahalanobis() 113
cv::max() 114
cv::mean() 115
cv::meanStdDev() 116
cv::merge() 116
cv::min() 116
cv::minMaxIdx() 117
cv::minMaxLoc() 118
cv::mixChannels() 119
cv::mulSpectrums() 120
cv::multiply() 121
cv::mulTransposed() 121
cv::norm() 122
cv::normalize() 123
cv::perspectiveTransform() 125
cv::phase() 125
cv::polarToCart() 126
cv::pow() 126
cv::randu() 127
cv::randn() 127
cv::repeat() 129
cv::scaleAdd() 129
cv::setIdentity() 130
cv::solve() 130
cv::solveCubic() 131
cv::solvePoly() 132
cv::sort() 132
cv::sortIdx() 133
cv::split() 133
cv::sqrt() 134
cv::subtract() 135
cv::sum() 135
cv::trace() 135
cv::transform() 136
cv::transpose() 136
小結 137
練習 137
第6章 繪圖和注釋 139
繪圖 139
藝術線條和填充多邊形 140
字體和文字 146
小結 148
練習 148
第7章 OpenCV中的函數子 151
操作物件 151
主成分分析(cv::PCA) 151
奇異值分解cv::SVD 154
亂數發生器cv::RNG 157
小結 160
練習 160
第8章 圖像、視頻與資料檔案 163
HighGUI模組:一個可移植的圖形工具包 163
影像檔的處理 164
圖像的載入與保存 165
關於codecs的一些注釋 167
圖片的編碼與解碼 168
視頻的處理 169
使用cv::VideoCapture物件讀取視頻流 169
使用cv::VideoWriter物件寫入視頻 175
資料存儲 176
cv::FileStorage的寫入 177
使用cv::FileStorage讀取文件 179
cv::FileNode 180
小結 183
練習 183
第9章 跨平臺和Windows系統 187
基於Windows開發 187
HighGUI原生圖形使用者介面 188
通過Qt後端工作 199
綜合OpenCV和全功能GUI工具包 209
小結 222
練習 222
第10章 濾波與卷積 225
概覽 225
預備知識 225
濾波、核和卷積 225
邊界外推和邊界處理 227
閾值化操作 230
Otsu演算法 233
自我調整閾值 233
平滑 235
簡單模糊和方框型濾波器 236
中值濾波器 238
高斯濾波器 239
雙邊濾波器 240
導數和梯度 242
索貝爾導數 242
Scharr濾波器 244
拉普拉斯變換 245
圖像形態學 246
膨脹和腐蝕 247
通用形態學函數 250
開操作和閉操作 251
形態學梯度 254
頂帽和黑帽 256
自訂核 258
用任意線性濾波器做卷積 259
用cv::filter2D()進行卷積 259
通過cv::sepFilter2D使用可分核 260
生成卷積核 260
小結 262
練習 262
第11章 常見的圖像變換 267
概覽 267
拉伸、收縮、扭曲和旋轉 267
均勻調整 268
圖像金字塔 269
不均勻映射 273
仿射變換 274
透視變換 279
通用變換 282
極座標映射 282
LogPolar 283
任意映射 287
圖像修復 287
圖像修復 288
去噪 289
長條圖均衡化 292
cv::equalizeHist()用於對比均衡 294
小結 295
練習 295
第12章 圖像分析 297
概覽 297
離散傅裡葉變換 297
cv::dft()離散傅裡葉變換 298
cv::idft()用於離散傅裡葉逆變換 300
cv::mulSpectrums()頻譜乘法 300
使用傅裡葉變換進行卷積 301
cv::dct()離散余弦變換 303
cv::idct()離散余弦逆變換 304
積分圖 304
cv::integral()標準求和積分 306
cv::integral()平方求和積分 306
cv::integral()傾斜求和積分 307
Canny邊緣檢測 307
cv::Canny() 309
Hough變換 309
Hough線變換 309
Hough圓變換 313
距離變換 316
cv::distanceTransform()無標記距離變換 317
cv::distanceTransform()有標記距離變換 317
分割 318
漫水填充 318
分水嶺演算法 322
Grabcuts演算法 323
Mean-Shift分割演算法 325
小結 326
練習 326
第13章 長條圖和範本 329
OpenCV中長條圖的表示 331
cv::calcHist():從資料創建長條圖 332
基本長條圖操作 334
長條圖歸一化 334
長條圖二值化 335
找出最顯著的區間 335
比較兩個長條圖 337
長條圖用法示例 339
一些複雜的長條圖方法 342
EMD距離 342
反向投影 347
範本匹配 350
方差匹配方法(cv::TM_SQDIFF) 351
歸一化方差匹配方法(cv::TM_SQDIFF_NORMED) 352
相關性匹配方法(cv::TM_CCORR) 352
歸一化的互相關匹配方法(cv::TM_CCORR_NORMED) 352
相關係數匹配方法(cv::TM_CCOEFF) 352
歸一化的相關係數匹配方法(cv::TM_CCOEFF_NORMED) 352
小結 355
練習 355
第14章 輪廓 359
輪廓查找 359
輪廓層次 360
繪製輪廓 364
輪廓實例 365
另一個輪廓實例 366
快速連通區域分析 368
深入分析輪廓 370
多邊形逼近 370
幾何及特性概括 372
幾何學測試 377
匹配輪廓與圖像 378
矩 378
再論矩 380
使用Hu矩進行匹配 383
利用形狀場景方法比較輪廓 384
小結 388
練習 389
第15章 背景提取 391
背景提取概述 391
背景提取的缺點 392
場景建模 392
圖元 393
幀間差分 396
平均背景法 397
累計均值,方差和協方差 403
更複雜的背景提取方法 410
結構 413
進行背景學習 414
存在移動的前景物體時進行背景學習 417
背景差分:檢測前景物體 418
使用碼書法的背景模型 419
關於碼書法的其他想法 419
使用連通分量進行前景清理 420
小測試 423
兩種背景方法的對比 425
OpenCV中的背景提取方法的封裝 425
cv::BackgroundSubstractor基類 426
KB方法 427
Zivkovic方法 428
小結 431
練習 431
第16章 關鍵點和描述子 433
關鍵點和跟蹤基礎 433
角點檢測 434
光流簡介 437
Lucas-Kanade稀疏光流法 438
廣義關鍵點和描述符 448
光流,跟蹤和識別 450
OpenCV一般如何處理關鍵點和描述符 451
核心關鍵點檢測方法 461
關鍵點過濾 497
匹配方法 499
結果顯示 505
小結 508
練習 508
第17章 跟蹤 511
跟蹤中的概念 511
稠密光流 512
Farneback多項式擴展演算法 513
Dual TV-L1模型 515
簡單光流演算法 519
Mean-Shift演算法和Camshift 追蹤 522
Mean-Shift演算法 522
Camshift 526
運動範本 526
估計 533
卡爾曼濾波器 534
擴展卡爾曼濾波器簡述 549
小結 551
練習 551
第18章 相機模型與標定 553
相機模型 554
射影幾何基礎 556
Rodrigues變換 558
透鏡畸變 559
標定 562
旋轉矩陣和平移向量 563
標定板 566
單應性 572
相機標定 576
矯正 587
矯正映射 587
使用cv::convertMaps()在不同表示方式之間轉換矯正映射 588
使用cv::initUndistortRectifyMap()計算矯正映射 589
使用cv::remap()矯正圖像 591
使用cv::undistort()進行矯正 591
使用cv::undistortPoints()進行稀疏矯正 591
與標定結合 592
小結 595
練習 596
第19章 投影與三維視覺 599
投影 600
仿射變換與透視變換 601
鳥瞰圖變換實例 602
三維姿態估計 606
單攝像機姿態估計 607
立體成像 609
三角測量 610
對極幾何 613
本征矩陣和基本矩陣 615
計算極線 624
立體校正 624
立體校正 628
立體匹配 638
立體校正、標定和對應的示例代碼 650
來自三維重投影的深度映射 657
來自運動的結構 659
二維與三維直線擬合 659
小結 662
練習 662
第20章 機器學習基礎 665
什麼是機器學習 665
訓練集和測試集 666
有監督學習和無監督學習 667
生成式模型和判別式模型 669
OpenCV機器學習演算法 669
機器學習在視覺中的應用 671
變數的重要性 673
診斷機器學習中的問題 674
ML庫中遺留的機器學習演算法 678
K均值 679
馬氏距離 684
小結 687
練習 687
第21章 StatModel:OpenCV中的基準學習模型 689
ML庫中的常見常式 689
訓練方法和cv::ml::TrainData的結構 691
預測 697
使用cv::StatModel的機器學習演算法 698
樸素貝葉斯分類器 699
二叉決策樹 703
Boosting方法 716
隨機森林 721
期望最大化演算法 725
K近鄰演算法 729
多層感知機 731
支持向量機 739
小結 749
練習 750
第22章 目標檢測 753
基於樹的目標檢測技術 753
級聯分類器 754
有監督學習和boosting理論 756
學習新目標 764
使用支援向量機的目標識別 772
Latent SVM用於目標識別 772
Bag of Words演算法與語義分類 775
小結 780
練習 780
第23章 OpenCV的未來 783
過去與未來 783
OpenCV 3.x 784
我們上一次預測怎麼樣? 784
未來應用 785
目前GSoC的進展 787
社區貢獻 788
OpenCV.org 789
一些關於AI的猜測 790
結語 793
附錄A 平面劃分 795
附錄B opencv_contrib模組概述 809
附錄C 標定圖案 813
參考文獻 819
網路書店 類別 折扣 價格
  1. 新書
    87
    $778