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 にセットされます.
立方根を求めます.
Parameter: | 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 ではない要素を数えます.
Parameter: | arr (CvArr) – シングルチャンネルの配列,あるいは COI が設定されたマルチチャンネル画像 |
---|
この関数は, arr 中の 0 ではない要素数を返します:
IplImage の場合は,ROI と COI がサポートされます.
配列データ領域を確保します.
Parameter: | arr – 配列のヘッダ |
---|
この関数は,画像,行列あるいは多次元配列のデータを確保します.行列の場合は OpenCV の確保関数が用いられます.IplImage の場合も OpenCV の関数が用いられますが, CV_TURN_ON_IPL_COMPATIBILITY が呼ばれている場合は例外的に,IPL 関数によってデータ領域が確保されます.
画像ヘッダを作成しますが,データ領域の確保は行いません.
パラメタ: |
|
---|
行列のヘッダを作成し,データ領域を確保します.
パラメタ: |
|
---|
行列のデータ領域を確保せずに,行列のヘッダのみを作成します.
パラメタ: |
|
---|
この関数は,新しい行列のヘッダを作成し,そのポインタを返します.行列データは, CreateData を用いて確保するか,あるいは,ユーザが確保したデータを SetData によって明示的にセットします.
多次元の密な配列のヘッダを作成し,データ領域を確保します.
パラメタ: |
|
---|
これは,以下の形式を短縮したものです:
行列のデータ領域を確保せずに,行列のヘッダのみを作成します.
パラメタ: |
|
---|
この関数は,多次元の密な配列のヘッダを確保します.配列データは, CreateData を用いて確保するか,あるいは,ユーザが確保したデータを SetData によって明示的にセットします.
2つの3次元ベクトルの外積を求めます.
パラメタ: |
---|
この関数は,2つの3次元ベクトルの外積を求めます:
あるいは:
Split と同義です.
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 は,入力配列中の,指定範囲内の複数列を返します.
配列次元のリストを返します.
Parameter: | arr – 入力配列 |
---|
この関数は,入力配列の各次元の要素数を要素とするリストを返します. IplImage や CvMat の場合は,常に長さ 2 のリストを返します.
この関数は, CreateMat の説明で述べられた配列要素の種類を返します: CV_8UC1 ... CV_64FC4 .
任意の配列に対する画像ヘッダを返します.
Parameter: | arr – 入力配列 |
---|
関数 cvGetImage は,入力配列を画像とみなした場合の画像ヘッダを返します. 入力配列になり得るものは,行列 - CvMat と,画像 - IplImage* です. 入力が画像の場合は,単に入力ポインタをそのまま返します.入力が CvMat の場合は, imageHeader 構造体を入力行列のパラメータで初期化します. ROIが設定された IplImage から CvMat への変換を行い,再び CvMat から IplImage に戻した場合,異なるヘッダが返される可能性があります. したがって,画像の長さをその幅とアライメントから計算するような IPL 関数は,この関数の結果として得られる画像に対しては失敗する可能性があります.
IplImage の COI を返します.この戻り値は, SetImageCOI の引数 coi に対応します.
ROI が設定されていない場合は,画像全体を表す cvRect(0,0,image->width,image->height) が返されます.
任意の配列に対する行列ヘッダを返します.
Parameter: | arr – 入力配列 |
---|
この関数は,入力配列を行列とみなした場合の行列ヘッダを返します.
入力配列になり得るものは,行列 - 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 サイズを返します.
Parameter: | size0 (int) – ベクトルサイズ |
---|
この関数は,DFTサイズ N を返します.この N は,DFTを高速に実行できるサイズのうちで size0 以上の最小値です.現在の実装では,ある , , に対して となっています.
size0 が大きすぎる( INT_MAX に非常に近い)場合,この関数は負の値を返します.
配列中の,指定範囲内の複数行を返します.
パラメタ: |
---|
関数 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 サイズ)でなければいけません.
平方根の逆数を求めます.
Parameter: | value (float) – 浮動小数点型の入力値 |
---|
この関数は,引数で与えられた入力値の平方根の逆数を求めます.この関数は,通常, 1./sqrt(value) よりも高速です.入力値が 0以下の場合の処理結果は不定です.また,特別な値( , NaN )は扱うことができません.
Invert
逆行列,または擬似逆行列を求めます.
パラメタ: |
|
---|
この関数は, src1 の逆行列を求め,それを src2 に格納します.
LU (ガウスの消去法)を用いた場合,この関数は src1 の行列式を返します(もちろん,src1 は正方でなければならない).この場合の戻り値が 0 の場合,逆行列が計算できなかったという事であり, src2 の要素は 0 で埋められます.
SVD を用いた場合,この関数は src1 の条件数の逆数(最大の特異値に対する最小の特異値の比)を返します. src1 が 0 ならば,この戻り値も 0 になります.また,SVD を用いた場合, src1 が非正則な行列ならば,その擬似逆行列を求めます.
無限大であるか否かを判定します.
Parameter: | value (float) – 浮動小数点型の入力値 |
---|
この関数は,引数で与えられた入力値が (無限大;IEEE754 で定義されている)の場合は 1 を返し,そうでなければ 0 を返します.
NaN であるか否かを判定します.
Parameter: | 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次元配列の場合,極値の座標が min_loc->x と max_loc->x に格納されます.
配列の各要素とスカラー値を比較して小さい方を求めます.
パラメタ: |
---|
この関数は,配列の各要素とスカラー値を比較して大きい方を求めます:
すべての入力配列は シングルチャンネルで,同じデータ型,同じサイズ(または ROI サイズ)でなければいけません.
Flip と同義です.
入力配列から出力配列へ,指定された(複数の)チャンネルをコピーします.
パラメタ: |
|
---|
この関数は, 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]
])
ScaleAdd と同義です.
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 などの特別な値の場合は,より高速なアルゴリズムが用いられます.
乱数生成器を初期化します.
Parameter: | seed (int64) – 乱数列を初期化するための64ビットの数値 |
---|
この関数は乱数生成器を初期化し,その状態を表す構造体を返します.その状態構造体へのポインタが,関数 RandInt , RandReal , RandArr に渡されます.現在の実装では,繰り上げ付き乗算アルゴリズム(multiply-with-carry)が利用されています.
配列を乱数で埋め,RNG の状態を更新します.
パラメタ: |
|
---|
この関数は,一様分布した乱数,あるいは正規分布した乱数を用いて出力配列を埋めます.
32ビット符号なし整数型の乱数を返し,RNG の状態を更新します.
Parameter: | rng (CvRNG) – RandInit によって初期化され,オプションで RandSetRange によってカスタマイズされるRNG状態構造体へのポインタ(後者の関数は,この関数の結果に影響しません) |
---|
この関数は,一様分布に従う 32 ビット符号なし整数型の乱数を返し,RNG の状態を更新します.これは,C言語のランタイムライブラリの rand() 関数に類似しています.しかし,rand() が 0 から RAND_MAX ( または ,プラットホームに依存)までの値を返すの対して,この関数では常に32ビットの値を生成します.
この関数は,点座標,領域サイズ,テーブルインデックスなどの乱数値を生成するのに用いることができます.特定範囲内の整数は剰余演算によって生成でき,特定範囲内の浮動小数点数は,値の範囲を 0...1 にスケーリングするように割算することで生成できます.
浮動小数点型の乱数を返し,RNG の状態を更新します.
Parameter: | 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 構造体を解放します.
Parameter: | image (IplImage) – 画像ヘッダへのポインタ |
---|
これは,以下の操作に似ています.
cv.SetImageROI(image, (0, 0, image.width, image.height))
cv.SetImageCOI(image, 0)
データをコピーせずに行列/画像の形状を変更します.
パラメタ: |
|
---|
この関数は,与えられた配列を元に CvMat ヘッダを初期化します.これは,元の配列とは異なる形状(チャンネル数や行数が異なる)で,元の配列と同じデータへのポインタを持つ新しい配列ヘッダとなります.
データをコピーせずに多次元配列の形状を変更します.
パラメタ: |
|
---|
この関数は, Reshape の拡張バージョンです.この関数は,多次元配列を扱うことができ(普通の画像と行列も扱えます),次元数を変更する事も可能です.
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
浮動小数点数を,最も近い整数値に変換します.
Parameter: | value (float) – 入力される浮動小数点値 |
---|
アーキテクチャによっては,この関数は,標準のキャスト操作よりもかなり速い場合があります.引数の絶対値が よりも大きい場合の結果は不定です.また,特別な値( , NaN )は扱うことができません.
浮動小数点数を,その値以下の最も近い整数値に変換します.
Parameter: | value (float) – 入力される浮動小数点値 |
---|
アーキテクチャによっては,この関数は,標準のキャスト操作よりもかなり速い場合があります.引数の絶対値が よりも大きい場合の結果は不定です.また,特別な値( , NaN )は扱うことができません.
浮動小数点数を,その値以上の最も近い整数値に変換します.
Parameter: | 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) と等価です.
疎な配列の場合は,全ての要素が削除されます.
連立1次方程式,あるいは最小2乗問題を解きます.
パラメタ: |
---|
この関数は,連立1次方程式あるいは最小2乗問題を解きます(後者は,SVD によって求められます):
CV_LU の手法が用いられる場合, src1 が正則行列であれば 1 を返し,そうでなければ 0 を返します. 後者の場合, dst の値は有効なものではありません.
3次方程式の実根を求めます.
パラメタ: |
---|
この関数は,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 を利用することもできます.
平方根を求めます.
Parameter: | 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 の高速バージョンで,シングルチャンネルの浮動小数点型行列に対してのみ利用できます.これは,インライン展開,配列や要素の種類チェックが最小限,行と列の範囲チェックはデバックモード時のみ,といった理由で高速に動作します.