OpenCV 2.0 – cv::Mat 行列演算

前回に引き続き、cv::Matクラスについて。
今回は行列演算に関する機能を使います。

houteisiki

上記のシンプルな連立一次方程式を cv::Mat クラスの機能を使って解いてみます。

? 出力結果

CvMatでは cvmInvert -> cvmMul と関数を順番に呼び出さないといけないところを、
cv::Matなら matX = matA.inv()*matB のように直感的に行列演算を行うことができます。
また、今回のような線形な問題であれば solve(matA, matB, matX) で解くこともできます。

基本的な行列演算

CvMat cv::Mat
X = A + B cvmAdd(A, B, X) X = A + B
X = A – B cvmSub(A, B, X) X = A – B
X = AB cvmMul(A, B, X) X = A * B
X = A-1 (逆行列) cvmInvert(A, X) X = A.inv()
X = AT (転置行列) cvmTranspose(A, X) X = A.t()
X = A・B (内積) cvmDotProduct(A, B) X = A.dot(B)
X = A × B (外積) cvmCrossProduct(A, B, X) X = A.cross(B)
|A| (行列式) cvmDet(A) determinant(A)

以下のような細かい操作もできます。

また、Matlabスタイルの行列初期化関数も用意されています。

これ以外にもまだまだたくさんの機能があります。
今まで面倒だった行列演算がかなり楽になるのでうれしいですね。

関連記事:
OpenCV 2.0 – cv::Mat
OpenCV 2.0 – cv::Ptr
OpenCV 2.0を試してみた

あわせて読む:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です