6

Matlab の関数randn()のように、(OpenCV で) 平均 0 と分散 1 の乱数の行列 (2xN) を生成するための最良のソリューションを探しています。

OpenCV ライブラリに関数がありますが、randn()この関数に引数を渡して平均 0、分散 1 の数値を生成する方法がわかりません。

4

1 に答える 1

12

OpenCV にはrandn()関数とRNGクラスがあります。以下は、置き換えが必要な Matlab コードと、同等の OpenCV コードです。

マトラブ:

matrix2xN = randn(2,N)

OpenCV:

cv::Mat mean = cv::Mat::zeros(1,1,CV_64FC1);
cv::Mat sigma= cv::Mat::ones(1,1,CV_64FC1);
cv::RNG rng(optional_seed);
cv::Mat matrix2xN(2,N,CV_64FC1);
rng.fill(matrix2xN, cv::RNG::NORMAL, mean, sigma);

また

cv::Mat mean = cv::Mat::zeros(1,1,CV_64FC1);
cv::Mat sigma= cv::Mat::ones(1,1,CV_64FC1);
cv::randn(matrix2xN,  mean, sigma);

内部的には、OpenCV はrandn()using を実装してRNGいます。使用する場合の欠点randn()は、シードを制御できなくなることです。

matrix2xN上記のチャネルが複数ある場合は、チャネルごとに異なる平均/シグマが使用されます。その場合、matrix2xN のチャネル数と一致するように、平均とシグマの行 (または列) の数を増やす必要があります。

于 2013-09-27T03:54:54.713 に答える