takminの書きっぱなし備忘録 @はてなブログ

主にコンピュータビジョンなど技術について、たまに自分自身のことや思いついたことなど

コンピュータビジョンのソースコード/ライブラリのまとめ

今まで自分が見つけたコンピュータビジョンの研究に役に立ちそうなフリーのライブラリやソースコードをまとめてみました。自分ではまだ使っていないものも多いので、そこはご容赦を。主にC/C++が中心です。

またライブラリ形式でない、いわゆる学会で発表した研究のコードをそのまま公開しているという人がたくさんいて、それに関しては特にメジャーなもののみ紹介しています。なにぶん僕の観測範囲は限られてますので、「このライブラリに触れないのはおかしい」、「説明が間違っている」等、ご意見大歓迎です。

定番(Standard)

OpenCV
定番中の定番です。コンピュータビジョンに関して広範なアルゴリズムが実装されています。
http://code.opencv.org/projects/OpenCV/wiki/WikiStart


Point Cloud Library
3次元点群データを扱うならこれ。Kinectの登場で一気に注目されました。
http://www.pointclouds.org/

コンピュータビジョン全般(General Computer Vision Libraries)

FastCV
Qualcomm製モバイル用CVライブラリ。ソース非公開。
https://developer.qualcomm.com/mobile-development/mobile-technologies/computer-vision-fastcv


Leptonica
TesseractOCRでも使用されている画像処理ライブラリ。OpenCVと比べて独自の方向に進化しているようです。
http://www.leptonica.com/


VLFeat
Cのコンピュータビジョンライブラリ。局所特徴量のアルゴリズムや近似最近傍探索アルゴリズムが強いみたいだが、OpenCVとの明確な違いはわからず。Matlabインターフェースを持つ。
http://www.vlfeat.org/


VIGRA
データ構造とアルゴリズムのカスタマイズ性に重点を置いたCVライブラリ。
http://hci.iwr.uni-heidelberg.de/vigra/


Machine Vision Toolbox
Matlab用CVツールボックス
http://petercorke.com/Machine_Vision_Toolbox.html


SimpleCV
Python向けCVのライブラリ。OpenCV他、数値計算ライブラリなどを、とにかく簡単に使えるようパッケージ化したもの。(2012/05/22追記)
http://simplecv.org/


VXL
広範なCVとその周辺アルゴリズムを実装したらC++ライブラリ。(2012/05/22追記)
http://vxl.sourceforge.net/


LTI-Lib
線形代数クラスタリング、識別器、画像処理、表示などのアルゴリズムを実装したC++ライブラリ(2012/05/22追記)
http://ltilib.sourceforge.net/doc/homepage/index.shtml


そしてOpenCVとVXL、LTIを比較した記事(2012/05/22追記)
http://www.aishack.in/2010/07/opencv-vs-vxl-vs-lti-performance-test/


Media Integration Standard Toolkit(MIST)
@dandelion1124さんからの情報。名古屋大学を中心に開発された、音声と画像の両方を扱えるライブラリ。(2012/05/22追記)
http://mist.murase.m.is.nagoya-u.ac.jp/trac/


OpenVIDIA
@dandelion1124さんからの情報。CVアルゴリズムGPU上に実装したライブラリ。(2012/05/22追記)
http://openvidia.sourceforge.net/index.php/OpenVIDIA


GPU4Vision
@fukushima1981さんからの情報。こちらもGPU上に実装した画像処理アルゴリズムとその論文。Matlabかまたはバイナリ提供。(2012/05/22追記)
http://gpu4vision.icg.tugraz.at/


AForge.NET Framework
@fararrow9さんからの情報。コンピュータビジョン全般のC#実装。特に拡張現実感(AR)が充実している模様。(2012/05/23追記)
http://www.aforgenet.com/

物体検出(Object Localization)

INRIA Object Localization Toolkit (OLT)
Histogram of Oriented Gradients(HOG)の実装など。
http://www.navneetdalal.com/software/


Discriminatively Trained Deformable Part Models
Deformable Part Modelの実装。Deformable Part Modelについては、こんな記事を書いた。
http://www.cs.brown.edu/~pff/latent/

一般物体認識(Object Recognition)

Caltech Large Scale Image Search Toolbox
大規模一般物体認識のためのライブラリ。MatlabPythonC++から利用可能。BoVWやHierarchical Kd-Tree、LSH、などのアルゴリズムが実装されている。(2012/06/24追記)
http://vision.caltech.edu/malaa/software/research/image-search/

物体追跡(Object Tracking)

OpenTL
物体追跡を行うためのライブラリ。特徴点抽出や、Kalman FilterやParticle Filterなどの追跡用関数が充実。
http://www.opentl.org/

文字認識(Optical Character Recognition)

TesseractOCR
文字認識のオープンソースライブラリ。日本語文字認識にも対応。過去、こんな記事も書きました。
http://code.google.com/p/tesseract-ocr/


Ocropus
文書解析(レイアウト等)のオープンソースライブラリ。TesseractOCRをラップしてるので文字認識も含む。
http://code.google.com/p/ocropus/

バーコード認識(Barcode Recognition)

ZXing ("Zebra Crossing")
1次元バーコードと2次元バーコード(QRコード)を認識させるためのライブラリ
http://code.google.com/p/zxing/

Active Shape Model

asmlibrary
ASMのOpenCVによる実装
http://code.google.com/p/asmlibrary/

Active Appearance Model

AAM-OpenCV
OpenCVで実装されたActive Appearance Model
http://code.google.com/p/aam-opencv/


AAM-API
AAMのC++実装
http://www2.imm.dtu.dk/~aam/


AAMtools: An Active Appearance Modeling Toolbox
AAMのMatlab実装
http://cvsp.cs.ntua.gr/software/AAMtools/

Constrained Local Model

Constrained Local Model (CLM) Implementation
@derivecvさんからの情報MatlabOpenCVを用いたCLM実装。(2012/05/22追記)
http://sites.google.com/site/xgyanhome/home/projects/clm-implementation


FaceTracker
こちらで解説した手法です。ソースコードを入手するためには、著者に直接メールする必要があります。
http://web.mac.com/jsaragih/FaceTracker/FaceTracker.html

Structure-from-Motion

Bundler: Structure from Motion (SfM) for Unordered Image Collections
SfMソフトウェアの定番。Bundle Adjustmentというアルゴリズムを用いて、カメラキャリブレーションを行う。
http://phototour.cs.washington.edu/bundler/


Multicore Bundle Adjustment
Bundle Adjustmentをマルチコア、GPU上で計算できるようにしたソフトウェア
http://grail.cs.washington.edu/projects/mcba/


V3DSfMToolkit
SfMのためのツールキット。Bundlerとの違いなど知っている方教えて下さい。
http://www.visual-experiments.com/2011/02/22/new-toolkits-released/

Multi-View Stereo

Patch-based Multi-view Stereo Software
Multi-view Stereoのソフトウェア。入力として画像+キャリブレーションデータを与えると密な3次元モデルを生成してくれる。
http://grail.cs.washington.edu/software/pmvs/


Clustering Views for Multi-view Stereo (CMVS)
SfMソフトからの出力を元に画像をクラスタリングして、MVSソフトへの入力を効率化してくれる。
http://grail.cs.washington.edu/software/cmvs/

因子分解法(Factorization)

鹿児島大学川崎研究室で公開されているソースコード
http://www.ibe.kagoshima-u.ac.jp/~cgv/ja/ssii10.html

ステレオマッチング(Stereo Matching)

Middlebury Stereo Vision Page
alt-nativeさんより情報を頂きました。ステレオマッチングの各種アルゴリズムのコード、データセット+Ground Truth、評価用オンラインプログラムなどを提供しているサイトです。(2012/05/22追記)
http://vision.middlebury.edu/stereo/


LIBELAS: Library for Efficient LArge-scale Stereo Matching
@fukushima1981さんより情報を頂きました。2枚の画像からDisparity Mapを作成するC++コードとそのMatlabラッパー(2012/05/22追記)
http://www.rainsoft.de/software/libelas.html

領域分割(Segmentation)

Insight Segmentation and Registration Toolkit (ITK)
多次元データの領域分割とレジストレーションのためのライブラリ。尚、OpenCVとITKをつなぐ方法についてのチュートリアルこちら
http://www.itk.org/

背景差分(Background Subtraction)

OpenCV C++ Background Subtraction Library (bgslibrary)
様々な背景差分アルゴリズムが実装されたライブラリ
http://code.google.com/p/bgslibrary/

ProCam

VPC library
ビデオプロジェクタのキャリブレーションを行うためのライブラリ
http://free-dee.org/vpc/

機械学習(Machine Learning)

とりあえず以下にリストがまとまってます。(朱鷺の杜Wiki)
http://ibisforest.org/index.php?Freeware


Support Vector Machine
SVMツールと関連する論文まとめ - EchizenBlog-Zwei
http://d.hatena.ne.jp/echizen_tm/20110214/1297700725


SVM-Struct
svmlightベースで実装された、Structual SVMのライブラリ。
http://www.cs.cornell.edu/people/tj/svm_light/svm_struct.html


Multiboost
AdaBoostのライブラリ
http://mloss.org/software/view/246/


Shogun - A Large Scale Machine Learning Toolbox
C++/Python/R/Matlabなど様々なインターフェースを持つ機械学習ライブラリ。特にSVMカーネルの実装に力を入れている。
http://www.shogun-toolbox.org/

拡張現実感(Augmented Reality)

ARToolkit
ARライブラリの定番。Java/C#/Android実装(NyAR Toolkit)やFlash実装(FLAR Toolkit)などもある。これら派生プロジェクトについてまとめたブログ”ARToolKitとその周辺技術のまとめ - 毛の生えたようなもの”
http://www.hitl.washington.edu/artoolkit/


OpenCV-AR
OpenCVベースのARライブラリ
http://sourceforge.net/projects/opencv-ar/


ArUco
これもOpenCVベースのARライブラリ
http://www.uco.es/investiga/grupos/ava/node/26
http://sourceforge.net/projects/aruco/files/1.1.0/


Core AR
@sonsonさん作成のiOS用ARソフトウェア。
http://sonson.jp/?page_id=1699


OpenCV MarkerlessAR
僕が作ったこれです。その名の通り、OpenCVで作成した自然特徴点ベースのARです。(メンテする時間がない。。。誰か手伝って。)
https://github.com/takmin/OpenCV-Marker-less-AR


Parallel Tracking and Mapping for Small AR Workspaces (PTAM)
SLAMベースARの定番。
http://www.robots.ox.ac.uk/~gk/PTAM/


以下、企業が作成したソース非公開の無料ARライブラリ
Vuforia(旧QCAR)
SATCH(D'Fusion SDK)
metaio

その他(Misc)

http://www.cs.cmu.edu/~cil/txtv-source.html
ここもコンピュータビジョンのソースへのリンク集