OpenCV3.0較OpenCV2.x改變
1)C風格的API完全被C++的API代替,代碼更加簡潔,不易出錯。C++的API將更加簡潔。
2)所有的算法都將繼承自cv::Algorithm接口。
3)大型的模塊將拆分爲小的模塊。
OpenCV應用層語言
Python、Java、C
OpenCV操作系統:
Windows、Linux、MacOSx、IOS、Android、WinRTx
硬件
GPU、x86、x64、ARM、MIPS
OpenCV中線程
Concurrency:Windows
GCD:MacOSx、IOS
TBB:Windows、MacOSx、Linux、Android、(WinRT)
OpenCV編程中使用的加速手段
針對GPU的加速:CUDA、OpenCL
針對x86和x64加速:OpenCL、SSE/AUX
針對ARM加速:NEON
1)TBB:並行編程,針對多線程,多核處理器。TBB主要功能:並行算法,任務調度,並行容器,同步原語,內存分配器。
2)IPP:(高度手工優化代碼),多核並行,用於優化OpenCV性能。
3)OpenMP:實現跨平臺共享內存式多線程併發。
4)SSE加速:主要SEE指令進行加速。
5)CUAD(統一計算架構):針對GPU編程實行並行計算。
OpenCL:架構平臺編碼的程序框架,異構平臺可由CPU、GPU、DSP、FPGA或其他類型的處理器與硬件加速器組成。
OpenCV各模塊總結:
1)opencv_core模塊:程序庫的核心功能,特別是基本的數據結構和算法函數;(OpenCV基本數據結構,動態數據結構,繪圖函數,數組操作相關函數,輔助功能與系統函數和宏,與OpenGL的互操作等)
2)opencv_imgproc模塊:圖像處理函數;(線性和非線性的圖像濾波,圖像幾何變換,其它圖像轉換,直方圖相關,結構分析和形狀描述,運動分析和對象跟蹤,特徵檢測,目標檢測等)
3)opencv_highgui模塊:圖像、視頻讀寫函數和部分用戶界面函數;(高層GUI圖形用戶界面,包含媒體的I/O輸入輸出,視頻捕捉,圖像和視頻的編解碼,圖形交互界面接口等)
4)opencv_features2d模塊:特徵點檢測器、描述子以及特徵點匹配框架;(特徵檢測和描述子,特徵檢測器通用接口,描述符提取器通用接口,描述符匹配器通用接口,通用描述符匹配器通用接口,關鍵點繪製函數和匹配功能繪製函數等)。
5)opencv_calib3d模塊:相機標定、雙視角幾何估計及立體函數;(相機校準和三維重建相關內容,如多視角幾何算法,單個立體攝像頭標定,物體姿態估計,立體相似性算法,3D信息重建等)
6)opencv_video模塊:運動估計、特徵跟蹤及前景提取函數和類;(視頻分析組件,該模塊包括運動估計,背景分離,對象跟蹤等視頻處理相關內容)
7)opencv_objdetect模塊:目標檢測函數;(Cascade Classification級聯分類器和Latent SVM等)
8)openc_ml模塊:機器學習函數;(基本統計模型和分類算法)
9)opencv_flann模塊:計算幾何算法;(高維的近似近鄰快速搜索算法庫,主要是快速近似最近鄰搜索和聚類)
10)opencv_gpu模塊:GPU加速代碼等。
11)open_photo模塊:圖像修復和去噪模塊。
OpenCV機器學習庫中主要實現算法如下:
1)一般貝葉斯分類器(Normal Bayes Classifier):CvNormalBayesClassifier
2)K近鄰分類(K-nearest Neighbor Classifier): CvKNearest
3)支持向量機(Support Vector Machine):CvSVM
4)期望最大化(Expection Maximization): EM
5)決策樹(Decision Tree):CvDTree
6)隨機森林(Random Treess Classifier):CvForestTree
7)超隨機樹分類器(Extremely randomized trees Classifier): CvERTrees
8)Boost分類器(Boosted tree Classifier): CvBoost
9)梯度下降Boost分類器(Gradient Boosted Trees):CvGBTrees
10)神經網絡(Artificial Neural Networks): CvANN_MLP
其中每種算法實現的主要函數如下:
1)數據處理:主要是獲得訓練樣本和測試樣本數據等
2)分類器初始參數設置:主要是設置分類器訓練前的初始參數信息等
3)訓練:主要是利用1)中訓練樣本和2)中的相關參數,進行迭代訓練,直到得到滿足條件的分類器
4)預測,分類:主要是利用3)中訓練得到的分類器對樣本進行分類預測等。
5)分類器讀寫保存:主要完成從文件節點中讀取分類器相關信息以及將訓練得到的分類器相關信息保存到文件中等。
OpenCV中CUAD加速模塊介紹
1)cuda:CUDA-加速的計算機視覺算法,包括數據結構cuda:GpuMat,基於cuda的相機標定及三維重建等。
2)cudaarithm:CUDA-加速的矩陣運算模塊。
3)cudabgsegm:CUDA-加速的背景分割模塊,通常用於視頻監控。
4)cudacodec:CUDA-加速的視頻編碼與解碼。
5)cudafeatures2d:CUDA-加速的特徵檢測與描述模塊,與features2d/模塊功能類似。
6)cudafilters/:CUDA-加速的圖像濾波。
7)cudaimgproc/:CUDA-加速的圖像處理算法,包括直方圖計算,霍夫變換等。
8)cudaoptflow/:CUDA-加速的光流檢測算法。
9)cudastereo/:CUDA-加速的立體視覺匹配算法。
10)cudawarping/:CUDA-加速的快速圖像變換,如透視變換、旋轉、改變尺寸等。
11)cudaev/:CUDA核心功能,類似core/模塊中的基礎算法。
OpenCV3.1增加功能
1)opencv_contrib/ccalib 全方位攝像機標定和立體三維重建
2)opencv_contrib/sfm module 從運動信息中恢復三維場景結構
3)opencv_contrib/dpm module 改進的變形部件爲基礎的模型
4)opencv_contrib/tracking module 採用核心化相關濾波實時多目標跟蹤
5)opencv_contrib/text module 改進和擴展場景文字探測
6)opencv_contrib/stereo module 立體匹配的改進
7)opencv_contrib/structured_light 結構關係標定
8)opencv_contrib/aruco 運用棋盤 + ArUco庫標定攝像頭
9)opencv_contrib/dnn module 深度神經網絡框架的通用接口的實現
10)opencv_contrib/calib3d and opencv_contrib/ximgproc 邊緣意思過濾的最新進展,改進SGBM立體算法
11)opencv_contrib/xobjdetect 改進的ICF檢測,WaldBoost實現
12)opencv_contrib/tracking module 多目標TLD算法跟蹤
13)opencv_contrib/cnn_3dobj 3D姿態估計使用細胞神經網絡