OpenCv3.0架構的詳細解釋以及新增新功能的說明(當然OpenCv3.2.0中的很多新功能更加強大,比如CNN,DNN的實現)

馬衛飛發表於2017-05-18

/****************************************************************************************************************
檔案說明:
        OpenCv3.0中新架構以及新增功能的詳解
時間地點:
        陝西師範大學 問津樓 2017.5.16
作    者:
        九 月		
****************************************************************************************************************/
/****************************************************************************************************************
檔案說明:
        OpenCv3.0.0新特性的分析
(一)OpenCv3.0相對於OpenCv2.X系列的改變
    1)專案架構的改變
	     OpenCv3.0拋棄了整體的專案架構方式,採用了核心+外掛的架構形式
	2)新增了更多的cuda加速模組
	3)所有的演算法都將繼承自cv::Algorithm介面
(二)語言層、OS、硬體
    1)語言:支援Python、C/C++、Java
    2)OS:windows、linux、MacOS、ios、Android、WinRTx
	3)硬體:GPU、X86、ARM、MIPS
(三)OpenCv程式設計中的加速手段
    1)針對GPU的加速:CUDA、OpenCL
	2)針對x86和x64的加速:OpenCl、SSE/AUX
(四)OpenCv各模組的總結
    1)calib3d---Calibration(校準)和3D這兩個單詞的組合:這個模組主要用於:
	        1)攝像機的校準
			2)三維重建
			3)包括:基本的多視角幾何演算法、單個攝像機的標定、物體姿態估計、
			         立體相似性演算法、3D資訊的重建等
    2)core模組:核心模組功能,包含以下內容:
	        1)OpenCv基本的資料結構
			2)動態資料結構
			3)繪圖函式
			4)資料操作相關函式
			5)輔助功能與系統函式和巨集
			6)與OpenGL的互操作
	3)imgproc模組:影象處理模組,主要包括以下功能:
	        1)線性和非線性的濾波
			2)影象的幾何變換
			3)其他的影象變換
			4)直方圖相關操作
			5)結構分析與形狀分析
			6)運動分析與目標跟蹤
			7)特徵檢測
			8)目標檢測
	4)feature2d模組:包含如下功能:
	        1)特徵的檢測與描述
			2)特徵檢測器的通用介面(Feature Detectors)
			3)特徵提取器的通用介面(Descriptor Extractors)
			4)特徵描述符的通用介面(Descriptor)
			5)描述符匹配器的通用介面
			6)關鍵點繪製函式和匹配功能繪製函式
	5)flann:
	        1)快速近似最近鄰搜尋
			2)聚類
	6)highgui模組:
	        1)高層GUI圖形使用者介面
			2)媒體的輸入輸出
			3)視訊捕捉
			4)影象和視訊的編碼解碼
			5)圖形互動介面
	7)legacy:一些已經廢棄的程式碼
	8)ml:機器學習模組庫
	9)nonfree模組:
	        1)一些具有專利的演算法模組
			2)包括GPU相關的內容
	10)objdetect:目標檢測模組
	        1)級聯分類
			2)Latent SVM
	11)photo:包含影象修復和影象去燥兩部分
	12)stitching:影象拼接模組,包含如下的內容:
	        1)拼接流水線
			2)特點尋找和匹配影象
			3)估計旋轉
			4)自動校準
			5)圖片歪斜
			6)接縫估測
			7)曝光補償
			8)圖片混合
	13)superres:超分辨了技術
	14)video:視訊元件分析,該模組包括:
	        1)運動估計
			2)背景分離
			3)物件跟蹤
	15)Gpu:gpu加速程式碼模組
	16)viz:3D視覺的視覺化
	17)
(五)OpenCv機器學習庫中主要實現的演算法如下所示:
    1)一般貝葉斯分類器
	2)K近鄰分類
	3)支援向量機
	4)期望最大化
	5)決策樹
	6)隨機森林
	7)Boost分類器
	8)神經網路
	每種演算法實現的函式主要如下所示:
	1)資料處理:獲得訓練樣本的測試樣本
	2)分類器初始化引數設定
	3)訓練
	4)預測分類
	5)分類器的讀寫儲存:主要完成從檔案節點中讀取分類器相關資訊以及得到的分類器相關資訊儲存到檔案中等
(六)OpenCv中的CUDA加速模組:
    1)cuda:CUDA-加速的計算機視覺演算法,包括資料結構cuda、GpuMat、基於cuda的相機標定以及三維重建等
	2)cudaarithm:   CUDA加速的矩陣運算模組
	3)cudabgsegm:   CUDA加速的背景分割模組,通常用於視訊監控
	4)cudacodec:    CUDA加速的視訊編碼解碼
	5)cudafeature2d:CUDA-加速的特徵提取和描述模組,與feature2d模組類似
	6)cudafilters:  CUDA-加速的影象濾波演算法
	7)cudaimgproc:  CUDA-加速的影象處理演算法、包括直方圖計算、霍夫變換等
	8)cudaoptflow:  CUDA-加速的光流檢測演算法
	9)cudastereo:   CUDA-加速的立體匹配演算法
	10)cudawarping: CUDA-加速的快速影象變換,如透視變換、旋轉、改變尺寸等
	11)cudev:CUDA核心功能,類似core模組中的基礎演算法
(七)OpenCv3.0增加的功能:
    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姿態估計使用細胞神經網路			
**********************************************************************************************************/


相關文章