原文鏈接: 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的道路上前進.......