【OpenCV3.0.0】各个modules的功能介绍(包含Contribute库)

最近一直在做opencv3.0的总结,想比较全面的了解一下3.0版本的功能,以及与2.x版本的区别,但是因为对2.x理解也不是很深,所以不能拿出来对比。

在此,我只是介绍一下3.0版本中各个modules的大致包含的功能,此外还有一些contribute库的程序,由于精力有限,没有跑完所有的程序,搜易还处于待完善的阶段。。。


【adas】:Contribute库

作用未知

【aruco】:Contribute库

作用未知

【bgsegm】:Contribute库

前景与背景的分析,提取目标等方法。

【bioinspired】:Contribute库

作用未知

【calib3d】:官方库

相机标定以及三维图像的重建。相机标定用于去除相机自身的缺陷导致的画面的畸变,还原真实的场景,确保计算的准确性。三维重建通常用在双目视觉(立体视觉),即两个标定后的摄像头观察同一场景,通过计算两幅画面中的相关性来计算像素的视觉深度。

【ccalib】:Contribute库

作用未知

【contrib_world】:Contribute库

为了丰富框架,里面没有什么实际的东西(起码目前没有)

【core】:官方库

核心功能模块,定义了基本的数据结构,包括最重要的Mat 类,XML的读写,OpenGL三维渲染等。

【cudaarithm / cudabgsegm / cudacodec / cudafeatures2d / cudafilters / cudaimgproc / cudalegacy / cudaobjdetect / cudaoptflow / cudastereo / cudawarping / cudev】:

cuda模块。没有使用,所以就没有测试

【cvv】:Contribute库

用来调试opencv程序的,被命名为visual debug,调试的信息会在命令行显示,也就是DOS窗口,此外需要CMake2.8以上

【datasets】:Contribute库

opencv程序的数据集模块,提供了一种数据集的数据类型,这种类型有很多的变形,比如(AR_hmdb,FR_adienceObj,GR_chalearn。。。)


使用方法:

Ptr dataset = AR_hmdb::create();

Ptr dataset = FR_adience::create();

Ptr dataset = GR_chalearn::create();

注:记得在使用前加上                             “  using namespace cv::datasets;   ”

【dnn】:Contribute库,需要在cmake的时候讲build_dnn 勾选上。

通过训练 *GoogLeNet* 网络,来实现图像的分类,实例的网址是:

https://github.com/ludv1x/opencv_contrib/blob/master/modules/dnn/samples/caffe_googlenet.cpp

如果你需要这部分的内容,需要读一下:

tutorial_dnn_googlenet.markdown文件

【dpm】:Contribute库,全称是 Cascade object detection with deformable part models:可变模型的级联目标检测(不知道翻译的对不对 *!#_#!*)

也就是说这部分是用来做目标检测的,想要用这种方法,你需要知道模型的路径(data中的inriaperson.xml文件)。使用方法如下:

// load model from model_path
cv::Ptr detector = DPMDetector::create(vector(1, model_path));


// read image from image_path
Mat image = imread(image_path);

// detection
vector ds;
detector->detect(image, ds);

【face】:Contribute库,最近新增加的人脸识别程序

The currently available algorithms are:

-   Eigenfaces (see createEigenFaceRecognizer)                                                                 -- 特征脸
-   Fisherfaces (see createFisherFaceRecognizer)                                                               -- Fisher脸
-   Local Binary Patterns Histograms (see createLBPHFaceRecognizer)                        -- 本地二进制直方图

效果还没有测,喜欢的朋友可以试一下

【features2d】:官方库

包含2D特征值检测的框架。包含各种特征值检测器以及描述符,比如,AKAZE、FAST,KAZE,MSER,ORB,brisk,各类特征拥有统一的算法接口,因此在不影响程序逻辑的情况吓可以进行替换。

【flann】:官方库

用于在多维空间内聚类及搜索的近似算法,做图像检索的开发者对他不会陌生的。

【hal】:官方库

-- 数值计算方法:如arctan2(y,x),invSqrt,sqrt,exp,log

--矩阵运算方法:如LU分解,Cholesky分解(也就是下三角分解)

--滤波函数方法:normHamming,normL2Sqr_,normL1_

【highgui】:官方库

高级图形界面及多媒体文件读写,包括用户界面、QT、对图像及视频文件的读写操作。

【imgcodecs】:官方库

图像的编解码信息,比如png,bmp,pgm,tiff等。与highgui协同工作,具体功能不祥。

【imgproc】:官方库,全称Image Processing

图像处理的库,包括图像滤波,几何图像变换,直方图计算,形状描述子,形态学操作等。图像处理是计算机视觉的重要工具。

【line_descriptor】:Contribute库

线段描述符,也就是LSD算法(Line Segment Detector)。

- 用 *BinaryDescriptor* 提取图像中的线段保存到 *KeyLine* 中

- 然后计算这些KeyLine的描述符

- 最后用 *BynaryDescriptorMatcher* 来匹配两个图中的线段。

opencv3.0 提供了一个*LSDDetector* 类来做线段检测,基本用法如下:

// create a pointer to an LSDDetector object
Ptr lsd = LSDDetector::createLSDDetector();

// compute lines
std::vector keylines;
lsd->detect( imageMat, keylines, mask );

【matlab】:Contribute库

提供了一些工具,能够让opencv的算法生成为matlab的算法。需要在cmake的时候添加matlab的路径

cmake -DMATLAB_ROOT_DIR =

【ml】:官方库

提供了机器学习的多种方法:ANN(人工神经网络),MLP(多层感知器),boost(),EM(最大期望),

GBT(通用二叉查找树),kdtree(k-d树),knearest(k近邻),lr(逻辑回归),nbayes(朴素贝叶斯),rtrees(随机森林),svm(支持向量机)

- ANN(人工神经网络)

- MLP(多层感知器)

- boost()

- EM(最大期望)

- GBT(通用二叉查找树)

- knearest(k近邻)

- kdtree(k-d树)

- lr(逻辑回归)

- nbayes(朴素贝叶斯)

- rtrees(随机森林)

- svm(支持向量机)

【objdetect】:官方库

实现了一些目标的检测功能,比如边缘特性,线特性,中心点特性。有haar人脸检测,hog检测的例子

【optflow】:Contribute库

用于跟踪点的光流算法,实现了4中光流算法 farneback、simpleflow、tvl1 、 deepflow。实例中还有算法的评估

【photo】:官方库

计算摄影学,包括图像修补(inpaint),去噪,HDR成像,非真实性渲染(npr)等。

【python】:官方库

opencv的Python例程。

【reg】:Contribute库

多种映射操作:affine,shift,projec,gradshift,gradeuclid,gradsimilar,gradaffine,gradproj,pyramid,实例包括:

-   Shift();
-   Euclidean();
-   Similarity();
-   Affine();
-   Projective();

【rgbd】:Contribute库

RGB深度处理模块

【saliency】:Contribute库

Saliency API,类似于人的焦距问题的相关算法,即人可以关注感兴趣的东西和无视旁边的东西。

现在实现的Saliency算法有:

-  SPECTRAL_RESIDUAL

-  BING

-  BinWangApr2014

【shape】:官方库

可以计算外形的各种距离,比如EMD(class computeShapeDistance_EMD),SCD(class computeShapeDistance_Chi)

【stereo】:Contribute库

用不同的描述符体现立体相关性。

-  Very fast SAD-based (Sum-of-Absolute-Diffrences) stereo correspondence algorithm.

【stitching】:官方库

图像的拼接的库,可用于制作全景图。warpers, seam_finders,blenders

【structured_light】:Contribute库

里面引入了点云的概念。

- capture_pattern:如何使用 *GrayCodePattern* 类来获得  gray_code_pattern  数据集。

- decode_pattern:解码之前的  gray_code_pattern  数据集获得点云。

【superres】:官方库

全称是Super Resolution ,用于增强图像的分辨率。快速并且具有鲁邦性的 *Duality Based TV-L1* 光流算法,应用superres类。

【surface_matching】:Contribute库

用来做3D视觉中,物体的匹配,特征描述符与匹配

【text】:Contribute库

包括了字母的检测与识别,主要是应用在真实场景中的字母检测,识别的部分用的是开源的OCR(open-source Tesseract OCR),所以如果想用这部分的程序,需要先安装open-source Tesseract OCR才可以。

【tracking】:Contribute库

长期的目标跟踪算法API。多种跟踪算法,比如MIL,BOOSTING,MedianFlow,TLD,KCF。

【ts】:官方库

用途未知。应该是不常用。

【video】:官方库

- 实现了用混合高斯模型做背景的剪出,*BackgroundSubtractorMOG2*类。使用方法:

//initial model

BackgroundSubtractorMOG2 bg_model;


//For each new image the model is updates using:
bg_model(img, fgmask);

- 实现了基于KNN的背景剪出,(有阴影检测)*BackgroundSubtractorKNNImpl* 类。

- 摄像头偏移测量。MeanShift &CamShift

- 图像对齐算法 *ECC algorithm*

- 卡尔曼滤波(kalman)

- tv1光流

【videoio】:官方库

对视频编解码的一些函数。

【videostab】:官方库

全称是Video Stabilization ,用于解决相机移动拍摄时视频不够稳定的问题。

【viz】:官方库

三维可视化模块。可以认为这个模块实现了一个简单的三维可视化引擎,有各种UI控件和键盘、鼠标交互方式。底层实现基于VTK这个第三方库。

【xfeatures2d】:Contribute库

包含了2部分,实验性的2D图像特征算法和nonfree算法。

其中包括:brief,freak,lacth,lucid,sift,surf等算法

【ximgproc】:Contribute库

扩展的图像处理算法。其中包括:

- 结构森林 ( Structured Forests )

- 域转换滤波 ( Domain Transform Filter )

- 引导滤波器 ( Guided Filter )

- 自适应流形滤波器 ( Adaptive Manifold Filter )

- 双边缘滤波 ( Joint Bilateral Filter )

- 超像素 ( Superpixels )

【xobjdetect】:Contribute库

积分频道特征检测器框架。acffeature, icfdetector,waldboost

【xphoto】:第三方库

增加了一些照片的处理算法 。

- 颜色平衡  (Color balance)

- 去噪 (Denoising)

- 修补(Inpainting)

【最后附上一个第三方的说明】

1. **opencv_adas**: Advanced Driver Assistance Systems module with Forward Collision Warning.


2. **opencv_bgsegm**: Improved Adaptive Background Mixture Model for Real-time Tracking / Visual Tracking of Human Visitors under Variable-Lighting Conditions.

3. **opencv_bioinspired**: Biologically inspired vision models and derivated tools.

4. **opencv_ ccalib**: Custom Calibration Pattern for 3D reconstruction.

5. **opencv_cvv**: GUI for Interactive Visual Debugging of Computer Vision Programs.

6. **opencv_datasets**: Interface for interfacing with existing computer vision databases.

7. **opencv_datasettools**: Tools for working with different datasets.

8. **opencv_face**: Recently added face recognition software which is not yet stabalized.

9. **opencv_latentsvm**: Implementation of the LatentSVM detector algorithm.

10. **opencv_line_descriptor**: Binary descriptors for lines extracted from an image.

11. **opencv_matlab**: OpenCV Matlab Code Generator.

12. **opencv_optflow**: Optical Flow Algorithms for tracking points.

13. **opencv_reg**: Image Registration module.

14. **opencv_rgbd**: RGB-Depth Processing module.

15. **opencv_saliency**: Saliency API, understanding where humans focus given a scene.

16. **opencv_surface_matching**: Surface Matching Algorithm Through 3D Features.

17. **opencv_text**: Scene Text Detection and Recognition in Natural Scene Images.

18. **opencv_tracking**: Long-term optical tracking API.

19. **opencv_xfeatures2d**: Extra 2D Features Framework containing experimental and non-free 2D feature algorithms.

20. **opencv_ximgproc**: Extended Image Processing: Structured Forests / Domain Transform Filter / Guided Filter / Adaptive Manifold Filter / Joint Bilateral Filter / Superpixels.
 
21. **opencv_xobjdetect**: Integral Channel Features Detector Framework.

22. **opencv_xphoto**: Additional photo processing algorithms: Color balance / Denoising / Inpainting.

23. **opencv_stereo**: Stereo Correspondence done with different descriptors: Census / CS-Census / MCT / BRIEF / MV / RT.















你可能感兴趣的:(工作日志)