原文链接: http://www.cnblogs.com/ajian005/archive/2012/11/04/2841171.html
机器视觉开源处理库汇总
从cvchina搞到的机器视觉开源处理库汇总,转来了,很给力,还在不断更新。。。
通用库/General Library
无需多言。
Recognition And Vision Library. 线程安全。强大的IO机制。包含AAM。
很酷的一个图像处理包。整个库只有一个头文件。包含一个基于PDE的光流算法。
图像,视频IO/Image, Video IO
AR相关/Augmented Reality
基于Marker的AR库
ARToolKit的增强版。实现了更好的姿态估计算法。
实时的跟踪、SLAM、AR库。无需Marker,模板,内置传感器等。
基于特征点检测和识别的AR库。
局部不变特征/Local Invariant Feature
目前最好的Sift开源实现。同时包含了KD-tree,KD-Forest,BoW实现。
基于Naive Bayesian Bundle的特征点识别。高速,但占用内存高。
基于OpenCV的Sift实现。
目标检测/Object Detection
又一个AdaBoost实现。训练速度快。
基于Centrist和Linear SVM的快速行人检测。
(近似)最近邻/ANN
目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。
另外一个近似最近邻库。
SLAM & SFM
- SceneLib [LGPL]
monoSLAM库。由Androw Davison开发。
图像分割/Segmentation
使用Simple Linear Iterative Clustering产生指定数目,近似均匀分布的Super Pixel。
目标跟踪/Tracking
基于Online Random Forest的目标跟踪算法。
Kanade-Lucas-Tracker
Online Boosting Trackers
直线检测/Line Detection
基于联通域连接的直线检测算法。
- LSD [GPL]
基于梯度的,局部直线段检测算子。
指纹/Finger Print
- pHash [GPL]
基于感知的多媒体文件Hash算法。(提取,对比图像、视频、音频的指纹)
视觉显著性/Visual Salience
Ming-Ming Cheng的视觉显著性算法。
FFT/DWT
- FFTW [GPL]
最快,最好的开源FFT。
- FFTReal [WTFPL]
轻量级的FFT实现。许可证是亮点。
音频处理/Audio processing
- STK [Free]
音频处理,音频合成。
- libsndfile [LGPL]
音频文件IO。
- libsamplerate [GPL ]
音频重采样。
小波变换
快速小波变换(FWT)
BRIEF: Binary Robust Independent Elementary Feature 一个很好的局部特征描述子,里面有FAST corner + BRIEF实现特征点匹配的DEMO:http://cvlab.epfl.ch/software/brief/
http://code.google.com/p/javacv
Java打包的OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput, and ARToolKitPlus库。可以放在Android上用~
libHIK,HIK SVM,计算HIK SVM跟Centrist的Lib。http://c2inet.sce.ntu.edu.sg/Jianxin/projects/libHIK/libHIK.htm
一组视觉显著性检测代码的链接:http://cg.cs.tsinghua.edu.cn/people/~cmm/saliency/
介绍n款计算机视觉库/人脸识别开源库/软件
OpenCV是Intel®开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用某些外部库。 OpenCV 对非商业... |
faceservice.cgi 是一个用来进行人脸识别的 CGI 程序, 你可以通过上传图像,然后该程序即告诉你人脸的大概坐标位置。faceservice是采用 OpenCV 库进行开发的。 |
OpenCVDotNet 是一个 .NET 对 OpenCV 包的封装。 |
jViolajones是人脸检测算法Viola-Jones的一个Java实现,并能够加载OpenCV XML文件。 示例代码:http://www.oschina.net/code/snippet_12_2033 |
JavaCV 提供了在计算机视觉领域的封装库,包括:OpenCV、ARToolKitPlus、libdc1394 2.x 、PGR FlyCapture和FFmpeg。此外,该工具可以很容易地使用Java平台的功能。 JavaCV还带有硬件加速的全屏幕图像显示(CanvasFrame),易于在多个内核中执行并行代码(并... |
QMotion 是一个采用 OpenCV 开发的运动检测程序,基于 QT。 |
OpenVSS - 开放平台的视频监控系统 - 是一个系统级别的视频监控软件视频分析框架(VAF)的视频分析与检索和播放服务,记录和索引技术。它被设计成插件式的支持多摄像头平台,多分析仪模块(OpenCV的集成),以及多核心架构。 |
手势识别,用OpenCV实现 |
提供人脸检测、识别与检测特定人脸的功能,示例代码 cvReleaseImage( &gray ); cvReleaseMemStorage(&storage); cvReleaseHaarClassifierCascade(&cascade);... |
Active Shape Model Library (ASMLibrary©) SDK, 用OpenCV开发,用于人脸检测与跟踪。 |
ECV 是 lua 的计算机视觉开发库(目前只提供linux支持) |
OpenCVSharp 是一个OpenCV的.Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,有详细的使用样例供参考。 |
基于OpenCV构建的图像处理和3D视觉库。 示例代码: ImageSequenceReaderFactory factory; ImageSequenceReader* reader = factory.pathRegex("c:/a/im_%03d.jpg", 0, 20); //ImageSequenceReader* reader = factory.avi("a.avi"); if (reader == NULL) { ... |
基于 QT 的面向对象的多平台计算机视觉库。可以方便的创建图形化应用程序,算法库主要从 OpenCV,GSL,CGAL,IPP,Octave 等高性能库借鉴而来。 |
cvBlob 是计算机视觉应用中在二值图像里寻找连通域的库.能够执行连通域分析与特征提取. |
GShow is a real-time image/video processing filter development kit. It successfully integrates DirectX11 with DirectShow framework. So it has the following features: GShow 是实时 图像/视频 处理滤波开发包,集成DiretX11。... |
VideoMan 提供一组视频捕获 API 。支持多种视频流同时输入(视频传输线、USB摄像头和视频文件等)。能利用 OpenGL 对输入进行处理,方便的与 OpenCV,CUDA 等集成开发计算机视觉系统。 |
Pattern Recognition project(开放模式识别项目),致力于开发出一套包含图像处理、计算机视觉、自然语言处理、模式识别、机器学习和相关领域算法的函数库。 |
OpenCV的Python封装,主要特性包括: 提供与OpenCV 2.x中最新的C++接口极为相似的Python接口,并且包括C++中不包括的C接口 提供对OpenCV 2.x中所有主要部件的绑定:CxCORE (almost complete), CxFLANN (complete), Cv (complete), CvAux (C++ part almost... |
计算机视觉快速开发平台,提供测试框架,使开发者可以专注于算法研究。 |
对函数库v412的封装,从网络摄像头等硬件获得图像数据,支持YUYV裸数据输出和BGR24的OpenCV IplImage输出 |
OpenVIDIA projects implement computer vision algorithms running on on graphics hardware such as single or multiple graphics processing units(GPUs) using OpenGL, Cg and CUDA-C. Some samples will soon support OpenCL and Direct Compute API'... |
实现了基于混合高斯模型的点集配准算法,该算法描述在论文: A Robust Algorithm for Point Set Registration Using Mixture of Gaussians, Bing Jian and Baba C. Vemuri. ,实现了C++/Matlab/Python接口... |
Recognition And Vision Library (RAVL) 是一个通用 C++ 库,包含计算机视觉、模式识别等模块。 |
LTI-Lib 是一个包含图像处理和计算机视觉常用算法和数据结构的面向对象库,提供 Windows 下的 VC 版本和 Linux 下的 gcc 版本,主要包含以下几方面内容: 1、线性代数 2、聚类分析 3、图像处理 4、可视化和绘图工具 |
OpenCV优化 opencv-dsp-acceleration
优化了OpenCV库在DSP上的速度。 |
C++计算机视觉库 Integrating Vision Toolkit
Integrating Vision Toolkit (IVT) 是一个强大而迅速的C++计算机视觉库,拥有易用的接口和面向对象的架构,并且含有自己的一套跨平台GUI组件,另外可以选择集成OpenCV |
The Epipolar Geometry Toolbox (EGT) is a toolbox designed for Matlab (by Mathworks Inc.). EGT provides a wide set of functions to approach computer vision and robotics problems with single and multiple views, and with different vision se... |
ImageNets 是对OpenCV 的扩展,提供对机器人视觉算法方面友好的支持,使用Nokia的QT编写界面。 |
视频处理、计算机视觉和计算机图形学的快速开发库。 |
Matlab 的计算机视觉包,包含用于观察结果的 GUI 组件,貌似也停止开发了,拿来做学习用挺不错的。 |
SIP 是 Scilab(一种免费的类Matlab编程环境)的图像处理和计算机视觉库。SIP 可以读写 JPEG/PNG/BMP 格式的图片。具备图像滤波、分割、边缘检测、形态学处理和形状分析等功能。 |
几种图像处理类库的比较
作者:王先荣
原文;http://www.cnblogs.com/xrwang/archive/2010/01/26/TheComparisonOfImageProcessingLibraries.html
前言
近期需要做一些图像处理方面的学习和研究,首要任务就是选择一套合适的图像处理类库。目前较知名且功能完善的图像处理类库有OpenCv、EmguCv、AForge.net等等。本文将从许可协议、下载、安装、文档资料、易用性、性能等方面对这些类库进行比较,然后给出选择建议,当然也包括我自己的选择。
许可协议
类库 | 许可协议 | 许可协议网址 | 大致介绍 |
OpenCv | BSD | www.opensource.org/licenses/bsd-license.html | 在保留原来BSD协议声明的前提下,随便怎么用都行 |
EmguCv | GPL v3 | http://www.gnu.org/licenses/gpl-3.0.txt | 你的产品必须也使用GPL协议,开源且免费 |
商业授权 | http://www.emgu.com/wiki/files/CommercialLicense.txt | 给钱之后可以用于闭源的商业产品 | |
AForge.net | LGPL v3 | http://www.gnu.org/licenses/lgpl.html | 如果不修改类库源代码,引用该类库的产品可以闭源和(或)收费 |
以上三种类库都可以用于开发商业产品,但是EmguCv需要付费;因为我只是用来学习和研究,所以这些许可协议对我无所谓。不过鉴于我们身在中国,如果脸皮厚点,去他丫的许可协议。
下载
可以很方便的下载到这些类库,下载地址分别为:
类库 | 下载地址 |
OpenCv | http://sourceforge.net/projects/opencvlibrary/files/ |
EmguCv | http://www.emgu.com/wiki/index.php/Download_And_Installation |
AForge.net | http://www.aforgenet.com/framework/downloads.html |
安装
这些类库的安装都比较简单,直接运行安装程序,并点“下一步”即可完成。但是OpenCv在安装完之后还需要一些额外的处理才能在VS2008里面使用,在http://www.opencv.org.cn有一篇名为《VC2008 Express下安装OpenCv 2.0》的文章专门介绍了如何安装OpenCv。
类库 | 安装难易度 | 备注 |
OpenCv | 比较容易 | VC下使用需要重新编译 |
EmguCv | 容易 |
|
AForge.net | 容易 |
|
相信看这篇文章的人都不会被安装困扰。
文档资料
类库 | 总体评价 | 书籍 | 网站 | 文档 | 示例 | 社区 | 备注 |
OpenCv | 中等 | 中英文 | 中英文 | 中英文 | 较多 | 中文论坛 | 有中文资料但不完整 |
EmguCv | 少 | 无 | 英文 | 英文 | 少 | 英文论坛 | 论坛人气很差 |
AForge.net | 少 | 无 | 英文 | 英文 | 少 | 英文论坛 | 论坛人气很差 |
OpenCv有一些中文资料,另外两种的资料全是英文的;不过EmguCv建立在OpenCv的基础上,大部分OpenCv的资料可以用于EmguCv;而AForge.net是原生的.net类库,对GDI+有很多扩展,一些MSDN的资料可以借鉴。如果在查词典的基础上还看不懂英文文档,基本上可以放弃使用这些类库了。
易用性
易用性这玩意,主观意志和个人能力对它影响很大,下面是我的看法:
类库 | 易用性 | 备注 |
OpenCv | 比较差 | OpenCv大多数功能都以C风格函数形式提供,少部分功能以C++类提供。注意:2.0版将更多的功能封装成类了。 |
EmguCv | 比较好 | 将OpenCv的绝大部分功能都包装成了.net类、结构或者枚举。不过文档不全,还是得对照OpenCv的文档去看才行。 |
AForge.net | 好 | 纯.net类库,用起来很方便。 |
最近几年一直用的是C# ,把C和C++忘记得差不多了,况且本来C/C++我就不太熟,所以对OpenCv的看法恐怕有偏见。
视觉相关网站
这段时间因为项目的需要,我一直在折腾计算机视觉,尤其是双目立体视觉,代码、论文、工具箱等……占用了我几乎90%的工作时间,还在一点点地摸索,但进度实在不敢恭维,稍后我会把情况作个总结。
今天的主要任务就是和大家分享一些鄙人收藏的认为相当研究价值的网页:
Oxford大牛:Andrew Zisserman,http://www.robots.ox.ac.uk/~vgg/hzbook/code/,此人主要研究多幅图像的几何学,该网站提供了部分工具,相当实用,还有例子
西澳大利亚大学的Peter Kovesi:http://www.csse.uwa.edu.au/~pk/research/matlabfns/,提供了一些基本的matlab工具,主要内容涉及Computer Vision, Image Processing
CMU:http://www.cs.cmu.edu/afs/cs/project/cil/ftp/html/vision.html,该网站是我的最爱,尤其后面这个地址http://www.cs.cmu.edu/afs/cs/project/cil/ftp/html/v-groups.html,在这里提供了世界各地机构、大学在Computer Vision所涉及各领域的研究情况,包括Image Processing, Machine Vision,我后来也是通过它连接到了很多国外的网站
Cambridge:http://mi.eng.cam.ac.uk/milab.html,这是剑桥大学的机器智能实验室,里面有三个小组,Computer Vision & Robotics, Machine Intelligence, Speech,目前为止,Computer Vision & Robotics的一些研究成果对我日后的帮助可能会比较大,所以在此提及
大量计算机视觉方面的原版电子书:http://homepages.inf.ed.ac.uk/rbf/CVonline/books.htm,我今天先下了本Zisserman的书,呵呵,国外的原版书,虽然都是比较老的,但是对于基础的理解学习还是很有帮助的,至于目前的研究现状只能通过论文或者一些研究小组的网站
stanford:http://ai.stanford.edu/~asaxena/reconstruction3d/,这个网站是Andrew N.G老师和一个印度阿三的博士一起维护的,主要对于单张照片的三维重建,尤其他有个网页make3d.stanford.edu可以让你自己上传你的照片,通过网站来重建三维模型,这个网站对于刚开始接触Computer Vision的我来说,如获至宝,但有个致命问题就是make3d已经无法注册,我也多次给Andrew和印度阿三email,至今未回,郁闷,要是有这个网站的帐号,那还是相当爽的,不知道是不是由于他们的邮箱把我的email当成垃圾邮件过滤,哎,但这个stanford网站的贡献主要是代码,有很多computer vision的基础工具,貌似40M左右,全都是基于matlab的
caltech:http://www.vision.caltech.edu/bouguetj/calib_doc/,这是我们Computer Vision老师课件上的连接,主要是用于摄像机标定的工具集,当然也有涉及对标定图像三维重建的前期处理过程
JP Tarel:http://perso.lcpc.fr/tarel.jean-philippe/,这是他的个人主页,也是目前为止我发的email中,唯一一个给我回信的老外,因为我需要重建练习的正是他的图片集,我读过他的论文,但没有涉及代码的内容,再加上又是94年以前的论文,很多相关的引文,我都无法下载,在我的再三追问下,Tarel教授只告诉我,你可以按照我的那篇论文对足球进行重建,可是...你知道吗,你有很多图像处理的引文都下不了了,我只知道你通过那篇文章做了图像的预处理,根本不知道具体过程,当然我有幸找到过一篇90左右的论文,讲的是region-based segmentation,可是这文章里所有引文又是找不到的....悲剧的人生
开源软件网站:www.sourceforge.net
最后就是我们工大的Computer Vision大牛:sychen.com,我们Computer Vision课的老师,谦虚、低调,很有学者风范
总结:目前为止,我的个人感觉就是国外学者的论文包括刊登的资料大部分都是对原理进行的说明,并不是很在意具体的代码实现的讲解,而我却过分的关注于代码的实现,忽视Computer Vision的原理,国外学者对与自己相关领域的研究现状了解相当充分,对自己的工作进度更新也很勤快,很多好的网站我并没有完全列出来,在这里只是提了主要的几个,在这方面,我们国内的研究氛围有所不及,当然我选择的一些网站可能更多的是个人小组的研究介绍,不像一些专门从事领域研究的机构,会有那么多的权威资料,国外的网站有个很好的地方,就是有很多的免费资源,免费的matlab或者openCV工具集,免费的论文下载,课件下载等等,在这方面国内对于研究资源的共享,做得又有所差距,同样,国外的研究工具很多样,主要是matlab,一些发布的demo都使用C++写的,不过今天看到一个西班牙的研究机构(university of las palmas)用了个XMW的软件平台来实现图片的三维重建,data用的是人脸,而且国外的很多源代码基本上是在linux平台下完成的,对于我来说又是不方便,哎,可能要考虑装VM Ware了,不然双系统太累.....
目前,Computer Vision是全世界范围内自动化、计算机、数学领域的研究热点,综合性高,应用于医疗、军事、民用等等领域,其中有突出成绩的还是一下几所学校(个人见解):Cambridge(UK), Oxford(UK), CMU(US),Stanford(US),MIT(US),U.C.Berkeley(US),而UK的两所老牌高校,他们的实际应用领域丝毫不逊于stanford和CMU....
世界就是这样,当你不断的接触,不断的扩展你所能够及的边际就会发现自己越来越无知,还有很多很多不知道,发现还有很多自己都想不到但却已经实现的东西.....
革命远未成功,同志仍须努力,在CV的道路上前进.......