譯者序 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
· · · · · · (
收起)