2 つの配列の要素毎に差の絶対値を求めます.
パラメタ: |
---|
この関数は,2 つの配列の要素毎に差の絶対値を求めます.
すべての入力配列は,同じデータ型,同じサイズ(または ROI サイズ)でなければいけません.
配列の要素とスカラ値の差の絶対値を求めます.
パラメタ: |
---|
この関数は,入力配列の要素とスカラ値の差の絶対値を求めます.
すべての入力配列は,同じデータ型,同じサイズ(または ROI サイズ)でなければいけません.
2つの配列を要素毎に加算します.
パラメタ: |
---|
この関数は,以下のように1つの配列をもう1つの配列と足し合わせます:
dst(I)=src1(I)+src2(I) if mask(I)!=0
マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません. また,有限の範囲に値をとる型は,この処理により飽和します.
配列とスカラ値を加算します.
パラメタ: |
---|
この関数は,スカラ value を入力配列 src1 の各要素に加え,その結果を dst に出力します. また,有限の範囲に値をとる型は,この処理により飽和します.
dst(I)=src(I)+value if mask(I)!=0
マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
2つの配列の重み付き和を求めます.
パラメタ: |
---|
この関数は,以下のように2つの配列の重み付き和を計算します:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません. また,有限の範囲に値をとる型は,この処理により飽和します.
2つの配列の要素毎に,ビット単位の論理積を求めます.
パラメタ: |
---|
この関数は,2つの配列の要素ごとに,ビット単位の論理積を計算します:
dst(I)=src1(I)&src2(I) if mask(I)!=0
浮動小数点型配列の場合,それらのビット表現が処理に用いられます.マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけない.
スカラ値と配列の要素毎に,ビット単位の論理積を求めます.
パラメタ: |
---|
この関数は,スカラ値と配列要素毎に,ビット単位の論理積を計算します:
dst(I)=src(I)&value if mask(I)!=0
実際の計算の前に,スカラ値は配列と同じ型に変換されます.また,浮動小数点型配列の場合は,それらのビット表現が処理に用いられます.マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
配列の要素の平均値を求めます.
パラメタ: |
---|
この関数は,各チャンネル毎に配列要素値の平均 M を求めます:
配列が IplImage で COI が設定されている場合,この関数は指定されたチャンネルのみを処理し,その結果を戻り値の CvScalar の 1 番目の要素 に格納します.
配列の要素の平均値と標準偏差を求めます.
パラメタ: |
---|
この関数は,各チャンネル毎に配列要素の平均値と標準偏差を求めます:
配列が IplImage で COI が設定されている場合,この関数は指定されたチャンネルのみを処理し,その結果(平均,標準偏差)を出力変数の1番目の要素 , に格納します.
ベクトル集合の分散共分散行列を求めます.
パラメタ: |
|
---|
この関数は,分散共分散行列を求め,必要ならば入力ベクトル集合の平均ベクトルも計算します. これは,PCA や マハラノビス距離によるベクトル同士の比較などに用いられます.
2 次元ベクトルの大きさと角度を求めます.
パラメタ: |
---|
この関数は,2 次元ベクトル (x(I),y(I)) の大きさか角度のどちらか,あるいは両方を求めます:
magnitude(I)=sqrt(x(I)^2^+y(I)^2^ ),
angle(I)=atan(y(I)/x(I) )
この角度は,0.1 度の精度で計算されます.また,(0,0) の点では,角度は 0 にセットされます.
立方根を求めます.
パラメタ: | value (float) – 浮動小数点型の入力値. |
---|
この関数は,引数で与えられた入力値の立方根を求めます.また通常, pow(value,1./3 よりも高速であり,負の入力値も適切に扱うことができます.しかし,特別な値( , NaN )は扱うことができません.
指定された配列要素をクリアします.
パラメタ: |
|
---|
関数 ClearND は,密な配列および疎な配列の指定された要素をクリア(値に 0 をセット)します.指定された要素が存在しなければ何もしません.
戻り値の IplImage* は,コピーされた画像へのポインタです.
行列の完全なコピーを作成し,そのコピーへのポインタを返します.
2 つの配列の要素毎の比較を行います.
パラメタ: |
|
---|
この関数は,2 つの配列の対応する 2 つの要素同士を比較し,その結果に応じた値でマスク配列を埋めます:
dst(I)=src1(I) op src2(I),
比較結果が真であれば, dst(I) に 0xff(全てのビットが 1 )がセットされ,そうでなければ 0 がセットされます.出力配列を除くすべての入力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
スカラ値と配列の要素毎の比較を行います.
パラメタ: |
|
---|
この関数は,配列の要素とスカラ値を比較し,その結果に応じた値でマスク配列を埋めます:
dst(I)=src(I) op scalar
ここで op は , , , , , のいずれかです.
比較結果が真であれば, dst(I) に 0xff(全てのビットが 1 )がセットされ,そうでなければ 0 がセットされます.出力配列を除くすべての入力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
変換の種類には,丸め演算を行うものと飽和演算を行うものがあります.つまり,スケーリング + 変換の結果が,出力配列要素の型で厳密に表現できない場合,最も近い実数軸上の値で代替されます.
マルチチャンネル配列のすべてのチャンネルは,個別に処理されます.
配列に対して任意の線形変換を行います.
パラメタ: |
---|
関数 cvConvertScale には,使用目的に応じた複数の別名があります.この関数は,入力配列に対して任意のスケーリングと任意の変換(あるいは任意の変換のみ)を行い,結果を出力配列にコピーします:
マルチチャンネル配列のチャンネルはすべて,個別に処理されます.
変換の種類によっては,丸めや飽和を伴う場合があります.つまり,スケーリング+変換の結果が,出力配列の要素の型で正確に表現できない場合,実軸上でもっとも近い表現可能な値が出力として用いられます.
scale=1, shift=0 の場合には,スケーリングは行われません.これは,特別に最適化されたケースであり,それに適した別名 Convert を持ちます.入出力配列が同じ種類である場合も,行列や画像のスケーリングや移動を行うことができる特別なケースであり, Scale と呼ばれます.
入力配列の要素を,任意の線形変換によって 8 ビット符号なし整数に変換します.
パラメタ: |
---|
この関数は, ConvertScale と似ていますが,変換結果の絶対値を保存します.
この関数は,8u(8 ビット,符号なし整数)型の出力配列のみをサポートします. その他の型の場合は, ConvertScale と Abs の組み合わせることで,この関数をエミュレートできます.
入力配列の要素を,別の 8 ビット,符号なし整数に変換します.オプションで,さらに線形変換を行うこともできます.
パラメタ: |
|
---|
この関数は, ConvertScale と似ていますが,変換結果の絶対値を出力します:
この関数は,出力配列として 8u(8ビット符号なし整数)型の配列のみをサポートします.その他の型の場合は, ConvertScale と Abs を組み合わせることで,この関数と同等の結果を得られます.
配列をコピーします.
パラメタ: |
---|
この関数は,入力配列の選択された要素を出力配列にコピーします:
引数配列に IplImage が含まれる場合,その ROI と COI が利用されます.コピー元配列とコピー先配列は,同じ型,同じ次元,同じサイズでなければいけません.また,この関数は疎な配列もコピーできます(が,その場合マスクはサポートされません).
配列中の 0 ではない要素を数えます.
パラメタ: | arr (CvArr) – シングルチャンネルの配列,あるいは COI が設定されたマルチチャンネル画像. |
---|
この関数は, arr 中の 0 ではない要素数を返します:
IplImage の場合は,ROI と COI がサポートされます.
この関数は,画像,行列あるいは多次元配列のデータの割り当てを行います.行列の場合は OpenCV の割り当て関数が用いられます.IplImage の場合も OpenCV の関数が用いられますが, CV_TURN_ON_IPL_COMPATIBILITY が呼ばれている場合は例外的に,IPL 関数によってデータ領域が割り当てられます.
画像ヘッダを作成しますが,データ領域の割り当ては行いません.
パラメタ: |
|
---|
行列のヘッダを作成し,データ領域を割り当てます.
パラメタ: |
|
---|
行列のデータ領域を割り当てずに,行列のヘッダのみを作成します.
パラメタ: |
|
---|
この関数は,新しい行列のヘッダを作成し,そのポインタを返します.行列データは, CreateData を用いて割り当てを行うか,あるいは,ユーザが割り当てしたデータを SetData によって明示的にセットします.
多次元の密な配列のヘッダを作成し,データ領域を割り当てます.
パラメタ: |
|
---|
これは,以下の形式を短縮したものです:
行列のデータ領域を割り当てずに,行列のヘッダのみを作成します.
パラメタ: |
|
---|
この関数は,多次元の密な配列のヘッダを確保します.配列データは, CreateData を用いて割り当てるか,あるいは,ユーザが割り当てたデータを SetData によって明示的にセットします.
2 つの 3 次元ベクトルの外積を求めます.
パラメタ: |
---|
この関数は,2 つの 3 次元ベクトルの外積を求めます:
あるいは:
1 次元あるいは 2 次元浮動小数点型配列に対して,離散コサイン変換(DCT),逆離散コサイン変換(IDCT)を行います.
パラメタ: |
|
---|
この関数は,1 次元あるいは 2 次元浮動小数点型配列に対して,離散コサイン変換,逆離散コサイン変換を行います.
N 個の要素を持つ 1 次元ベクトルに対するコサイン変換:
ここで
および , for です.
N 個の要素を持つ 1 次元ベクトルに対する逆コサイン変換:
( は直行行列なので, )
の 2 次元行列に対するコサイン変換:
個の要素を持つ 2 次元ベクトルに対する逆コサイン変換:
1 次元あるいは 2 次元浮動小数点型配列に対して,離散フーリエ変換(DFT),逆離散フーリエ変換(IDFT)を行います.
パラメタ: |
|
---|
この関数は,1 次元あるいは 2 次元浮動小数点型配列に対して,離散フーリエ変換,逆離散フーリエ変換を行います:
N 個の要素を持つ 1 次元ベクトルに対するフーリエ変換:
,
N 個の要素を持つ 1 次元ベクトルに対する逆フーリエ変換:
M N 個の要素を持つ 2 次元ベクトルに対するフーリエ変換:
M N 個の要素を持つ 2 次元ベクトルに対する逆フーリエ変換:
実数データ(シングルチャンネル)の場合,フーリエ変換の出力や逆変換の入力を表現するために,IPL 形式の packed フォーマットが用いられます:
注意: N が偶数ならば最終列が存在し, M が偶数ならば最終行が存在します. また,1 次元実数データを変換する場合,その結果は上述の行列の 1 行目のようになります.
ここでは,DFT を用いた 2 次元畳み込演算の例を示します.
関数 cvDet は,正方行列 mat の行列式を返します.小さい行列には直接的な方法が,大きい行列にはガウスの消去法が用いられます.正定値対称行列の場合は, として SVD を行い, の対角要素の積として行列式を計算することもできます.
2 つの配列の要素毎の割り算を行います.
パラメタ: |
---|
この関数は,1 つの配列をもう 1 つの配列で割ります:
すべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
2つの配列のユークリッド内積を計算します.
パラメタ: |
---|
この関数は,2 つの配列のユークリッド内積を計算して返します.
マルチチャンネル配列の場合,すべてのチャンネルの結果が足し合わされます.特に, cvDotProduct(a,a) ( a は複素ベクトル)の場合は を返します. この関数は,多次元配列を,行毎,レイヤー毎,に処理することができます.
対称行列の固有値と固有ベクトルを求めます.
パラメタ: |
|
---|
この関数は,行列 A の固有値と固有ベクトルを求めます:
mat*evects(i,:)' = evals(i)*evects(i,:)' (in MATLAB notation)
lowindex あるいは highindex の一方が与えられると,もう片方も必要になります.また,このインデックスは,0 から始まります. 例えば,最大の固有値/固有ベクトルを計算する場合は, lowindex=highindex=0 をセットします. また,すべての固有値を計算する場合は, lowindex=highindex=-1 のままにしておきます. 過去の経緯から,この関数は常に入力行列と同じサイズの正方行列(固有ベクトルから構成)と,入力行列と同じ長さのベクトル(固有値から構成)を返します. インデックスで選択された固有値/固有ベクトルは,常に最初の highindex - lowindex + 1 行目に格納されます.
行列 A の内容は,この関数によって破壊されます.
今のところ,この関数は SVD よりも遅く,精度も低いです.よって, A が正定値行列(例えば,分散共分散行列など)であることが既知である場合に,その固有値と固有ベクトルを計算するには(固有ベクトルが必要とされない場合は特に) SVD を用いることが推奨されます.
各配列要素を指数として,自然対数の底(ネイピア数)e のべき乗を求めます.
パラメタ: |
---|
この関数は,入力配列の各要素に対して,それを指数とする自然対数の底 e のべき乗を求めます:
最大誤差は約 です.現在の実装では,指数表現されない(非正規化)浮動小数点数は 0 に変換されて出力されます.
2 次元ベクトルの角度を求めます.
パラメタ: |
|
---|
関数 cvFastArctan は,2 次元ベクトルの角度を求めます.この角度は 0 度から 360 度の間に値をとり,精度は約 0.1 度です.
2 次元配列を垂直,水平,または両軸で反転します.
パラメタ: |
---|
この関数は,3種の中から1つ選択された方法で配列を反転させます(行と列のインデックスは 0 が基準):
この関数が利用されるケースとして,以下のような場合が考えられます:
配列インタフェースをサポートするオブジェクトから CvMat を作成します.
パラメタ: |
|
---|
オブジェクトが 配列インタフェース をサポートする場合, CvMat ( allowND = False ) あるいは CvMatND ( allowND = True ) が返されます.
allowND = False の場合,オブジェクトの配列は 2 次元または3次元でなければいけません.2 次元の場合,返される CvMat はシングルチャンネルです.3 次元の場合,返される CvMat は N チャンネルであり,この N は配列の最大の次元です.この場合,N は OpenCV のチャンネル限界 CV_CN_MAX よりも大きくなることはできません.
allowND = True の場合, fromarray は,元の配列と同じ形状でシングルチャンネルの CvMatND を返します.
例えば, NumPy 配列は配列インタフェースをサポートするので,OpenCV オブジェクトに変換できます:
>>> import cv, numpy
>>> a = numpy.ones((480, 640))
>>> mat = cv.fromarray(a)
>>> print cv.GetDims(mat), cv.CV_MAT_CN(cv.GetElemType(mat))
(480, 640) 1
>>> a = numpy.ones((480, 640, 3))
>>> mat = cv.fromarray(a)
>>> print cv.GetDims(mat), cv.CV_MAT_CN(cv.GetElemType(mat))
(480, 640) 3
>>> a = numpy.ones((480, 640, 3))
>>> mat = cv.fromarray(a, allowND = True)
>>> print cv.GetDims(mat), cv.CV_MAT_CN(cv.GetElemType(mat))
(480, 640, 3) 1
汎用的な行列の乗算を行います.
パラメタ: |
---|
この関数は,汎用的な行列の乗算を行います:
すべての入力行列は,同じデータ型,適切なサイズでなければいけません.実数あるいは複素数の,浮動小数点型の行列がサポートされます.
特定の配列要素を返します.この配列は,1 次元でなければいけません.
特定の配列要素を返します.
パラメタ: |
|
---|
特定の配列要素を返します.この配列は,2 次元でなければいけません.
特定の配列要素を返します.
パラメタ: |
|
---|
特定の配列要素を返します.この配列は,3 次元でなければいけません.
特定の配列要素を返します.
パラメタ: |
|
---|
特定の配列要素を返します.インデックスリストの長さは,この配列の次元と一致していなければいけません.
配列中の,指定範囲内の複数列を返します.
パラメタ: |
---|
関数 GetCols は,入力配列中の,指定範囲内の複数列を返します.
関数 cvGetImage は,入力配列を画像とみなした場合の画像ヘッダを返します. 入力配列になり得るものは,行列 - CvMat と,画像 - IplImage* です. 入力が画像の場合は,単に入力ポインタをそのまま返します.入力が CvMat の場合は, imageHeader 構造体を入力行列のパラメータで初期化します. ROI が設定された IplImage から CvMat への変換を行い,再び CvMat から IplImage に戻した場合,異なるヘッダが返される可能性があります. したがって,画像の長さをその幅とアラインメントから計算するような IPL 関数は,この関数の結果として得られる画像に対しては失敗する可能性があります.
IplImage の COI を返します.この戻り値は, SetImageCOI の引数 coi に対応します.
ROI が設定されていない場合は,画像全体を表す cvRect(0,0,image->width,image->height) が返されます.
任意の配列に対する行列ヘッダを返します.
パラメタ: |
|
---|
この関数は,入力配列を行列とみなした場合の行列ヘッダを返します.
入力配列になり得るものは,行列 - CvMat ,画像 - IplImage ,多次元の密な配列 CvMatND (これは allowND != 0 の場合のみ)です.入力が行列の場合は,単に入力ポインタをそのまま返します. IplImage* あるいは CvMatND の場合, header 構造体を現在の画像 ROI のパラメータで初期化し,そのテンポラリ構造体へのポインタを返します. CvMat では COI がサポートされないので,これは別のオプション出力として返されます.
この関数によって,2 種類の配列( IplImage と CvMat )を簡単に同じコードで扱うことができます.また,関数 GetImage を用いることで, CvMat から IplImage への逆変換が可能です.
入力配列には,内部データが確保されている,あるいは関連付けられている必要があります.そうでない場合,この関数は失敗します.
入力配列が平面データレイアウト(2 次元 RGB 画像など)を持ち,COI が設定されている IplImage である場合,この関数は,選択された平面(例えば,色平面 R)へのポインタと COI = 0 を返します.OpenCVの関数を用いて,マルチチャンネル画像の各チャンネル(平面)毎に処理を行う事ができるようになります.
与えられたベクトルサイズに対する最適な DFT サイズを返します.
パラメタ: | size0 (int) – ベクトルサイズ. |
---|
この関数は,DFT サイズ N を返します.この N は,DFT を高速に実行できるサイズのうちで size0 以上の最小値です.現在の実装では,ある , , に対して となっています.
size0 が大きすぎる( INT_MAX に非常に近い)場合,この関数は負の値を返します.
シングルチャンネルの 1 次元配列の,指定された要素を返します.
パラメタ: |
|
---|
シングルチャンネル配列の指定された要素を返します. また,配列がマルチチャンネルである場合,ランタイムエラーが発生します. 関数 Get は,多少処理が遅いですが,シングルチャンネル配列にもマルチチャンネル配列にも安全に使えることに注意してください.
疎な配列の場合,要求されたノードが存在しなければ,この関数は 0 を返します(この関数によって新たにノードが作成されることはありません).
シングルチャンネルの 2 次元配列の,指定された要素を返します.
パラメタ: |
|
---|
シングルチャンネル配列の指定された要素を返します. また,配列がマルチチャンネルである場合,ランタイムエラーが発生します. 関数 Get は,多少処理が遅いですが,シングルチャンネル配列にもマルチチャンネル配列にも安全に使えることに注意してください.
疎な配列の場合,要求されたノードが存在しなければ,この関数は 0 を返します(この関数によって新たにノードが作成されることはありません).
シングルチャンネルの3次元配列の,指定された要素を返します.
パラメタ: |
|
---|
シングルチャンネル配列の指定された要素を返します. また,配列がマルチチャンネルである場合,ランタイムエラーが発生します. 関数 Get は,多少処理が遅いですが,シングルチャンネル配列にもマルチチャンネル配列にも安全に使えることに注意してください.
疎な配列の場合,要求されたノードが存在しなければ,この関数は 0 を返します(この関数によって新たにノードが作成されることはありません).
シングルチャンネルの配列の,指定された要素を返します.
パラメタ: |
|
---|
シングルチャンネル配列の指定された要素を返します. また,配列がマルチチャンネルである場合,ランタイムエラーが発生します. 関数 Get は,多少処理が遅いですが,シングルチャンネル配列にもマルチチャンネル配列にも安全に使えることに注意してください.
疎な配列で,指定したノードが存在しない場合,この関数は 0 を返します(この関数によって新しいノードは生成されません).
配列中の,指定範囲内の複数行を返します.
パラメタ: |
---|
関数 GetRows は,入力配列中の,指定範囲内の複数行を返します.
この関数は,入力行列あるいは入力画像の行数(CvSize::height)および列数(CvSize::width)を返します.入力が画像の場合は,ROIのサイズが返されます.
入力画像または行列の,矩形部分配列に相当するヘッダを返します.
パラメタ: |
---|
関数 cvGetSubRect は,入力配列中の指定矩形領域に対応するヘッダを返します.つまり,入力配列の一部の矩形領域を独立した配列として扱えるようにします.この関数では ROI を考慮し,実際には ROI の部分配列が取り出されます.
入力配列の要素値が,別の2つの配列要素で表される範囲内にあるかどうかをチェックします.
パラメタ: |
---|
この関数は,入力配列の要素毎に範囲チェックを行います:
シングルチャンネル配列の場合,
2チャンネル配列などの場合,
src(I) が範囲内にあれば dst(I) に 0xff(すべてのビットが 1 )がセットされ,そうでなければ 0 がセットされます.出力配列を除くすべての入力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
入力配列の要素値が,2 つのスカラ値で表される範囲内にあるかどうかをチェックします.
パラメタ: |
---|
この関数は,入力配列の要素毎に範囲チェックを行います:
シングルチャンネル配列の場合,
2チャンネル配列などの場合,
src(I) が範囲内にあれば dst(I) に 0xff(すべてのビットが 1 )がセットされ,そうでなければ 0 がセットされます.出力配列を除く全ての入力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
平方根の逆数を求めます.
パラメタ: | value (float) – 浮動小数点型の入力値. |
---|
この関数は,引数で与えられた入力値の平方根の逆数を求めます.この関数は,通常, 1./sqrt(value) よりも高速です.入力値が 0 以下の場合の処理結果は不定です.また,特別な値( , NaN )は扱うことができません.
Invert
逆行列,または擬似逆行列を求めます.
パラメタ: |
|
---|
この関数は, src1 の逆行列を求め,それを src2 に格納します.
LU (ガウスの消去法)を用いた場合,この関数は src1 の行列式を返します(もちろん,src1 は正方でなければいけません).この戻り値が 0 の場合,逆行列が計算できなかったという事であり, src2 の要素は 0 で埋められます.
SVD を用いた場合,この関数は src1 の条件数の逆数(最大の特異値に対する最小の特異値の比)を返します. src1 が 0 ならば,この戻り値も 0 になります.また,SVD を用いた場合, src1 が非正則な行列ならば,その擬似逆行列を求めます.
無限大であるか否かを判定します.
パラメタ: | value (float) – 浮動小数点型の入力値. |
---|
この関数は,引数で与えられた入力値が (無限大;IEEE754 で定義されています)の場合は 1 を返し,そうでなければ 0 を返します.
NaN であるか否かを判定します.
パラメタ: | value (float) – 浮動小数点型の入力値. |
---|
この関数は,引数で与えられた入力値が NaN(非数値;IEEE754 で定義されている)の場合は 1 を返し,そうでなければ 0 を返します.
ルックアップテーブルを用いて配列を変換します.
パラメタ: |
---|
この関数は,ルックアップテーブルから取り出した値で出力配列を埋めます.テーブルの要素を指定するインデックスには,入力配列の値が用いられます.つまり,この関数は src の各要素を以下のように処理します:
ここで,
です.
各配列要素の絶対値の自然対数を求めます.
パラメタ: |
---|
この関数は,入力配列の各要素に対して自然対数を求めます:
ここで C は,大きな負の値です(現在の実装では,およそ -700).
2 つのベクトル間のマハラノビス距離を求めます.
パラメタ: |
|
---|
この関数は,2 つのベクトル間の重み付き距離を計算して返します:
共分散行列は,関数 CalcCovarMatrix によって求められ,その逆行列は,関数 Invert (行列は非正則であるかもしれないので CV _ SVD フラグを指定するのが望ましいです)によって求められます.
2つの配列の要素同士で大きい方を求めます.
パラメタ: |
---|
この関数は,2 つの配列の各要素を比較して大きい方を求めます:
すべての入力配列は シングルチャンネルで,同じデータ型,同じサイズ(または ROI サイズ)でなければいけません.
配列の各要素とスカラ値を比較して大きい方を求めます.
パラメタ: |
---|
この関数は,配列の各要素とスカラ値を比較して大きい方を求めます:
すべての入力配列は シングルチャンネルで,同じデータ型,同じサイズ(または ROI サイズ)でなければいけません.
複数のシングルチャンネル配列を用いて 1 つのマルチチャンネル配列を構成します.または,配列に 1 つのチャンネルを挿入します.
パラメタ: |
---|
関数 cvMerge は, Split とは逆の操作を行います.出力配列が N チャンネルを持ち,引数の最初の N 個のチャンネルが NULL ではない場合,すべてのチャンネルがコピーされます.引数の最初の N 個のチャンネルのうち1つだけが NULL ではない場合,そのチャンネルだけが出力配列にコピーされます.そのどちらでもない場合([NULL,NULL,NULL,NULL],[NULL,notNULL,notNULL,NULL]など),エラーとなります.残りの(N 番目以降の)入力チャンネルは,常に NULL でなければいけません.COI を設定した IplImage 画像に 1 つのチャンネルを挿入するためには, Copy を利用することもできます.
2 つの配列の要素同士で小さい方を求めます.
パラメタ: |
---|
この関数は,2 つの配列の各要素を比較して小さい方を求めます:
すべての入力配列は シングルチャンネルで,同じデータ型,同じサイズ(または ROI サイズ)でなければいけません.
配列(部分配列)の要素の最大値と最小値を求めます.
パラメタ: |
---|
この関数は,配列の要素の最大・最小値とその位置を求めます.それぞれの値を求めるためにスキャンされる領域は,画像全体あるいはセットされた ROI ( IplImage の場合), また mask が NULL ではない場合は,指定された部分配列領域です.もし,入力がマルチチャンネル配列ならば,それは COI が設定された IplImage 型でなければいけません. 入力が 2 次元配列の場合,極値の座標が minLoc->x と maxLoc->x に格納されます.
配列の各要素とスカラ値を比較して小さい方を求めます.
パラメタ: |
---|
この関数は,配列の各要素とスカラ値を比較して大きい方を求めます:
すべての入力配列は シングルチャンネルで,同じデータ型,同じサイズ(または ROI サイズ)でなければいけません.
入力配列から出力配列へ,指定された(複数の)チャンネルをコピーします.
パラメタ: |
|
---|
この関数は, Split , Merge および CvtColor などの形式を一般化したものです. 色平面の順番の変更,アルファチャンネルの追加や削除,1 つあるいは複数の色平面の挿入や抽出,などに利用することができます.
例として,4 チャンネル RGBA 画像を,3チャンネル BGR 画像(つまり,R と B の交換)とアルファチャンネル画像の 2 つに分離するコードを示します:
rgba = cv.CreateMat(100, 100, cv.CV_8UC4)
bgr = cv.CreateMat(100, 100, cv.CV_8UC3)
alpha = cv.CreateMat(100, 100, cv.CV_8UC1)
cv.Set(rgba, (1,2,3,4))
cv.MixChannels([rgba], [bgr, alpha], [
(0, 2), # rgba[0] -> bgr[2]
(1, 1), # rgba[1] -> bgr[1]
(2, 0), # rgba[2] -> bgr[0]
(3, 3) # rgba[3] -> alpha[0]
])
2 つの配列の要素毎の積を求めます.
パラメタ: |
---|
この関数は,2 つの配列要素毎の積を計算します:
すべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません. また,有限の範囲に値をとる型は,この処理により飽和します.
2つのフーリエ・スペクトルの,要素毎の積を求めます.
パラメタ: |
---|
この関数は,2つの CCS-packed 形式の配列 または 複素行列の,要素毎の掛け算を行います. この 2 つの行列は,実数あるいは複素数のフーリエ変換の結果です.
この関数と関数 DFT を利用することで,2 つの配列の畳み込みを高速に計算することができます.
行列とその行列の転置行列の積を求めます.
パラメタ: |
---|
この関数は,src とその転置行列の積を求めます:
この関数は,以下のように計算を行います.もし の場合は,
そうでない場合は,
配列の絶対値ノルム,絶対値差分ノルム,相対値差分ノルムを求めます.
パラメタ: |
---|
この関数は, arr2 が NULL の場合は arr1 の絶対値ノルムを計算します:
arr2 が NULL でない場合は,絶対値差分ノルムが計算されます:
または, arr2 が NULL でなく,かつ (normType & CV_RELATIVE) != 0 である場合は相対値差分ノルムが計算されます:
この関数は,求めたノルムを返します.マルチチャンネル配列は,シングルチャンネル配列として扱われます.つまり,すべてのチャンネルに対する処理結果が合計されます.
2 つの配列の要素毎に,ビット単位の論理和を計算します.
パラメタ: |
---|
この関数は,2 つの配列の要素毎にビット単位の論理和を計算します:
dst(I)=src1(I)|src2(I)
浮動小数点型配列の場合は,それらのビット表現が処理に用いられます.マスクを除くすべての入出力配列は,同じ種類,同じサイズ(または ROI サイズ)でなければいけません.
スカラ値と配列の要素毎に,ビット単位の論理和を計算します.
パラメタ: |
---|
この関数は,スカラ値と配列要素ごとに,ビット単位の論理和を計算します:
dst(I)=src(I)|value if mask(I)!=0
実際の計算の前に,スカラ値は配列と同じ型に変換されます.また,浮動小数点型配列の場合は,それらのビット表現が処理に用いられます.マスクを除くすべての入出力配列は,同じ種類,同じサイズ(または ROI サイズ)でなければいけません.
ベクトルの透視投影変換を行います.
パラメタ: |
---|
この関数は,配列 src の各要素(2 次元,あるいは 3 次元のベクトルとして扱われます)を以下のように変換します:
ここで,
また,
となります.
極座標系で表現された 2 次元ベクトルを,カーテシアン(デカルト)座標系表現に変換します.
パラメタ: |
---|
この関数は,各ベクトル magnitude(I)*exp(angle(I)*j), j=sqrt(-1) の x 座標,y 座標 を求めます:
x(I)=magnitude(I)*cos(angle(I)),
y(I)=magnitude(I)*sin(angle(I))
各配列要素をそれぞれ指定された値で累乗します.
パラメタ: |
---|
この関数は,入力配列の各要素を power 乗します:
つまり,指数 power が整数ではない場合は,入力配列要素の絶対値が計算に用いられます.しかし,入力要素が負の場合でも,いくつか処理を追加すると正しい結果を得ることができます.以下に,配列要素それぞれの立方根を求めるサンプルを示します:
>>> import cv
>>> src = cv.CreateMat(1, 10, cv.CV_32FC1)
>>> mask = cv.CreateMat(src.rows, src.cols, cv.CV_8UC1)
>>> dst = cv.CreateMat(src.rows, src.cols, cv.CV_32FC1)
>>> cv.CmpS(src, 0, mask, cv.CV_CMP_LT) # 負の要素を見つけます.
>>> cv.Pow(src, dst, 1. / 3)
>>> cv.SubRS(dst, cv.ScalarAll(0), dst, mask) # 負の入力値に対する結果の正負を反転します.
power が整数値や 0.5,-0.5 などの特別な値の場合は,より高速なアルゴリズムが用いられます.
乱数生成器を初期化します.
パラメタ: | seed (int64) – 乱数列を初期化するための 64 ビットの数値. |
---|
この関数は乱数生成器を初期化し,その状態を表す構造体を返します.その状態構造体へのポインタが,関数 RandInt , RandReal , RandArr に渡されます.現在の実装では,繰り上げ付き乗算アルゴリズム(multiply-with-carry)が利用されています.
配列を乱数で埋め,RNG の状態を更新します.
パラメタ: |
|
---|
この関数は,一様分布した乱数,あるいは正規分布した乱数を用いて出力配列を埋めます.
32 ビット符号なし整数型の乱数を返し,RNG の状態を更新します.
パラメタ: | rng (CvRNG) – RandInit によって初期化され,オプションで RandSetRange によってカスタマイズされる RNG 状態構造体へのポインタ(後者の関数は,この関数の結果に影響しません). |
---|
この関数は,一様分布に従う 32 ビット符号なし整数型の乱数を返し,RNG の状態を更新します.これは,C言語のランタイムライブラリの rand() 関数に類似しています.しかし,rand() が 0 から RAND_MAX ( または ,プラットホームに依存)までの値を返すの対して,この関数では常に 32 ビットの値を生成します.
この関数は,点座標,領域サイズ,テーブルインデックスなどの乱数値を生成するのに用いることができます.特定範囲内の整数は剰余演算によって生成でき,特定範囲内の浮動小数点数は,値の範囲を 0...1 にスケーリングするように割算することで生成できます.
浮動小数点型の乱数を返し,RNG の状態を更新します.
パラメタ: | rng (CvRNG) – RNG によって初期化された RNG 状態構造体へのポインタ. |
---|
この関数は,0 から 1 の範囲(1自身は含まれない)の一様分布に従う浮動小数点型の乱数を返します.
行列をベクトルに変換します.
パラメタ: |
|
---|
この関数は,入力行列の各行(あるいは各列)を 1 次元ベクトルの集合として扱い,その集合に対して指定された処理を行うことで行列をベクトルに変換します.例えば,ラスタ画像の水平,垂直方向への射影を計算することができます. CV_REDUCE_SUM や CV_REDUCE_AVG の場合は,計算精度を保つために(桁溢れしないように)出力ベクトル要素のビット深度を入力よりも大きくとるべきです.また,これらの 2 つのモードの場合は,マルチチャンネル画像を扱うこともできます.
コピー元配列を用いて,コピー先配列をタイル状に埋めます.
パラメタ: |
---|
この関数は,コピー元配列を繰り返しコピーして,コピー先配列を埋めます:
dst(i,j)=src(i mod rows(src), j mod cols(src))
コピー先配列は,コピー元配配列より大きくても小さくても構いません.
画像全体が操作対象となるように ROI をリセットして,ROI 構造体を解放します.
パラメタ: | image (IplImage) – 画像ヘッダへのポインタ. |
---|
これは,以下の操作に似ています.
cv.SetImageROI(image, (0, 0, image.width, image.height))
cv.SetImageCOI(image, 0)
データをコピーせずに行列/画像の形状を変更します.
パラメタ: |
|
---|
この関数は,与えられた配列を元に CvMat ヘッダを初期化します.これは,元の配列とは異なる形状(チャンネル数や行数が異なる)で,元の配列と同じデータへのポインタを持つ新しい配列ヘッダとなります.
データをコピーせずに多次元配列の形状を変更します.
パラメタ: |
|
---|
arr として同じデータを共有するものの,異なる次元または異なるチャンネル数の,新しい CvMatND を返します.唯一の要件は,データの総長が変化しないことです.
>>> import cv
>>> mat = cv.CreateMatND([24], cv.CV_32FC1)
>>> print cv.GetDims(cv.ReshapeMatND(mat, 0, [8, 3]))
(8, 3)
>>> m2 = cv.ReshapeMatND(mat, 4, [3, 2])
>>> print cv.GetDims(m2)
(3, 2)
>>> print m2.channels
4
浮動小数点数を,最も近い整数値に変換します.
パラメタ: | value (float) – 入力される浮動小数点値. |
---|
アーキテクチャによっては,この関数は,標準のキャスト操作よりもかなり速い場合があります.引数の絶対値が よりも大きい場合の結果は不定です.また,特別な値( , NaN )は扱うことができません.
浮動小数点数を,その値以下の最も近い整数値に変換します.
パラメタ: | value (float) – 入力される浮動小数点値. |
---|
アーキテクチャによっては,この関数は,標準のキャスト操作よりもかなり速い場合があります.引数の絶対値が よりも大きい場合の結果は不定です.また,特別な値( , NaN )は扱うことができません.
浮動小数点数を,その値以上の最も近い整数値に変換します.
パラメタ: | value (float) – 入力される浮動小数点値. |
---|
アーキテクチャによっては,この関数は,標準のキャスト操作よりもかなり速い場合があります.引数の絶対値が よりも大きい場合の結果は不定です.また,特別な値( , NaN )は扱うことができません.
スケーリングされた配列ともう1つの配列の和を求めます.
パラメタ: |
---|
この関数は,スケーリングされた配列ともう 1 つの配列の和を求めます:
すべての入出力配列は,同じ型,同じサイズでなければいけません.
配列の各要素に与えられた値をセットします.
パラメタ: |
---|
この関数は,スカラ値 value を,配列の指定された要素すべてにコピーします:
配列 arr が, IplImage 型である場合,ROI は利用されますが COI を設定してはいけません.
特定の配列要素をセットします.
パラメタ: |
---|
特定の配列要素をセットします.この配列は,2 次元でなければいけません.
特定の配列要素をセットします.
パラメタ: |
---|
特定の配列要素をセットします.この配列は,3 次元でなければいけません.
特定の配列要素をセットします.
パラメタ: |
---|
特定の配列要素をセットします.インデックスリストの長さは,この配列の次元と一致していなければいけません.
ユーザデータを配列のヘッダに割り当てます.
パラメタ: |
|
---|
この関数は,ユーザデータを配列のヘッダに割り当てます.このヘッダは,関数 cvCreate*Header , cvInit*Header あるいは Mat (行列の場合)を用いて,あらかじめ初期化しておく必要があります.
行列をスカラ倍された単位行列として初期化します.
パラメタ: |
---|
この関数は,行列をスカラ倍された単位行列として初期化します:
IplImage に COI を設定します.
パラメタ: |
|
---|
ROI が NULL に設定されており,COI が 0 ではない 場合,COIが確保されます. ほとんどの OpenCV の関数は,COI をサポート しません .よって,画像や行列のそれぞれのチャンネルを処理する場合, チャンネルを( Copy や Split によって)別々の画像や行列にコピーしてから処理を行い, 必要ならばその結果を( Copy や Merge によって)再びコピーして戻します.
与えられた矩形領域を,画像の ROI として設定します.
パラメタ: |
---|
元の画像の ROI が NULL であり rect が画像全体ではない場合,ROI 構造体が確保されます.
ほとんどの OpenCV の関数が ROI をサポートしており,矩形の部分画像を別の画像として扱うことができます.例えば,すべてのピクセル座標は,元画像の原点からではなく,ROI の原点(左上あるいは左下)からカウントされます.
特定の配列要素をセットします.
パラメタ: |
|
---|
特定の配列要素をセットします.この配列は,1 次元でなければいけません.
特定の配列要素をセットします.
パラメタ: |
|
---|
特定の配列要素をセットします.この配列は,2 次元でなければいけません.
特定の配列要素をセットします.
パラメタ: |
|
---|
特定の配列要素をセットします.この配列は,3 次元でなければいけません.
特定の配列要素をセットします.
パラメタ: |
|
---|
特定の配列要素をセットします.インデックスリストの長さは,この配列の次元と一致していなければいけません.
この関数は,配列をクリアします.密な配列(CvMat,CvMatND,IplImage)に対する cvZero(array) は,cvSet(array,cvScalarAll(0),0) と等価です. 疎な配列の場合は,すべての要素が削除されます.
連立一次方程式,あるいは最小二乗問題を解きます.
パラメタ: |
---|
この関数は,連立一次方程式あるいは最小二乗問題を解きます(後者は,SVD によって求められます):
CV_LU の手法が用いられる場合, src1 が正則行列であれば 1 を返し,そうでなければ 0 を返します. 後者の場合, dst の値は有効なものではありません.
三次方程式の実根を求めます.
パラメタ: |
---|
この関数は,3 次方程式の実根を求めます:
coeffs が 4 要素のベクトルである場合:
coeffs が 3 要素のベクトルである場合:
この関数は,求めた実根の個数を返し,その実根は root 配列に格納されます.実根が1つだけの場合,配列の残りの要素は 0 で埋められます.
マルチチャンネル配列を複数のシングルチャンネル配列に分割します.または,配列から 1 つのチャンネルだけを抜き出します.
パラメタ: |
---|
この関数は,マルチチャンネル配列を複数のシングルチャンネル配列に分割します.この操作には 2 つのモードが存在します. 入力配列が N チャンネルで,引数の最初の N 個のチャンネルが NULL ではない場合,すべてのチャンネルが抜き出されます. 引数の最初の N 個のチャンネルのうち1つだけが NULL ではない場合,そのチャンネルだけが抜き出されます. そのどちらでもない場合([NULL,NULL,NULL,NULL],[NULL,notNULL,notNULL,NULL]など),エラーとなります. 残りの出力チャンネル(最初のN個より後ろ)は,常にNULLでなければいけません. COI を設定した IplImage 画像から1つのチャンネルを抜き出すためには, Copy を利用することもできます.
平方根を求めます.
パラメタ: | value (float) – 浮動小数点型の入力値. |
---|
この関数は,引数で与えられた入力値の平方根を求めます.入力値が負の場合は,処理結果は不定です.
2 つの配列の要素毎の差を求めます.
パラメタ: |
---|
この関数は,1 つの配列からもう 1 つの配列を引きます:
dst(I)=src1(I)-src2(I) if mask(I)!=0
マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません. また,有限の範囲に値をとる型は,この処理により飽和します.
スカラ値から配列要素を引きます.
パラメタ: |
---|
この関数は,スカラ値から入力配列の各要素を引きます:
dst(I)=value-src(I) if mask(I)!=0
マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません. また,有限の範囲に値をとる型は,この処理により飽和します.
配列からスカラ値を引きます.
パラメタ: |
---|
この関数は,入力配列の各要素からスカラ値を引きます:
dst(I)=src(I)-value if mask(I)!=0
マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません. また,有限の範囲に値をとる型は,この処理により飽和します.
関数 cvSum は,各チャンネルごとに配列要素値の総和 S を求めます:
配列が IplImage で COI が設定されている場合,この関数は指定されたチャンネルのみを処理し,その結果を戻り値の CvScalar の 1 番目の要素 に格納します.
特異値の後退代入を行います.
パラメタ: |
|
---|
この関数は,特異値分解された行列 A ( SVD の説明を参照してください)と行列 B に対して後退代入を行います:
ここで,
なお, は,行列のデータ型に依存する微小な値です.
この関数は, Invert や Solve の内部で SVD と共に用いられます.これらの「低レベルな」関数( SVD と SVBkSb )を用いる状況があるとすれば,これらに対応する高レベルな関数( Invert と Solve )内部でのテンポラリな行列の確保を避けるためでしょう.
浮動小数点型の実数行列の特異値分解を行います.
パラメタ: |
|
---|
この関数は,行列 A を 1 つの対角行列と 2 つの直交行列の積に分解します:
ここで は,特異値を対角要素にもつ対角行列であり,特異値を要素とする1次元ベクトルとして表現する事もできます. すべての特異値は非負であり,( と の列と共に)降順にソートされます.
SVD アルゴリズムは,数値的に安定しており,その典型的な応用例には以下のものがあります:
各配列要素に対して,行列変換を行います.
パラメタ: |
---|
この関数は,配列 src の各要素に行列変換を施し,その結果を dst に代入します:
つまり, N チャンネル配列 src の各要素を N 個の要素を持つベクトルとして扱い, の変換行列 transmat と並進ベクトル shiftvec によって変換した結果を, M チャンネル配列 dst の要素に格納します. 同次座標系の場合, transmat は の行列であり,最右列は並進ベクトルとして扱われます.
入出力配列は共に,同じビット深度,同じサイズ(同じ ROI サイズ)でなければいけません.また, transmat と shiftvec は,その要素が浮動小数点型実数でなくていけません.
この関数は,n-次元の点群の幾何学変換,色空間における任意の線形変換,チャンネルの入れ替えなどに利用できます.
この関数は,入力行列 src1 を転置します:
複素行列の場合,複素数の共役化は行われないので,これとは別に行う必要があることに注意してください:この例として, XorS のサンプルコードを参照してください.
2つの配列の要素毎に,ビット単位の排他的論理和を計算します.
パラメタ: |
---|
この関数は,2つの配列の要素毎にビット単位の排他的論理和を計算します:
dst(I)=src1(I)^src2(I) if mask(I)!=0
実際の計算の前に,スカラ値は配列と同じ型に変換されます.また,浮動小数点型配列の場合は,それらのビット表現が処理に用いられます.マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
スカラ値と配列の要素毎に,ビット単位の排他的論理和を計算します.
パラメタ: |
---|
この関数は,スカラ値と配列要素毎に,ビット単位の論理和を計算します:
dst(I)=src(I)^value if mask(I)!=0
実際の計算の前に,スカラ値は配列と同じ型に変換されます.また,浮動小数点型配列の場合は,それらのビット表現が処理に用いられます.マスクを除くすべての入出力配列は,同じ型,同じサイズ(または ROI サイズ)でなければいけません.
このコードは,次のような結果を出力します:
(1.0,0.0) (0.0,-1.0) (-1.0,0.0) (0.0,1.0)
シングルチャンネルの浮動小数点型行列の指定された要素を返します.
パラメタ: |
|
---|
この関数は, GetReal2D の高速バージョンで,シングルチャンネルの浮動小数点型行列に対してのみ利用できます.これは,インライン展開,配列や要素の種類チェックが最小限,行と列の範囲チェックはデバックモード時のみ,といった理由で高速に動作します.
シングルチャンネル,浮動小数点型行列の指定された要素を変更します.
パラメタ: |
|
---|
この関数は, SetReal2D の高速バージョンで,シングルチャンネルの浮動小数点型行列に対してのみ利用できます.これは,インライン展開,配列や要素の種類チェックが最小限,行と列の範囲チェックはデバックモード時のみ,といった理由で高速に動作します.