6
我尋找以產生(在OpenCV中)隨機數的矩陣(2×N個)均值爲0,方差爲1的最佳解決方案,如函數randn() 。的OpenCV:randn()在Matlab發電機等在MATLAB
有一個在OpenCV的庫中一個randn()
功能,但我不知道如何參數傳遞給這個函數產生均值爲0,方差爲1
我尋找以產生(在OpenCV中)隨機數的矩陣(2×N個)均值爲0,方差爲1的最佳解決方案,如函數randn() 。的OpenCV:randn()在Matlab發電機等在MATLAB
有一個在OpenCV的庫中一個randn()
功能,但我不知道如何參數傳遞給這個函數產生均值爲0,方差爲1
OpenCV的數字有randn()功能,也是一個RNG類。以下是您可能要替換的Matlab代碼以及等效的OpenCV代碼。
Matlab的:
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()
使用RNG
。如果使用randn()
的缺點是你失去了對種子的控制。
如果上面的matrix2xN
有多個通道,則每個通道使用不同的平均值/ sigma。在這種情況下,您需要增加平均值和西格瑪中的行數(或列數)以匹配matrix2xN中的通道數量。
感謝您的回答。 +1。作爲一個旁註,在API設計中,爲了指定平均值或標準偏差,必須指定一個「cv :: Mat」,這似乎很浪費......不是標量或cv :: Scalar'會更合適嗎?奇怪的。 – rayryeng