CXCORE リファレンス マニュアル
- 基本構造体(Basic Structures)
- 配列操作(Operations on Arrays)
- 動的構造体(Dynamic Structures)
- 描画関数(Drawing Functions)
- データ永続性と実行時型情報(Data Persistence and RTTI)
- その他の関数(Miscellaneous Functions)
- エラーハンドリングとシステム関数(Error Handling and System Functions)
配列操作(Operations on Arrays)
統計(Statistics)
CountNonZero
配列要素において 0 ではない要素をカウントする
int cvCountNonZero( const CvArr* arr );
- arr
- 配列(シングルチャンネルまたはCOIがセットされたマルチチャンネルの画像).
関数 cvCountNonZero は以下のように,入力配列内の 0 でない要素数を返す.
result = sumI arr(I)!=0配列が IplImage の場合, ROI,COI の両方に対応している.
Sum
配列要素の総和を計算する
CvScalar cvSum( const CvArr* arr );
- arr
配列.
関数 cvSum は以下のように,配列要素の総和 S を各チャンネルで独立に計算する.
Sc = sumI arr(I)c配列のタイプが IplImage で COI がセットされている場合,指定されたチャンネルのみを処理し,総和を1番目のスカラー値(S0)として保存する.
Avg
配列要素の平均値を計算する
CvScalar cvAvg( const CvArr* arr, const CvArr* mask=NULL );
- arr
- 配列.
- mask
- オプションの処理マスク.
関数 cvAvg は,配列要素の平均値 M を各チャンネルで独立に計算する.
N = sumI mask(I)!=0 Mc = 1/N • sumI,mask(I)!=0 arr(I)c配列のタイプが IplImage で COI がセットされている場合,指定されたチャンネルのみを処理し,平均値を1番目のスカラー値(M0)として保存する.
AvgSdv
配列要素の平均と標準偏差を計算する
void cvAvgSdv( const CvArr* arr, CvScalar* mean, CvScalar* std_dev, const CvArr* mask=NULL );
- arr
- 配列.
- mean
- 計算結果の平均値へのポインタ.必要でない場合は NULL.
- std_dev
- 計算結果の標準偏差へのポインタ.
- mask
- オプションの処理マスク.
関数 cvAvgSdv は,配列要素の平均と標準偏差を各チャンネルで独立に計算する.
N = sumI mask(I)!=0 meanc = 1/N • sumI,mask(I)!=0 arr(I)c std_devc = sqrt(1/N • sumI,mask(I)!=0 (arr(I)c - Mc)2)配列のタイプが IplImage で COI がセットされている場合,指定されたチャンネルのみを処理し,平均値と標準偏差をそれぞれ1番目のスカラー値(M0と S0)として保存する.
MinMaxLoc
配列あるいは部分配列内の最小値と最大値を求める
void cvMinMaxLoc( const CvArr* arr, double* min_val, double* max_val,
CvPoint* min_loc=NULL, CvPoint* max_loc=NULL, const CvArr* mask=NULL );
- arr
- 入力配列(シングルチャンネルまたはCOIがセットされたマルチチャンネル).
- min_val
- 戻り値の最小値へのポインタ.
- max_val
- 戻り値の最大値へのポインタ.
- min_loc
- 戻り値の最小値を持つ位置へのポインタ.
- max_loc
- 戻り値の最大値を持つ位置へのポインタ.
- mask
- 部分配列を指定するためのオプションのマスク.
関数 MinMaxLoc は,配列要素の中から最小値・最大値とその位置を求める. 各極値は配列全体または選択されたROI(IplImageの場合)をスキャンして求める. mask が NULL でない場合は,指定された領域のみをスキャンする. マルチチャンネル配列の場合,入力は COI がセットされた IplImage データタイプでなければならない. 多次元配列の場合は,min_loc->xと max_loc->yには,極値の座標がそのまま入る.
Norm
配列の絶対値ノルム(absolute array norm),絶対値差分ノルム(absolute difference norm),相対値差分ノルム(relative difference norm)を計算する
double cvNorm( const CvArr* arr1, const CvArr* arr2=NULL, int norm_type=CV_L2, const CvArr* mask=NULL );
- arr1
- 1番目の入力画像.
- arr2
- 2番目の入力画像.NULL の場合,arr1の絶対値ノルムが計算され,そうでない場合は,arr1-arr2 の絶対値あるいは相対値ノルムが計算される.
- normType
- ノルムのタイプ(以下の説明を参照).
- mask
- オプションの処理マスク.
関数 cvNorm は arr2 が NULL の場合,以下のように arr1 の絶対値ノルムを計算する.
norm = ||arr1||C = maxI abs(arr1(I)), (normType = CV_Cの場合)
norm = ||arr1||L1 = sumI abs(arr1(I)), (normType = CV_L1の場合)
norm = ||arr1||L2 = sqrt( sumI arr1(I)2), (normType = CV_L2の場合)
この関数は,arr2 が NULL でない場合,以下のように絶対値あるいは相対値ノルムを計算する.
norm = ||arr1-arr2||C = maxI abs(arr1(I)-arr2(I)), (normType = CV_Cの場合) norm = ||arr1-arr2||L1 = sumI abs(arr1(I)-arr2(I)), (normType = CV_L1の場合) norm = ||arr1-arr2||L2 = sqrt( sumI (arr1(I)-arr2(I))2 ), (normType = CV_L2の場合) もしくは norm = ||arr1-arr2||C/||arr2||C, (normType = CV_RELATIVE_Cの場合) norm = ||arr1-arr2||L1/||arr2||L1, (normType = CV_RELATIVE_L1の場合) norm = ||arr1-arr2||L2/||arr2||L2, (normType = CV_RELATIVE_L2の場合)
関数 cvNorm は計算したノルムを返す.マルチチャンネル配列はシングルチャンネルとして取り扱う.すなわち,すべてのチャンネルの結果が統合される.
Reduce
行列をベクトルへ縮小する
void cvReduce( const CvArr* src, CvArr* dst, int op=CV_REDUCE_SUM );
- src
- 入力行列.
- dst
- 1行(または1列)の出力ベクトル(すべての行/列から指定された方法で計算される).
- dim
- 配列をどのように縮小するかを示すインデックス. 0 は行列を1行ベクトルに縮小する. 1 は行列を1列ベクトルに縮小する. -1 はdst のサイズから次元を解析し,自動的に選択する.
- op
- 縮小処理の種類.以下の値のいずれか.
CV_REDUCE_SUM - 出力は各行(または各列)の総和
CV_REDUCE_AVG - 出力は各行(または各列)の平均ベクトル
CV_REDUCE_MAX - 出力は各行(または各列)における最大値
CV_REDUCE_MIN - 出力は各行(または各列)における最小値
関数 cvReduce は,行列の各行(各列)を1次元ベクトルの集合として取り扱い,その集合に対して指示された処理を行うことによって,入力行列をベクトルに縮小する. 例えば,ラスター画像の水平方向(あるいは垂直方向)への射影を計算するために使うことができる.CV_REDUCE_SUM と CV_REDUCE_AVG の場合は,精度を保つために出力要素のビットデプスを大きくとるべきである.また,マルチチャンネル配列においても,これら二つのモードがサポートされる.