About BBS

CV リファレンス マニュアル

最終変更者: 怡土順一, 最終変更リビジョン: 462, 最終変更日時: 2009-03-20 19:59:58 +0900 (金, 20 3月 2009)


カメラキャリブレーションと3次元再構成(Camera Calibration and 3D Reconstruction)


ピンホールカメラモデル, 歪み

このセクションの関数は,ピンホールカメラモデルを取り扱う.すなわち,ひ とつのビューは透視投影変換を用いて,3次元座標を画像平面に投影することで 構成されている.


s*m' = A*[R|t]*M', あるいは

 [u]   [fx 0 cx] [r11 r12 r13 t1] [X]
s[v] = [0 fy cy]*[r21 r22 r23 t2]*[Y]
 [1]   [0  0  1] [r31 r32 r33 t3] [Z]
                                   [1]
ここで(X, Y, Z)はワールド座標系の3次元座標であり, (u, v)は画像平面に投影された座標である. Aはカメラ行列,またはカメラの内部パラメータ行列と呼ばれている. (cx, cy)は通常は画像中心である主点(レンズの光学的な中心) であり,fx, fyは焦点距離でピクセル単位で表現される.従って, もしある係数によってカメラ画像がアップサンプリングまたはダウンサンプリ ングされている場合,これらすべてのパラメータ(fx, fy, cx, cy)も同じ係数でスケーリング(それぞれが乗算/除算)されなければな らない. 内部パラメータ行列はビューに依存しないので,一度推定すれば焦点 距離を固定している限りは繰返し使用することができる. また,同次変換行列である [R|t] は外部パラメータと呼ばれる. これは,静的環境に対するカメラの動き,または固定カメラの前のオブジェク トの剛体運動を表す.[R|t] は3次元座標 (X, Y, Z) をそれぞれのカメラ座標系に変換する.上述の変換は,以下の式で z≠0 のときと等しい.
[x]     [X]
[y] = R*[Y] + t
[z]     [Z]

x' = x/z
y' = y/z

u = fx*x' + cx
v = fy*y' + cy
実際のカメラレンズは半径方向の歪みや,わずかな円周方向の歪みを持っているので,上のモデルは以下のように拡張される.
[x]     [X]
[y] = R*[Y] + t
[z]     [Z]

x' = x/z
y' = y/z

x" = x'*(1 + k1r2 + k2r4 + k3r6) + 2*p1x'*y' + p2(r2+2*x'2)
y" = y'*(1 + k1r2 + k2r4 + k3r6) + p1(r2+2*y'2) + 2*p2*x'*y'
ここで r2 = x'2+y'2

u = fx*x" + cx
v = fy*y" + cy
k1,k2,k3 は半径方向の歪み係数, p1,p2 は円周方向の歪み係数である.高次の係数は OpenCVでは考慮されない.歪み係数はビューに依存しないので,内部パラメー タとなる.またキャプチャした画像の解像度にかかわらず同じままである. つまり,例えば, あるカメラが 320x240 の解像度の画像でキャリブレーションされた場合, 同じカメラの 640x480 の解像度の画像に対しても全く同じ歪み係数を用いることができる (fx,fy,cx,cy は適切にスケーリングされなければならないが).

キャリブレーションに関係する関数の多くは,歪み係数のベクトルを扱う. これは,4x1,1x4,5x1,1x5 の浮動小数点型ベクトル(CvMat*)である. 歪み係数の順番は,以下のようになる:

(k1, k2, p1, p2[, k3]).

つまり,最初に二つの半径方向の歪み係数,次に,二つの円周方向の歪み係数, 最後にオプションとして3番目の半径方向の歪み係数が続く. 以前のバージョンの OpenCV との互換性を保つために,このような順番が利用されている.

このセクションの関数は,以下の目的で使用される.

ここで述べられた機能については,カメラキャリブレーションツールボックスを参考にしている. [Bouguet04]

シングルおよびステレオカメラキャリブレーション(Single and Stereo Camera Calibration)


ProjectPoints2

3次元空間中の点を画像平面へ投影する

void cvProjectPoints2( const CvMat* object_points, const CvMat* rotation_vector,
                       const CvMat* translation_vector, const CvMat* intrinsic_matrix,
                       const CvMat* distortion_coeffs, CvMat* image_points,
                       CvMat* dpdrot=NULL, CvMat* dpdt=NULL, CvMat* dpdf=NULL,
		       CvMat* dpdc=NULL, CvMat* dpddist=NULL, double aspect_ratio=0 );

object_points
オブジェクトの点の配列でその大きさは3xNまたはNx3である.N は画像内の点の個数.
rotation_vector
回転ベクトル.1x3または3x1.
translation_vector
並進ベクトル.1x3または3x1.
intrinsic_matrix
カメラマトリクス(A) [fx 0 cx; 0 fy cy; 0 0 1].
distortion_coeffs
歪み係数のベクトル,4x1, 1x4, 5x1, 1x5. このベクトルが NULL の場合,関数は全ての歪み係数が 0 であるとみなす.
image_points
画像平面上の点の出力配列で,その大きさは2xNまたはNx2である.ここでNはビュー上の点の数.
dpdrot
オプション:画像平面上の点の回転ベクトルの各要素に関する微分係数を表す2Nx3行列.
dpdt
オプション:画像平面上の点の並進ベクトルの各要素に関する微分係数を表す2Nx3行列.
dpdf
オプション:画像平面上の点のfx と fyに関する微分係数を表す2Nx2行列.
dpdc
オプション:画像平面上の点のcx とcyに関する微分係数を表す2Nx2行列.
dpddist
オプション:画像平面上の点の歪み係数に関する微分係数を表す2Nx4行列.
aspect_ratio
オプション: dpdfの出力を補正するために用いられるアスペクト比パラメータ (cvCalibrateCamera2cvStereoCalibrateCV_CALIB_FIX_ASPECT_RATIO のフラグ付きで呼ばれると, fy だけが独立パラメータとして推定され, fx は,fy*apect_ratio として計算される. これは,dpdf の値にも影響する). このパラメータが 0 の場合,アスペクト比が固定ではないことを意味する.

関数 cvProjectPoints2 は,3次元空間中の点を画像平面上に投 影した際の座標を,内部パラメータと外部パラメータを用いて計算する.オプ ションとして,この関数は画像中の投影点の偏微分係数行列であるヤコビアン を求める.これは,各パラメータ(内部,外部パラメータ)に関連する全ての 入力パラメータの関数として計算される.ヤコビアンは関 数 cvCalibrateCamera2と関 数 cvFindExtrinsicCameraParams2 に おいて,最適化を行うときに用いられる.この関数自身も,現在の内部/外部パ ラメータの逆投影誤差を計算するために利用される.

注釈: 内部パラメータ及び/または外部パラメータを特別な値に設定 すると,この関数を外部変換のみ,あるいは内部変換のみ(つまり,疎な点集 合の歪みを考慮したものに変換する)を計算するために利用することができる.


FindHomography

2枚の画像間の射影変換を求める

void cvFindHomography( const CvMat* src_points, const CvMat* dst_points,
                       CvMat* homography, int method=0,
                       double ransacReprojThreshold=0, CvMat* mask=NULL );

src_points
1枚目の画像上の座標.2xN,Nx2,3xN または Nx3の配列(後ろ二つは同次座標系表記である).ここで N は点の数.
dst_points
2枚目の画像上の座標.2xN,Nx2,3xN または Nx3の配列(後ろ二つは同次座標系表記である).
homography
出力される3x3ホモグラフィ行列(平面射影変換行列).
method
ホモグラフィ行列を計算するための手法.次のいずれか一つ:
0 - 全ての点のペアを利用する標準的な手法
CV_RANSAC - RANSACアルゴリズムに基づくロバストな手法
CV_LMEDS - LMedS推定によるロバストな手法
ransacReprojThreshold
点のペアをインライア値として扱うために許容される,逆投影誤差の最大値. このパラメータは,CV_RANSAC が指定された場合にのみ利用される. 例えば,dst_points がピクセル精度のピクセル座標である場合, このパラメータは,おおよそ 1〜3 にセットされるのが正しい.
mask
オプション:ロバスト推定(CV_RANSACCV_LMEDS)で利用される出力マスク.

関数 cvFindHomography は,2枚の画像間の射影変換行列 H=||hij|| を求める.

  [x'i]   [xi]
si[y'i]~H*[yi]
  [1  ]  [ 1]
以下のように,逆投影誤差を最小にする各要素を計算する.
sum_i((x'i-(h11*xi + h12*yi + h13)/(h31*xi + h32*yi + h33))2+
      (y'i-(h21*xi + h22*yi + h23)/(h31*xi + h32*yi + h33))2) -> min

パラメータ method の値がデフォルトの 0 にセットされている場合, この関数は,全ての点のペアを用いて最適なホモグラフィ行列を推定する. しかし,全ての点のペア (src_pointsidst_pointsi) を剛体,透視変換によりフィッティングすることができない場合(例えば,アウトライアが存在する場合)でも, ロバスト推定手法の一つを用いて正しい変換を推定することができる. CV_RANSACCV_LMEDS, このどちらの手法も,互いに対応する点のペアのランダムな部分集合(5 ペア) を繰り返し生成し,この部分集合から,単純な最小二乗法を用いてホモグラフィ行列を推定する. そして,計算されたホモグラフィ行列のクオリティ (RANSACの場合はインライアの数,LMedS推定の場合は中央値逆投影誤差)を求める. 求められた最適な部分集合からホモグラフィ行列の初期推定値,および, インライア/アウトライアのマスクを生成する.

推定手法にかかわらず(ロバスト推定手法であろうがなかろうが), 計算されたホモグラフィ行列は,逆投影後差がより小さくなるように, Levenberg-Marquardt法により高精度化される(ロバスト推定の場合は,インライアのみが用いられる).

CV_RANSAC の推定手法は, 実際には,どのようなアウトライア比率のデータも扱うことができるが, インライアとアウトライアを区別するための閾値が必要である. CV_LMEDS の推定手法は, このような閾値を必要としないが,50%以上のインライアが含まれているデータでなければ正しく動作しない. また,計算された特徴点列データ内にアウトライアが存在しない場合は, 多少のノイズが含まれたとしても,デフォルトの手法が最も適切である.

この関数は,内部行列及び外部行列の初期値を求めるために用いられる. ホモグラフィ行列(平面射影変換行列)はスケールに依存するので,h33=1 になるように正規化される.


CalibrateCamera2

キャリブレーションパターンを用いて内部パラメータ及び外部パラメータを求める

void cvCalibrateCamera2( const CvMat* object_points, const CvMat* image_points,
                         const CvMat* point_counts, CvSize image_size,
                         CvMat* intrinsic_matrix, CvMat* distortion_coeffs,
                         CvMat* rotation_vectors=NULL, CvMat* translation_vectors=NULL,
                         int flags=0 );

object_points
オブジェクト(キャリブレーションパターン)上の点群 座標の結合行列.3xN または Nx3の配列.Nはすべてのビューでの点の数の合計 である.
image_points
対応する画像上の点群座標の結合行列. 2xN またはNx2 の配列.Nはすべてのビューでの点の数の合計である.
point_counts
それぞれのビューに含まれる点の数を表すベクトル.サ イズは 1xM または Mx1 でMはビューの数.1xM or Mx1,
image_size
画像サイズ.内部カメラ行列の初期化のみに用いられる.
intrinsic_matrix
出力されるカメラ行列 (A) [fx 0 cx; 0 fy cy; 0 0 1]. CV_CALIB_USE_INTRINSIC_GUESSCV_CALIB_FIX_ASPECT_RATIO が指定され た場合,fx, fy, cx, cyのパラメータのうち いくつか,またはすべてを初期化する必要がある.
distortion_coeffs
出力される歪み係数のベクトル,4x1, 1x4, 5x1, 1x5
rotation_vectors
出力される3xMまたはMx3の回転ベクトルの配列 (コンパクトな回転行列の表記についてはcvRodrigues2を参照).
translation_vectors
出力される3xMまたはMx3の並進ベクトルの配列.
flags
処理フラグ.0,または,次の値の組み合わせ.
CV_CALIB_USE_INTRINSIC_GUESS - intrinsic_matrixは最適化が行われた正しい初 期値 fx, fy, cx, cyを含む.このパラメータがセッ トされていない場合,(cx, cy) は最初に画像中心にセットされ(image_size はこの計算に用いられ る),焦点距離は最小二乗法で計算される.注釈:もし内部パラメータが既知であれば,この手法を使う必要はない.代わりに関数 cvFindExtrinsicCameraParams2 を使用すること.
CV_CALIB_FIX_PRINCIPAL_POINT - 主点(光学中心) は最適化中には変化せず,中心または別の指定された場所(このパラメータと同時 に CV_CALIB_USE_INTRINSIC_GUESS がセットされ ている場合)に固定される.
CV_CALIB_FIX_FOCAL_LENGTH - fx と fy の両方が固定される.
CV_CALIB_FIX_ASPECT_RATIO - fxfy のうちのどちらか一方だけが独立変数であるとし,アスペクト比 fx/fyintrinsic_matrix の初期値として与えられた値か ら変わらないように最適化処理を行う.この場合,実際に用いられる(fx, fy)の初期値は,行列から与えられる (CV_CALIB_USE_INTRINSIC_GUESSがセットされている場合)か,何らかの方法で推定される(後者の場合は, fx, fy は任意の値にセットされ,それらの比率だけが用いられる).
CV_CALIB_ZERO_TANGENT_DIST - 円周方向の歪み係数は0にセットされ,最適化中は変化しない.
CV_CALIB_FIX_K1 - 0 番目の歪み係数(k1) が(0 または,CV_CALIB_USE_INTRINSIC_GUESS が渡された場合は初期値に)固定される.
CV_CALIB_FIX_K2 - 1 番目の歪み係数(k2)が固定される(同上).
CV_CALIB_FIX_K3 - 4 番目の歪み係数(k3)が固定される(同上).

関数 cvCalibrateCamera2は,内部パラメータと, 各キャリブレーションパターン画像に対応する外部パラメータ(オプション)を推定する. 3次元のオブジェクトポイントの座標と,それらに対応する画像上に投影された点を指定する必要がある. これらは,幾何学的に既知で,容易に特徴点が発見できるオブジェクトを使用することで得られる. そのようなオブジェクトは,キャリブレーション装置やキャリブレーションパターンと呼ばれ, OpenCVはキャリブレーションの道具としてチェスパターンをサポートしている (cvFindChessboardCorners を参照). 現在,内部パラメータの初期化(CV_CALIB_USE_INTRINSIC_GUESS がセットされていない場合)手法は,平面キャリブレーションパターン(オブジェクト上の点のz座標がすべて0または1である)を用いたもののみが実装されている. 初期値 intrinsic_matrix が与えられさえすれば,3次元のキャリブレーション装置を用いることもできる. 内部パラメータと外部パラメータの初期値がこの関数により計算された後, 逆投影誤差の総和が最小になるように各パラメータが最適化される. 逆投影誤差の総和とは,実際の画像上の座標と,現在の内部・外部パラメータ を用いて cvProjectPoints2 で画像上に投影した座標の差の二乗の総和である.


CalibrationMatrixValues

様々なカメラ特性を計算する

void cvCalibrationMatrixValues( const CvMat *calibMatr,
                                int imgWidth, int imgHeight,
                                double apertureWidth=0, double apertureHeight=0,
                                double *fovx=NULL, double *fovy=NULL,
                                double *focalLength=NULL,
                                CvPoint2D64f *principalPoint=NULL,
                                double *pixelAspectRatio=NULL );

calibMatr
内部パラメータ行列(例えば cvCalibrateCamera2 によって求められたもの).
imgWidth
画像幅.ピクセル単位
imgHeight
画像高さ.ピクセル単位
apertureWidth
アパーチャ幅.実際の長さ単位.(オプションの入力パラメータ)
apertureHeight
アパーチャ高さ.実際の長さ単位.(オプションの入力パラメータ)
fovx
x-方向の画角.degree単位(オプションの出力パラメータ)
fovx
y-方向の画角.degree単位(オプションの出力パラメータ)
focalLength
焦点距離.実際の長さ単位.(オプションの出力パラメータ)
principalPoint
主点(光学中心)実際の長さ単位.(オプションの出力パラメータ)
pixelAspectRatio
ピクセルのアスペクト比 fy/fx.(オプションの出力パラメータ)

関数 cvCalibrationMatrixValues は, 求められたカメラキャリブレーション行列,ピクセル単位の画像フレーム解像度, 物理的アパーチャサイズの値を用いて,様々なカメラ(センサ/レンズ)特性を計算する.


FindExtrinsicCameraParams2

特定のビューに対する外部パラメータを求める

void cvFindExtrinsicCameraParams2( const CvMat* object_points,
                                   const CvMat* image_points,
                                   const CvMat* intrinsic_matrix,
                                   const CvMat* distortion_coeffs,
                                   CvMat* rotation_vector,
                                   CvMat* translation_vector );

object_points
オブジェクトの点の配列.3xNまたはNx3でNはビューにおける点の数.
image_points
対応する画像上の点の配列.2xNまたはNx2でNはビューにおける点の数.
intrinsic_matrix
カメラ内部行列 (A) [fx 0 cx; 0 fy cy; 0 0 1].
distortion_coeffs
歪み係数のベクトル,4x1, 1x4, 5x1, 1x5. このベクトルが NULL の場合,関数は全ての歪み係数が 0 であるとみなす.
rotation_vector
出力される3x1 または 1x3の回転ベクトル(コンパク トな回転行列の表記についてはcvRodrigues2 を参照).
translation_vector
出力される3x1 または 1x3の並進ベクトル.

関数 cvFindExtrinsicCameraParams2 は, カメラの内部パラメータと少数(>=)の 2D<->3D 点対応を利用し て,オブジェクトの姿勢を求める.


StereoCalibrate

ステレオカメラのキャリブレーションを行う

void cvStereoCalibrate( const CvMat* object_points, const CvMat* image_points1,
                        const CvMat* image_points2, const CvMat* point_counts,
                        CvMat* camera_matrix1, CvMat* dist_coeffs1,
                        CvMat* camera_matrix2, CvMat* dist_coeffs2,
                        CvSize image_size, CvMat* R, CvMat* T,
                        CvMat* E=0, CvMat* F=0,
                        CvTermCriteria term_crit=cvTermCriteria(
                               CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,1e-6),
                        int flags=CV_CALIB_FIX_INTRINSIC );

object_points
オブジェクト点の結合行列,3xN あるいは Nx3.ここで, N は全てのビューにおける点数の合計.
image_points1
1 番目のカメラのビューにおける画像間対応点の結合行列, 2xN あるいは Nx2.ここで,N は全てのビューにおける点数の合計.
image_points2
2 番目のカメラのビューにおける画像間対応点の結合行列, 2xN あるいは Nx2.ここで,N は全てのビューにおける点数の合計.
point_counts
各ビューに含まれる点数のベクトル,1xM あるいは Mx1. ここで,M はビューの数.
camera_matrix1, camera_matrix2
入出力カメラ行列 [fxk 0 cxk; 0 fyk cyk; 0 0 1]. CV_CALIB_USE_INTRINSIC_GUESSCV_CALIB_FIX_ASPECT_RATIO が指定された場 合は,これらの行列のいくつか(または全て)の要素が初期化されているはずである.
dist_coeffs1, dist_coeffs2
各カメラの歪み係数を表す入出力ベクトル, 4x1,1x4,5x1,1x5
image_size
画像サイズ.カメラの内部パラメータ行列を初期化する際にのみ用いられる.
R
1 番目と2 番目のカメラの座標系間の回転行列.
T
カメラ座標系間の並進ベクトル.
E
出力オプション:E行列.
F
出力オプション:F行列(基礎行列).
term_crit
繰り返し最適化アルゴリズムのための終了条件.
flags
様々なフラグ.0 あるいは以下の値の組み合わせ:
CV_CALIB_FIX_INTRINSIC - これがセットされた場合,外部パラメータのみが最適化されるように, camera_matrix1,2dist_coeffs1,2 が固定される.
CV_CALIB_USE_INTRINSIC_GUESS - 他のフラグに依存して,いくつか(あるいは全て)の内部パラメータを最 適化する.ただし,初期値はユーザが与える必要がある.
CV_CALIB_FIX_PRINCIPAL_POINT - 最適化の間,主点(光学中心)が固定される.
CV_CALIB_FIX_FOCAL_LENGTH - fxk および fyk が固定される.
CV_CALIB_FIX_ASPECT_RATIO - fxk/fyk の比率が固定されたまま,fyk が最適化される.
CV_CALIB_SAME_FOCAL_LENGTH - 強制的に,fx0=fx1, fy0=fy1 とする.
CV_CALIB_ZERO_TANGENT_DIST - 各カメラの円周方向の歪み係数が 0 に固定される.
CV_CALIB_FIX_K1 - 0 番目の歪み係数(k1)が固定される.
CV_CALIB_FIX_K2 - 1 番目の歪み係数(k2)が固定される.
CV_CALIB_FIX_K3 - 4 番目の歪み係数(k3)が固定される.

関数 cvStereoCalibrate は,ステレオペアを構成する2台のカメラ間の変換を推定する. 2台のカメラの相対位置および相対姿勢が固定されたステレオカメラがあり, 1番目のカメラと2番目のカメラに対するオブジェクトの姿勢 (R1,T1) と (R2, T2)を, (cvFindExtrinsicCameraParams2 を用いて)それぞれ計算したとすると,これらの姿勢は明らかに互いに関係がある. 言い換えれば,(R1, T1)が与えられると, (R2, T2)が計算できるはずである. そのためには,1番目のカメラに対する,2番目のカメラの位置と姿勢が分かるだけでよい. これが,この関数の機能である.(R,T)は次のように計算される:

R2=R*R1
T2=R*T1 + T,
オプションとして,E行列は次のように計算される:
    [0 -T2 T1]
E = [T2 0 -T0]*R,
    [-T1 T0 0]
ここで,Tiは,並進ベクトル T の要素である: T=[T0, T1, T2]T. また,同様に,F行列は次のように計算される:
F = inv(camera_matrix2)T*E*inv(camera_matrix1),
この関数は,ステレオカメラの位置姿勢関係を計算する他に, 2台のカメラそれぞれの完全なキャリブレーションを行うこともできる. しかし,パラメータ空間の次元が大きすぎる事や,入力データのノイズなどが原因で,最適解を得られない可能性もある. 従って, 各カメラの内部パラメータを (例えば,cvCalibrateCamera2 を用いて) 個々に高精度に推定できるならば,そちらの方法が推奨される. その後に,その計算された内部パラメターと, CV_CALIB_FIX_INTRINSIC フラグをこの関数に渡せばよい. それが無理で,全てのパラメータを一度に計算する場合, いくつかのパラメータに制限を与えると良い. 例えば,CV_CALIB_SAME_FOCAL_LENGTHCV_CALIB_ZERO_TANGENT_DIST フラグを指定するこ とは,通常は妥当な仮定である.

StereoRectify

ステレオカメラの平行化変換を求める

void cvStereoRectify( const CvMat* camera_matrix1, const CvMat* camera_matrix2,
                      const CvMat* dist_coeffs1, const CvMat* dist_coeffs2,
                      CvSize image_size, const CvMat* R, const CvMat* T,
                      CvMat* R1, CvMat* R2, CvMat* P1, CvMat* P2,
                      CvMat* Q=0, int flags=CV_CALIB_ZERO_DISPARITY );

camera_matrix1, camera_matrix2
カメラ行列 [fxk 0 cxk; 0 fyk cyk; 0 0 1].
dist_coeffs1, dist_coeffs2
各カメラの歪み係数ベクトル.4x1,1x4,5x1,1x5
image_size
ステレオカメラのキャリブレーションに用いられる画像サイズ.
R
1 番目と2 番目のカメラの座標系間の回転行列.
T
カメラ座標系間の並進ベクトル.
R1, R2
それぞれ,1 番目および 2 番目のカメラに対する 3x3 平行化変換(回転行列).
P1, P2
新しい(平行化された)座標系に対する 3x4 の投影行列.
Q
出力オプション:視差と奥行きのマッピング行列,4x4. cvReprojectImageTo3D を参照.
flags
オプションフラグ. 0 あるいは CV_CALIB_ZERO_DISPARITY. このフラグがセットされた場合, この関数は,平行化後のビューにおいて各カメラの主点(光学中心)が同じ座標になるようにする. フラグがセットされない場合は,この間数は, 利用できる画像領域が最大になるように(エピポーラ線の傾きに従って)片方の画像を水平・垂直方向に移動する.

関数 cvStereoRectify は, 各カメラ用の回転行列を計算する. この回転行列によって,両方のカメラの画像平面が(仮想的に)同一平面に乗るように変換される. その結果,すべてのエピポーラ線が平行になるので,多数のステレオ対応点問題が単純化される. この関数は,cvStereoCalibrate によって計算された行列を入力とし, 新しい座標系に変換する二つの回転行列と二つの投影行列を出力する. この関数は,通常,両方のカメラ行列と 歪み係数,RT を計算する関数 cvStereoCalibrate の後に呼ばれる. この間数にとって,次の二つは区別される:

  1. 水平ステレオ.1 番目のカメラと 2 番目のカメラのビューが互いに, 主に x 軸に沿った方向にずれている(多少は垂直方向の移動もあるかもしれない). 平行化された画像では,左右のカメラ間のエピポーラ線は,水平,かつ, 同じ y 座標(高さ)になる.P1 と P2 は,以下のようになる:
         [f 0 cx1 0]
      P1=[0 f cy  0]
         [0 0  1  0]
    
         [f 0 cx2 Tx*f]
      P2=[0 f cy   0 ],
         [0 0  1   0 ]
      
    ここで,Tx はカメラ間の水平方向のずれ量であり, CV_CALIB_ZERO_DISPARITY がセットされている 場合は,cx1=cx2 となる.
  2. 垂直ステレオ.1 番目のカメラと 2 番目のカメラのビューが互いに, 主に y 軸に沿った方向にずれている(これも,多少は水平方向の移動があるかもしれない). 平行化された画像でのエピポーラ線は,垂直,かつ,同じ x 座標になる. P1 と P2 は,以下のようになる:
         [f 0 cx  0]
      P1=[0 f cy1 0]
         [0 0  1  0]
      
         [f 0 cx   0  ]
      P2=[0 f cy2 Ty*f],
         [0 0  1   0  ]
      
    ここで,Ty はカメラ間の垂直方向のずれ量であり, CV_CALIB_ZERO_DISPARITY がセットされている 場合は,cy1=cy2 となる.
見て分かるように,P1 と P2 の最初の 3 行は,「平行化された」新しいカメラ行列そのものとなる.


StereoRectifyUncalibrated

キャリブレーションされていないステレオカメラの平行化変換を求める

void cvStereoRectifyUncalibrated( const CvMat* points1, const CvMat* points2,
                                  const CvMat* F, CvSize image_size,
                                  CvMat* H1, CvMat* H2,
                                  double threshold=5 );

points1, points2
互いに対応する 2 次元点の二つの配列.
F
基礎行列. points1points2 の点ペアを用いて, 関数 cvFindFundamentalMat によって計算される.
image_size
画像サイズ.
H1, H2
1 番目の画像と 2 番目の画像に対する平行化ホモグラフィ行列.
threshold
オプション:外れ値を排除するための閾値. このパラメータが 0 よりも大きい場合, エピポーラ幾何に充分に従わないすべての点ペア (つまり,fabs(points2[i]T*F*points1[i])>threshold となる点)が,ホモグラフィ行列を計算する前に棄却される.

関数 cvStereoRectifyUncalibrated は, カメラの内部パラメータと相対的な位置関係が未知な場合において,平行化変換を求める. なので,「Uncalibrated」という接頭辞がついている. もう一つの cvStereoRectify との違いは, この関数は,オブジェクト空間(3次元)における平行化変換ではなく, ホモグラフィ行列 H1H2 の形で 平面透視投影変換を出力することである. この関数は,[Hartley99] のアルゴリズムを実装したものである .

このアルゴリズムはカメラの内部パラメータを必要としないが,エピポーラ幾何に非常に依存している事に注意する. 従って,カメラレンズが大きく歪んでいる場合は,F行列を計算してこの行列を呼ぶよりも前に,歪みを補正するのが良い. 例えば,ステレオカメラの各カメラそれぞれの歪み係数を cvCalibrateCamera2 によって計算してから,cvUndistort2 によって歪みを補正する.


Rodrigues2

回転行列から回転ベクトルへ変換する(またはその逆)

int cvRodrigues2( const CvMat* src, CvMat* dst, CvMat* jacobian=0 );

src
入力の回転ベクトル(3x1 あるいは 1x3),または回転行列(3x3).
dst
各入力に対応した出力の回転行列(3x3),または回転ベクトル(3x1 あるいは 1x3).
jacobian
オプション出力の3x9または9x3のヤコビアン - 出力配列の各要素の,入力配列の各要素に関する偏微分係数.

関数 cvRodrigues2 は,回転ベクトルを回転行列に変換する.ま たはその逆も可能である. 回転ベクトルは回転行列のコンパクトな表記である. 回転ベクトルの方向は回転軸で,ベクトルの長さは回転軸周りの回転量になっ ている.回転行列 R とそれに対応する回転ベクトル r は次のように計算される.

theta <- norm(r)
r <- r/theta
                                                   [0 -rz ry]
R = cos(theta)*I + (1-cos(theta))*rrT + sin(theta)*[rz 0 -rx]
                                                   [ry rx 0 ]
逆変換も以下のように簡単に行うことができる.

           [0 -rz ry]
sin(theta)*[rz 0 -rx] = (R - RT)/2
           [ry rx 0 ]

回転ベクトルは,わずか3自由度の行列で回転行列を表すことができる便利な表 記である.この表記は cvFindExtrinsicCameraParams2cvCalibrateCamera2 において最適化を行う際に用いられる.


Undistort2

レンズ歪みを補正するため画像を変換する

void cvUndistort2( const CvArr* src, CvArr* dst,
                   const CvMat* intrinsic_matrix,
                   const CvMat* distortion_coeffs );

src
入力画像(歪みあり).
dst
出力画像(補正済み).
intrinsic_matrix
カメラ内部行列 (A) [fx 0 cx; 0 fy cy; 0 0 1].
distortion_coeffs
歪み係数のベクトル,4x1, 1x4, 5x1, 1x5

関数 cvUndistort2は,半径方向や円周方向のレンズ歪みを補正する ために画像を変換する.カメラ行列や歪みパラメータは, cvCalibrateCamera2 を用いて決定 することができる.このセクションの最初の式を用いて,出力画像のすべての ピクセルについて,入力画像中の対応する座標を計算する.そして,各ピクセ ル値がバイリニア補間を用いて計算される.キャリブレーションを行った画像 と入力画像の解像度が異なる場合は,歪み係数はそのままの値で問題ないが, fx, fy, cx,cy は適切な調整が必要である.

歪み補正さた画像の主点(光学中心)は,画像の画像の中心になる.


InitUndistortMap

歪み補正マップの計算

void cvInitUndistortMap( const CvMat* camera_matrix,
                         const CvMat* distortion_coeffs,
                         CvArr* mapx, CvArr* mapy );

camera_matrix
カメラ行列 (A) [fx 0 cx; 0 fy cy; 0 0 1].
distortion_coeffs
歪み係数のベクトル,4x1,1x4,5x1,1x5
mapx
補正マップのx座標の出力配列.
mapy
補正マップのy座標の出力配列.

関数 cvInitUndistortMap は,事前に歪み補正マップ(補正画 像のすべてのピクセルについて,それぞれ対応する歪み画像のピクセル座標値 をもつマップ)を計算する.その後,マップは入力画像および出力画像と共に, 関数 cvRemap に渡すことができる.

歪み補正さた画像の主点(光学中心)は,画像の画像の中心になる.


InitUndistortRectifyMap

ステレオカメラの歪み補正+平行化の変換マップの計算を行う

void cvInitUndistortRectifyMap( const CvMat* camera_matrix,
                                const CvMat* dist_coeffs,
                                const CvMat* R,
                                const CvMat* new_camera_matrix,
                                CvArr* mapx, CvArr* mapy );

camera_matrix
カメラ行列 A=[fx 0 cx; 0 fy cy; 0 0 1].
distortion_coeffs
歪み係数のベクトル,4x1, 1x4, 5x1, 1x5
R
オブジェクト空間における平行化変換(3x3 行列). cvStereoRectify で計算された値, R1 あるいは R2 が渡される. このパラメータが NULL の場合,単位行列が用いられる.
new_camera_matrix
新しいカメラ行列 A'=[fx' 0 cx'; 0 fy' cy'; 0 0 1].
mapx
出力配列.マップの x-座標.
mapy
出力配列.マップの y-座標.

関数 cvInitUndistortRectifyMap は, cvInitUndistortMap の拡張版である. つまりこの間数は,レンズの歪み補正に加えて, 新しいカメラ行列に従った任意の透視投影変換 R,およびスケーリングと並進を行う. この変換は以下の擬似コードで表現できる:

// (u,v) は,入力点.
// camera_matrix=[fx 0 cx; 0 fy cy; 0 0 1]
// new_camera_matrix=[fx' 0 cx'; 0 fy' cy'; 0 0 1]
x = (u - cx')/fx'
y = (v - cy')/fy'
[X,Y,W]T = R-1*[x y 1]T
x' = X/W, y' = Y/W
x" = x'*(1 + k1r2 + k2r4 + k3r6) + 2*p1x'*y' + p2(r2+2*x'2)
y" = y'*(1 + k1r2 + k2r4 + k3r6) + p1(r2+2*y'2) + 2*p2*x'*y'
mapx(u,v) = x"*fx + cx
mapy(u,v) = y"*fy + cy
このコードは,ターゲット画像(つまり,歪み補正および平行化を行った理想画像)から, カメラから取得したオリジナルの「生」画像への逆変換を行っている事に注意する. バイリニア補完により隙間なく画像の全ての画素を埋めるためには, cvRemap を用いる.

通常,この関数は,cvStereoRectify の後に, (ステレオカメラの各カメラに対して2度)呼ばれる. しかし, 例えば,cvStereoRectifyUncalibrated を用いることで,基礎行列から直接,平行化変換を計算することもできる. この関数は,ピクセルに作用し,3次元空間内の回転行列 R ではなく, 平行化変換を行うホモグラフィ行列を作成する. この場合は,以下のように, ホモグラフィ行列 H から R を計算することができる:

R = inv(camera_matrix)*H*camera_matrix


UndistortPoints

観測された点座標から理想的な点座標を計算する

void cvUndistortPoints( const CvMat* src, CvMat* dst,
                        const CvMat* camera_matrix,
                        const CvMat* dist_coeffs,
                        const CvMat* R=NULL,
                        const CvMat* P=NULL);

src
カメラで観測された点座標の集合.
dst
歪み補正後に逆透視投影を行った理想的な点座標.
camera_matrix
カメラ行列 A=[fx 0 cx; 0 fy cy; 0 0 1]
distortion_coeffs
歪み係数のベクトル,4x1, 1x4, 5x1, 1x5
R
オブジェクト空間での平行化変換(3x3 行列). cvStereoRectify で計算された値, R1 あるいは R2 が渡される. このパラメータが NULL の場合,単位行列が用いられる.
P
新しいカメラ行列(3x3),あるいは,新しい投影行列(3x4). cvStereoRectify で計算された値, P1 あるいは P2 が渡される. このパラメータが NULL の場合,単位行列が用いられる.

関数 cvUndistortPoints は, cvInitUndistortRectifyMap と類似しているが,それと同時に逆の性質も持つ. これら関数は,どちらもレンズ歪みを補正するために用いられ,オプションとし て透視投影(平行化)変換を行う,という点で似ている. 一方で,関数 cvInitUndistortRectifyMap は,マップを適切に初期化するために実際に逆変換を行うが,この関数は順変換を行う. つまり,これは以下の疑似コードで表すことができる:

// (u,v) は入力ポイント,(u', v') は出力ポイント
// camera_matrix=[fx 0 cx; 0 fy cy; 0 0 1]
// P=[fx' 0 cx' tx; 0 fy' cy' ty; 0 0 1 tz]
x" = (u - cx)/fx
y" = (v - cy)/fy
(x',y') = undistort(x",y",dist_coeffs)
[X,Y,W]T = R*[x' y' 1]T
x = X/W, y = Y/W
u' = x*fx' + cx'
v' = y*fy' + cy',
ここで,undistort() は 正規化された歪んだ点座標から正規化された正しい点座標を推定する繰り返しア ルゴリズムを表している(「正規化された」とは,座標値がカメラ行列に依存しないことを意味する).

この関数は,ステレオカメラに対して用いることも,R=NULLとして一つのカメラに用いることもできる.


FindChessboardCorners

チェスボード内のコーナーを求める

int cvFindChessboardCorners( const void* image, CvSize pattern_size,
                             CvPoint2D32f* corners, int* corner_count=NULL,
                             int flags=CV_CALIB_CB_ADAPTIVE_THRESH );

image
入力のチェスボード画像.8ビットのグレースケールまたはカラー画像.
pattern_size
チェスボードの行と列ごとのコーナーの数.
corners
検出されたコーナーの配列.
corner_count
コーナーの数.NULLでない場合,検出したコーナーの数が保存される.
flags
処理フラグ.0または以下の値の組み合わせ.
CV_CALIB_CB_ADAPTIVE_THRESH - 画像を2値化する際に,固定の閾値を使うのではなく,(画像の平均輝度値から計算される)適応的な閾値を用いる.
CV_CALIB_CB_NORMALIZE_IMAGE - 固定閾値処理または適応的閾値処理を行う前に,cvNormalizeHistを用いて画像を正規化する.
CV_CALIB_CB_FILTER_QUADS - 輪郭の探索 段階で抽出される間違った四角形を無視するために,追加基準(輪郭面積,周囲長,形は正方形など)を使用する.

関数 cvFindChessboardCorners は,入力画像がチェ スボードパターンであるかどうかを確認し,チェスボードの各コーナーの位置 検出を試みる.すべてのコーナーが検出され,正しい順番(行順で,かつ各行 は左から右に並ぶ)でそれらが配置されている場合には,この関数は0以外の数 値を返す.そうでない場合,例えば関数がコーナー検出やそれらの順番付けに 失敗した場合などは0を返す.例えば,標準のチェスボードは8×8の正方形 と,7×7の内部コーナー(黒色の正方形が互いに接する点)を持っている.検出 された座標値は近似値であるので,位置の高精度化のためには関数 cvFindCornerSubPixを使用する.


DrawChessBoardCorners

検出されたチェスボードのコーナーを表示する

void cvDrawChessboardCorners( CvArr* image, CvSize pattern_size,
                              CvPoint2D32f* corners, int count,
                              int pattern_was_found );

image
コーナー点を表示する画像.8ビットカラー画像.
pattern_size
チェスボードの各行と各列の内部コーナーの数.
corners
検出されたコーナーの配列.
count
コーナーの数.
pattern_was_found
チェスボードからコーナーが完全に発見された (≠0)か,そうでない(=0)かを示す.この値は関数 cvFindChessboardCorners からの戻り値を渡すだけでよい.

関数 cvDrawChessboardCorners は,チェスボードからコーナー が完全に検出されていない場合(pattern_was_found=0)は,検 出されたコーナーそれぞれに赤色の円を描く.また完全に検出されている場合 (pattern_was_found≠0)は,色付けされた各コーナを線分で 接続して表示する.

OpenCV-1.0 リファレンス マニュアル
OpenCV-1.1pre リファレンス マニュアル
OpenCVサンプルコード


CV_ASSERT
CV_CALL
CV_CHECK
CV_CMP
CV_ERROR
CV_FUNCNAME
CV_GET_SEQ_ELEM
CV_GRAPH_EDGE_FIELDS
CV_GRAPH_FIELDS
CV_GRAPH_VERTEX_FIELDS
CV_IABS
CV_IMAGE_ELEM
CV_IMAX
CV_IMIN
CV_NODE_HAS_NAME
CV_NODE_IS_COLLECTION
CV_NODE_IS_EMPTY
CV_NODE_IS_FLOW
CV_NODE_IS_INT
CV_NODE_IS_MAP
CV_NODE_IS_REAL
CV_NODE_IS_SEQ
CV_NODE_IS_STRING
CV_NODE_IS_USER
CV_NODE_SEQ_IS_SIMPLE
CV_QUADEDGE2D_FIELDS
CV_RGB
CV_SEQUENCE_FIELDS
CV_SET_FIELDS
CV_SIGN
CV_SUBDIV2D_FIELDS
CV_SUBDIV2D_POINT_FIELDS
CV_SWAP
CV_TREE_NODE_FIELDS
CV_TURN_ON_IPL_COMPATIBILITY
EXIT
MAX
MIN
OPENCV_ASSERT
OPENCV_CALL
OPENCV_ERRCHK
OPENCV_ERROR
__BEGIN__
__END__

CvANN_MLP
CvANN_MLP::create
CvANN_MLP::train
CvANN_MLP_TrainParams
CvArr
CvAttrList
CvBoost
CvBoost::get_weak_predictors
CvBoost::predict
CvBoost::prune
CvBoost::train
CvBoostParams
CvBoostTree
CvBox2D
CvCapture
CvConDensation
CvConnectedComp
CvConvexityDefect
CvDTree
CvDTree::predict
CvDTree::train
CvDTreeNode
CvDTreeParams
CvDTreeSplit
CvDTreeTrainData
CvEM
CvEM::train
CvEMParams
CvFileNode
CvFileStorage
CvGraph
CvGraphScanner
CvHMM
CvHaarClassifier
CvHaarClassifierCascade
CvHaarFeature
CvHaarStageClassifier
CvHistogram
CvImgObsInfo
CvKNearest
CvKNearest::find_nearest
CvKNearest_train
CvKalman
CvMat
CvMatND
CvMemBlock
CvMemStorage
CvMemStoragePos
CvNormalBayesClassifier
CvNormalBayesClassifier::predict
CvNormalBayesClassifier::train
CvPoint
CvPoint2D32f
CvPoint2D64f
CvPoint3D32f
CvPoint3D64f
CvQuadEdge2D
CvRTParams
CvRTrees
CvRTrees::get_proximity
CvRTrees::get_var_importance
CvRTrees::predict
CvRTrees::train
CvRect
CvSVM
CvSVM::get_default_grid
CvSVM::get_params
CvSVM::get_support_vector
CvSVM::train
CvSVM::train_auto
CvSVMParams
CvScalar
CvSeq
CvSeqBlock
CvSet
CvSize
CvSize2D32f
CvSlice
CvSparseMat
CvStatModel
CvStatModel::CvStatModel
CvStatModel::CvStatModel(data)
CvStatModel::clear
CvStatModel::load
CvStatModel::predict
CvStatModel::read
CvStatModel::save
CvStatModel::train
CvStatModel::write
CvStatModel::~CvStatModel
CvStereoBMState
CvStereoGCState
CvSubdiv2D
CvSubdiv2DPoint
CvTermCriteria
CvTreeNodeIterator
CvTypeInfo
IplImage
RTreesOOBerror

cv2DRotationMatrix
cv3dTrackerCalibrateCameras
cv3dTrackerLocateObjects
cvAbs
cvAbsDiff
cvAbsDiffS
cvAcc
cvAdaptiveThreshold
cvAdd
cvAddS
cvAddWeighted
cvAlloc
cvAnd
cvAndS
cvApproxChains
cvApproxPoly
cvArcLength
cvAvg
cvAvgSdv
cvBackProjectPCA
cvBoundingRect
cvBoxPoints
cvCalcBackProject
cvCalcBackProjectPatch
cvCalcCovarMatrix
cvCalcCovarMatrixEx
cvCalcDecompCoeff
cvCalcEMD2
cvCalcEigenObjects
cvCalcGlobalOrientation
cvCalcHist
cvCalcImageHomography
cvCalcMotionGradient
cvCalcOpticalFlowBM
cvCalcOpticalFlowHS
cvCalcOpticalFlowLK
cvCalcOpticalFlowPyrLK
cvCalcPCA
cvCalcPGH
cvCalcProbDensity
cvCalcSubdivVoronoi2D
cvCalibrateCamera2
cvCalibrationMatrixValues
cvCamShift
cvCanny
cvCartToPolar
cvCbrt
cvCheckArr
cvCheckArray
cvCheckContourConvexity
cvCircle
cvClearGraph
cvClearHist
cvClearMemStorage
cvClearND
cvClearSeq
cvClearSet
cvClearSubdivVoronoi2D
cvClipLine
cvClone
cvCloneGraph
cvCloneImage
cvCloneMat
cvCloneMatND
cvCloneSeq
cvCloneSparseMat
cvCmp
cvCmpS
cvCompareHist
cvComputeCorrespondEpilines
cvConDensInitSampleSet
cvConDensUpdateByTime
cvContourArea
cvContourFromContourTree
cvConvert
cvConvertImage
cvConvertPointsHomogeneous
cvConvertScale
cvConvertScaleAbs
cvConvexHull2
cvConvexityDefects
cvCopy
cvCopyHist
cvCopyMakeBorder
cvCornerEigenValsAndVecs
cvCornerHarris
cvCornerMinEigenVal
cvCountNonZero
cvCreate2DHMM
cvCreateCameraCapture
cvCreateChildMemStorage
cvCreateConDensation
cvCreateContourTree
cvCreateData
cvCreateFeatureTree
cvCreateFileCapture
cvCreateGraph
cvCreateGraphScanner
cvCreateHist
cvCreateImage
cvCreateImageHeader
cvCreateKalman
cvCreateMat
cvCreateMatHeader
cvCreateMatND
cvCreateMatNDHeader
cvCreateMemStorage
cvCreateObsInfo
cvCreatePOSITObject
cvCreateSeq
cvCreateSet
cvCreateSparseMat
cvCreateStereoBMState
cvCreateStereoGCState
cvCreateStructuringElementEx
cvCreateSubdivDelaunay2D
cvCreateTrackbar
cvCreateVideoWriter
cvCrossProduct
cvCvtColor
cvCvtPixToPlane
cvCvtPlaneToPix
cvCvtScale
cvCvtScaleAbs
cvCvtSeqToArray
cvDCT
cvDFT
cvDecRefData
cvDeleteMoire
cvDestroyAllWindows
cvDestroyWindow
cvDet
cvDilate
cvDistTransform
cvDiv
cvDotProduct
cvDrawChessBoardCorners
cvDrawContours
cvDynamicCorrespondMulti
cvEViterbi
cvEigenDecomposite
cvEigenProjection
cvEigenVV
cvEllipse
cvEllipse2Poly
cvEllipseBox
cvEndFindContours
cvEndWriteSeq
cvEndWriteStruct
cvEqualizeHist
cvErode
cvError
cvErrorStr
cvEstimateHMMStateParams
cvEstimateObsProb
cvEstimateTransProb
cvExp
cvExtractSURF
cvFastArctan
cvFillConvexPoly
cvFillPoly
cvFilter2D
cvFindChessboardCorners
cvFindContours
cvFindCornerSubPix
cvFindExtrinsicCameraParams2
cvFindFeatures
cvFindFeaturesBoxed
cvFindFundamentalMat
cvFindGraphEdge
cvFindGraphEdgeByPtr
cvFindHomography
cvFindNearestPoint2D
cvFindNextContour
cvFindRuns
cvFindStereoCorrespondence
cvFindStereoCorrespondenceBM
cvFindStereoCorrespondenceGC
cvFindType
cvFirstType
cvFitEllipse2
cvFitLine2D
cvFlip
cvFloodFill
cvFlushSeqWriter
cvFree
cvGEMM
cvGet1D
cvGet2D
cvGet3D
cvGetAffineTransform
cvGetCaptureProperty
cvGetCentralMoment
cvGetCol
cvGetCols
cvGetDiag
cvGetDims
cvGetElemType
cvGetErrMode
cvGetErrStatus
cvGetFileNode
cvGetFileNodeByName
cvGetFileNodeName
cvGetGraphVtx
cvGetHashedKey
cvGetHistValue_1D
cvGetHistValue_2D
cvGetHistValue_3D
cvGetHistValue_nD
cvGetHuMoments
cvGetImage
cvGetImageCOI
cvGetImageROI
cvGetMat
cvGetMinMaxHistValue
cvGetModuleInfo
cvGetND
cvGetNextSparseNode
cvGetNormalizedCentralMoment
cvGetNumThreads
cvGetOptimalDFTSize
cvGetPerspectiveTransform
cvGetQuadrangleSubPix
cvGetRawData
cvGetReal1D
cvGetReal2D
cvGetReal3D
cvGetRealND
cvGetRectSubPix
cvGetRootFileNode
cvGetRow
cvGetRows
cvGetSeqElem
cvGetSeqReaderPos
cvGetSetElem
cvGetSize
cvGetSpatialMoment
cvGetSubRect
cvGetTextSize
cvGetThreadNum
cvGetTickCount
cvGetTickFrequency
cvGetTrackbarPos
cvGetWindowHandle
cvGetWindowName
cvGoodFeaturesToTrack
cvGrabFrame
cvGraphAddEdge
cvGraphAddEdgeByPtr
cvGraphAddVtx
cvGraphEdgeIdx
cvGraphFindEdge
cvGraphFindEdgeByPtr
cvGraphRemoveEdge
cvGraphRemoveEdgeByPtr
cvGraphRemoveVtx
cvGraphRemoveVtxByPtr
cvGraphVtxDegree
cvGraphVtxDegreeByPtr
cvGraphVtxIdx
cvGuiBoxReport
cvHaarDetectObjects
cvHoughCircles
cvHoughLines2
cvImgToObs_DCT
cvInRange
cvInRangeS
cvIncRefData
cvInitFont
cvInitImageHeader
cvInitLineIterator
cvInitMatHeader
cvInitMatNDHeader
cvInitMixSegm
cvInitSparseMatIterator
cvInitSystem
cvInitTreeNodeIterator
cvInitUndistortMap
cvInitUndistortRectifyMap
cvInpaint
cvInsertNodeIntoTree
cvIntegral
cvInv
cvInvSqrt
cvInvert
cvIsInf
cvIsNaN
cvKMeans2
cvKalmanCorrect
cvKalmanPredict
cvKalmanUpdateByMeasurement
cvKalmanUpdateByTime
cvLUT
cvLaplace
cvLine
cvLoad
cvLoadHaarClassifierCascade
cvLoadImage
cvLog
cvLogPolar
cvMahalanobis
cvMakeAlphaScanlines
cvMakeHistHeaderForArray
cvMakeScanlines
cvMakeSeqHeaderForArray
cvMat
cvMatMul
cvMatMulAdd
cvMatchContourTrees
cvMatchShapes
cvMatchTemplate
cvMax
cvMaxRect
cvMaxS
cvMeanShift
cvMemStorageAlloc
cvMemStorageAllocString
cvMerge
cvMin
cvMinAreaRect2
cvMinEnclosingCircle
cvMinMaxLoc
cvMinS
cvMirror
cvMixChannels
cvMixSegmL2
cvMoments
cvMorphEpilinesMulti
cvMorphologyEx
cvMoveWindow
cvMul
cvMulAddS
cvMulSpectrums
cvMulTransposed
cvMultiplyAcc
cvNamedWindow
cvNextGraphItem
cvNextTreeNode
cvNorm
cvNormalize
cvNormalizeHist
cvNot
cvNulDevReport
cvOpenFileStorage
cvOr
cvOrS
cvPOSIT
cvPerspectiveTransform
cvPointPolygonTest
cvPointSeqFromMat
cvPolarToCart
cvPolyLine
cvPostWarpImage
cvPow
cvPreCornerDetect
cvPreWarpImage
cvPrevTreeNode
cvProjectPCA
cvProjectPoints2
cvPtr1D
cvPtr2D
cvPtr3D
cvPtrND
cvPutText
cvPyrDown
cvPyrMeanShiftFiltering
cvPyrSegmentation
cvPyrUp
cvQueryFrame
cvQueryHistValue_1D
cvQueryHistValue_2D
cvQueryHistValue_3D
cvQueryHistValue_nD
cvRNG
cvRandArr
cvRandInt
cvRandReal
cvRandShuffle
cvRange
cvRead
cvReadByName
cvReadChainPoint
cvReadInt
cvReadIntByName
cvReadRawData
cvReadRawDataSlice
cvReadReal
cvReadRealByName
cvReadString
cvReadStringByName
cvRectangle
cvRedirectError
cvReduce
cvRegisterModule
cvRegisterType
cvRelease
cvRelease2DHMM
cvReleaseCapture
cvReleaseConDensation
cvReleaseData
cvReleaseFeatureTree
cvReleaseFileStorage
cvReleaseGraphScanner
cvReleaseHaarClassifierCascade
cvReleaseHist
cvReleaseImage
cvReleaseImageHeader
cvReleaseKalman
cvReleaseMat
cvReleaseMatND
cvReleaseMemStorage
cvReleaseObsInfo
cvReleasePOSITObject
cvReleaseSparseMat
cvReleaseStereoBMState
cvReleaseStereoGCState
cvReleaseStructuringElement
cvReleaseVideoWriter
cvRemap
cvRemoveNodeFromTree
cvRepeat
cvReprojectImageTo3D
cvResetImageROI
cvReshape
cvReshapeMatND
cvReshapeND
cvResize
cvResizeWindow
cvRestoreMemStoragePos
cvRetrieveFrame
cvRodrigues2
cvRound
cvRunHaarClassifierCascade
cvRunningAvg
cvSVBkSb
cvSVD
cvSampleLine
cvSave
cvSaveImage
cvSaveMemStoragePos
cvScale
cvScaleAdd
cvSegmentMotion
cvSeqElemIdx
cvSeqInsert
cvSeqInsertSlice
cvSeqInvert
cvSeqPartition
cvSeqPop
cvSeqPopFront
cvSeqPopMulti
cvSeqPush
cvSeqPushFront
cvSeqPushMulti
cvSeqRemove
cvSeqRemoveSlice
cvSeqSearch
cvSeqSlice
cvSeqSort
cvSet
cvSet1D
cvSet2D
cvSet3D
cvSetAdd
cvSetCaptureProperty
cvSetData
cvSetErrMode
cvSetErrStatus
cvSetHistBinRanges
cvSetIPLAllocators
cvSetIdentity
cvSetImageCOI
cvSetImageROI
cvSetImagesForHaarClassifierCascade
cvSetMemoryManager
cvSetMouseCallback
cvSetND
cvSetNew
cvSetNumThreads
cvSetReal1D
cvSetReal2D
cvSetReal3D
cvSetRealND
cvSetRemove
cvSetRemoveByPtr
cvSetSeqBlockSize
cvSetSeqReaderPos
cvSetTrackbarPos
cvSetZero
cvShowImage
cvSmooth
cvSnakeImage
cvSobel
cvSolveCubic
cvSolvePoly
cvSplit
cvSqrt
cvSquareAcc
cvStartAppendToSeq
cvStartFindContours
cvStartNextStream
cvStartReadChainPoints
cvStartReadRawData
cvStartReadSeq
cvStartWriteSeq
cvStartWriteStruct
cvStdErrReport
cvStereoCalibrate
cvStereoRectify
cvStereoRectifyUncalibrated
cvSub
cvSubRS
cvSubS
cvSubdiv2DEdgeDst
cvSubdiv2DEdgeOrg
cvSubdiv2DGetEdge
cvSubdiv2DLocate
cvSubdiv2DNextEdge
cvSubdiv2DRotateEdge
cvSubdivDelaunay2DInsert
cvSubstituteContour
cvSum
cvT
cvThreshHist
cvThreshold
cvTrace
cvTransform
cvTranspose
cvTreeToNodeSeq
cvTypeOf
cvUndistort2
cvUndistortPoints
cvUniformImgSegm
cvUnregisterType
cvUpdateMotionHistory
cvUseOptimized
cvWaitKey
cvWarpAffine
cvWarpPerspective
cvWarpPerspectiveQMatrix
cvWatershed
cvWrite
cvWriteComment
cvWriteFileNode
cvWriteFrame
cvWriteInt
cvWriteRawData
cvWriteReal
cvWriteString
cvXor
cvXorS
cvZero
cvmGet
cvmSet
error_handling_sample