Back | Top
1. Overview (OpenCV Reference Manual)
- 前書き
- この文書はOpenCVのマニュアル
- OpenCVとはreal-timeのコンピュータビジョンのためのライブラリ
- 適用分野は、HCI(Human-Computer Interaction 人間とコンピュータとの対話処理)、物体認識、顔認識、ジェスチャー認識、動作追跡などである
- OpenCVはIntel IAアーキテクチャに最適化された関数が多数あり、画像に対する操作を高速に行うことができる。
- このマニュアルはOpenCVの概念、データ型の定義と画像処理に置ける処理モデルについて説明するとともに、ライブラリに含まれる各関数の詳細についても説明している。
- About This Software(このソフトウェアについて)
- OpenCVは画像解釈のための様々なツールを持っている。が、それらはIPL(Intel Image Processing Library)と互換性のある低レベルの画像処理群である。
- しかし、OpenCVはそれらを利用できるが、その一方でそれらの機能を使ってより高レベルの処理を行うことができる。
- Camera Calibration (カメラの補正/校正)
- Feature Detection (特徴抽出)
- Tracking (Optical Flow) (動作追跡)
- Shape Analysis (Geometry, Contour Processing) (図形解析)
- Motion Analysis (Motion Templates, Estimators) (動作解析)
- 3D reconstruction (View Morphing) (三次元再構成/変形?)
- Object setmentation and recognition (Histogram, Embedded Hidden Markov Models, Eigen Objects) (オブジェクト分割と再構成)
- このライブラリの最も重要な点は性能である
- 多くの処理はIPLのデータ構造にあわせるために動的データ構造(Dynamic Data Structures)を基本としていて、その半数以上はアセンブラによってIntel Architectureに最適化されている。
- Why We Need OpenCV Library(なぜOpenCVライブラリが必要なのか)
- OpenCVライブラリはPC環境で最新のコンピュータビジョンを利用するための機会を提供するためのオープンソースコミュニティとして設立された方法の一つである。
- 関数のIntel Architecture Processors、特にMMX技術に特化して最適化されている
- OpenCVライブラリはプラットフォーム非依存のインタフェースを持ち、C言語によるソースコードが公開されている
- Relation Between OpenCV and Other Libraries(OpenCVとほかのライブラリとの関連について)
- IPLと一緒に使うことが前提に設計されている。
- そうではなくなったらしい。OpenCV beta 2.1(OpenCV-0.9.3.tar.gz)のChangeLogにはそう書いてある.ただし、まだ一点ほどexcuseがあるようだ
- OpenCVとIPLは共通の画像フォーマット(IplImage)を使っている
- また、IPP(Intel Integrated Performance Primitives)を低レベルでは利用している。
- そこ(PC)にインストールされていれば使うようだ。
- Windows版とLinux版がある
- 製品である URL: http://www.intel.com/software/products/ipp/ippvm20/
- Data Types Supported(サポートされるデータ型について)
- 基本的なデータ型は少ないが、OpenCVのAPIを簡単にするために導入されたデータ型がそれなりにある
- 基本的なデータ型は...
- 配列のような型
- IplImage (IPL image 基本的な画像データ保持用のデータ型)
- CvMat (行列)
- 拡張可能なデータ集合
- CvSeq (deque)
- CvSet, CvGraph
- 混合データ型
- これらの型の詳細は、Basic Structures and Operationsの章(14章)を参照すること
- Error Handling(エラーの扱い(エラー処理)について)
- エラー処理もIPLと似ていて、エラーコードを返さない。
- かわりに大域変数内に状況を設定、または取り出せるようになっている。それらを行う関数はCvErrorとCvGetErrStatus関数である。
- 使用可能なエラーコードとエラー処理の詳細な仕組みはLibrary Technical Organization and System Functionsの章を参照せよ
- Hardware and Software Requirements(必要なハードウェアとソフトウェア要件)
- Intel architectureのProcessorが載ったPC
- Windows 95, 98, Windows 2000 or NT (Linuxでも使える)
- CまたはC++で利用可能
- Platforms Supported (仮定されるプラットフォームについて)
- OpenCVはWindowsプラットフォーム上で動作する
- マニュアル内のソースコード等の記述はANSI規格のC言語で書かれている
- ま、ほかのプロセッサやOS上でも動作するかもしれない。必要があれば徐々に変わるかも...
- About This Manual (このマニュアルについて)
- このマニュアルはOpenCVが使用する画像処理の概念を提供する
- 大きく二つのパートに分割されている
- 1.プログラミングガイド
- 2. リファレンス
- 各関数の仕様
- 各関数は各機能ごとに10〜16章にまとめられている
- 参考となるサンプルコードもあると書いてある。が...
- Manual Organization (マニュアルの構成)
- 二大パート: Programmer Guide と Reference
- Programmer Guideは以下の通り
- 1章 Overview
- 2章 動作解析と物体認識
- 背景差分、動作テンプレート、CamShift、Active Contours, Optical Flow, Estimator
- 3章 画像解析
- Contour Retrieving(概形抽出)、Feature(特徴抽出)、Image Statistics(画像統計)、Pyramids、Morphology(形態学)、Distance Transform(距離変換?)、Thresholding(閾値)、Flood Filling、Histogram(ヒストグラム)
- 4章 構造解析
- Contour Processing、Geometry
- 5章 画像認識
- Eigen Objects、Embedded HMM
- 6章 3次元再構成
- Camera Calibration、View Morphing、POSIT、Gesture Recognition
- 7章 基本構造と操作
- Image Functions(画像処理関数)、Dynamic Data Structure(動的データ構造)、Matrix Operation(行列操作)、Drawing Primitives(描画処理)、Utility(ユーティリティ)
- 8章 ライブラリの技術構成とシステム関数
- Error Handling(エラー処理)、Memory Management(メモリ管理)、Interaction With Low-Level Optimized Functions(低レベル関数の利用)、User DLL Creation(ユーザによるDLLの作成)
- Referenceは以下の通り。各章は関数、データ型、マクロの詳細が記述されている
- 9章 Motion Analysis and Object Tracking Reference
- 10章 Image Analysis Reference
- 11章 Structural Analysis Reference
- 12章 Image Recognition Reference
- 13章 3D Reconstruction Reference
- 14章 Basic Structure and Operations Reference
- 15章 System Functions Reference
- これらのほかに
- Appendix A: 処理がサポートする画像の属性と操作モード
- Glossary(言葉の説明), Bibliography and Index
- Function Descriptions(関数の記述法について)
- 10〜16章には各関数の名称とその簡単な処理内容が書かれている
- 以下の章がそれぞれの関数に書かれている
- Arguments: 関数の全ての引数に関する記述
- Discussion: 関数の定義とその機能
- Audience for This Manual (このマニュアルが想定する読者)
- OpenCVを使おうと言う人全て。研究者、市販ソフト開発者、政府、カメラベンダーなど
- On-line Version(オンライン版)
- このマニュアルは電子ファイル版(PDF format)がオンラインで利用できる
- Related Publications(関連する文献)
- マニュアルの後ろにあるBibliographyを参照すること
- Notational Conventions(概念的な約束事について)
- このマニュアルでは以下にあるような概念的な規則が使われている
- 文書とソースコードをフォントで見分けられるようにしている
- 名前付けの規則
- 関数名の規則
- Font Conventions (フォントに関する決まり事について)
- 以下のような規則が使われている
- マニュアルをみるとわかるが、OpenCVの定数、関数名、変数がフォントで見分けられるようになっている
- Naming Conventions (名前付けに関する決まり事について)
- OpenCVでは以下のような名前付け規則が異なるアイテムのために使われている
- 定数は全て大文字で記述される: 例) CV_SEQ_KIND_GRAPH
- 画像処理に使われる全ての関数の名称は"cv"から始まる。この規則によってソースコード内の関数がOpenCVの関数かそうでないかを判断できる
- OpenCVのすべての外部関数の名前は"cv"から始まる。全ての構造体の名前は"Cv"から始まる。
- このマニュアルでは、ソースコードでは"cv"のprefixを使用しているが、文書内では省略している。"cvm"というprefixも省略されている(行列操作関数)。
- 関数名のそれぞれの新しいパート(?)はunderscore('_')を覗いて大文字で始まる。例えば、"cvContourTree"となる
- Function Name Conventions (関数名に関する決まり事について)
- OpenCVの関数名はcvから始まり以下のような規則に従っている
- cv <action> <target> <mod> ()
- action: 核となる機能。例えば -Set-、-Create-、-Convert-など
- target: 画像処理の分野を示す。例えば -FindContour-、-ApproxPoly-
- いくつかの関数名は二つまたはそれ以上の単語でtarget名が構成される。例えば-MatchContourTree-である
- いくつかの関数名は action と target のみである。例えばcvUnDistortやcvAccがそうである
- mod: オプションフィールドである。核となる機能を修飾する意味を持つ。例えば関数名cvFindExtrinsicCameraParams_64dでは_64dがこの関数が64dで指定される値を扱うことを示している
Presented by Netaro the web | Since 2003