一個僅接受兩個輸入向量的協方差計算函數

輸入參數說明:


基於opencv


_src 一共兩行,每行是一個樣本數據。


如果兩個樣本如下: A = {1 2 3 4 5 6} ; B = {7 8 9 4 5 6}

則_src應該是:

1 2 3 4 5 6

7 8 9 4 5 6


double covRowTwoVec(cv::Mat _src)
{
	CV_Assert(_src.rows == 2);
	cv::Mat src;
	_src.convertTo(src, CV_64FC1);

	std::vector<double> means(2);

	means[0] = (cv::mean(src.row(0))).val[0];
	means[1] = (cv::mean(src.row(1))).val[1];

	std::vector<double> stdiffs;

	cv::Mat temp = src.row(0) - means[0]*cv::Mat::ones(1, src.cols, CV_64FC1);
	cv::Mat temp2 = src.row(1) - means[1] * cv::Mat::ones(1, src.cols, CV_64FC1);

	cv::Mat res = temp*temp2.t();

	return res.at<double>(0)/src.cols;

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章