函数原型:
void cv::calcCovarMatrix(
const cv::Mat* samples, // C-array of n-by-1 or 1-by-n matrices
int nsamples, // num matrices pointed to by 'samples'
cv::Mat& covar, // ref of erturn array for covariance
cv::Mat& mean, // ref to return array for mean
int flags, // special variations
int ctype = cv::F64 // output matrix type for covar
);
void cv::calcCovarMatrix(
cv::InputArray samples, // n-by-m matrix,but see 'flags' below
cv::Mat& covar, // ref to return array for covariance
cv::Mat& mean, // ref to return array for mean
int flags, // special variations
int ctype = cv::F64 // output matrix type for covar
);
函数介绍
给定一些向量,假设这些向量表示的点是近似高斯分布的,cv::calcCovarMatrix()将计算这些点的均值和协方差矩阵。可以应用到很多方面,OpenCV有很多附加的flag值,在特定情况下会起作用,这些flag可以用标准的布尔或操作组合在一起。如下是cv::calcCovarMatrix()科恩那个用到的flag参数的值:
flags参数的具体flag值 | 意义 |
cv::COVAR_NORMAL | 计算均值和协方差 |
cv::COVAR_SCRAMBLED | 快速PCA“scrambled”协方差 |
cv::COVAR_USE_AVERAGE | 输入均值而不是计算均值 |
cv::COVAR_SCALE | 重新缩放输出的协方差矩阵 |
cv::COVAR_ROWS | 使用样本的行作为输入向量 |
cv::COVAR_COLS | 使用样本的列作为输入向量 |
cv::calcCovarMatrix()有两个基本的调用方法,第一种是指向cv::Mat对象矩阵的指针和表示矩阵中的矩阵数量的nsamples一起传入函数,这种情况下,矩阵可以是n x 1或1 x n。第二种是传入一个n x m的矩阵,这种情况下,应该提供flag为cv::COVAR_ROWS以指示存在长度为m的n(行)个向量,或者应该提供flag为cv::COVAR_COLS以指示存在长度为n的m(列)个向量。
cv::calcCovarMatrix()函数的输入输出矩阵都应该是相同的浮点型。结果矩阵的尺寸应该是n x n或m x m,取决于计算的是标准协方差还是scrambled协方差,应该注意的是,使用cv::Mat*形式时,samples的向量输入不一定要是一维的,它们也可以是二维对象。
在所有情况下,结果将放在covar中,但avg的确切含义取决于flag的值。
标志cv::COVAR_NORMAL和cv::COVAR_SCRAMBLED是相互排斥的,只能使用其中一种,不能两者同时使用。
1. 如果使用cv::COVAR_NORMAL,函数只能计算均值和协方差。
标准的协方差由长度为n的m个向量计算得到,被定义为平均值向量的第n个元素,由此产生的协方差矩阵是一个n x n的矩阵。因子z是一个可选比例因子,如果没有使用cv::COVAR_SCALE标志,该因子值为1。
2. 如果使用cv::COVAR_SCRAMBLED标志,cv::calcCovarMatrix()将按照如下计算:
该标志计算后得到的协方差矩阵是m x m的矩阵,这个矩阵是用在一些特定算法中,比如对非常大的向量进行快速PCA(比如人脸识别技术中)。
3. 如果输入向量的平均值是已知的,使用cv::COVAR_USE_AVG标志,这种情况下,参数avg用来作为输入而不是输出,以减少计算时间。
4. 如果使用标志cv::COVAR_SCALE用于对计算得到的协方差矩阵进行统一缩放,这是上面提到的因子z。和标志cv::COVAR_NORMAL一起使用时,应用的缩放比例是1.0/m(或等效于1.0/nsamples);如果使用cv::COVAR_SCRAMBLED,那么z的值将是1.0/n(向量长度的倒数)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46187.html