2012-04-04 8 views
0

行列の平均を求めようとしています。私は4800 x 5マトリックスを作成し、マトリックスの各行の平均を求めて4800 x 1マトリックスにしたいと考えています。私は、これは、各行のすべての要素をまとめて5で割ることを意味しています。関数cvAvgを検討していますが、これまでの使用例は見つかりません。私は5つの画像を4800 x 1のマトリックスに変換し、それらを組み合わせて4800 x 5のスーパーマトリックスを作成する私のコードを以下に示します。次のステップは、スーパーマトリックスの平均を見つけることです。どうか誰かが私を助けることができれば、私はとても感謝しています。私は何かを理解していないよない限り行列の平均を求める

+0

正確に合計を5で除算するのを止めていますか?ショートカットのための長い道のりのようです... –

+0

cvAvgを使用する代わりに、行要素を追加して個別に5ずつ加算することを意味しますか? –

答えて

0

あなただけで行うことはできません:あなたはcvAvgを使用した場合

CvMat* avgMat = cvCreateMat(4800, 1, CV_8UC1); 

for(int i = 0; i < 4800; ++i) 
{ 
    CV_MAT_ELEM(*avgMat , float, i, 0) = (CV_MAT_ELEM(*col0, float, i, 0) + 
              CV_MAT_ELEM(*col1, float, i, 0) + 
              CV_MAT_ELEM(*col2, float, i, 0) + 
              CV_MAT_ELEM(*col3, float, i, 0) + 
              CV_MAT_ELEM(*col4, float, i, 0) 
              )/5; 
} 

は()あなたが道については本当にラウンドのように思える平均、各要素のカスタムマスクを必要とするだろう同じことをするのです。

+0

ありがとうございます!私はcvAvgの使用に関する懸念を理解しています。あなたのコードは完璧に動作しました。もう一度感謝しています。あなたは私が何をしようとしているのか理解していました。 –

関連する問題