在普通的几何空间里,向量是一个带方向和大小的量,但一旦建立了坐标系,向量就与有序数组(x,y,z)对应起来了。这样的3维有序数组(x,y,z)就是一个向量,但也可以说是一个一行三列的矩阵。
矩阵的每一行(列)都构成行(列)向量。对矩阵施行初等行变换,实质是行向量的线性运算。线性方程组解的结构涉及到解向量的线性组合,而解向量的读取又与矩阵的列向量密切相关。
注意,协方差矩阵是一个对称矩阵,在计算机处理中,一般协方差矩阵的计算是这样的:先让样本矩阵中心化,即每一维度减去该维度的均值(这样一来,每一维度上的均值为0),然后直接使用新得到的样本矩阵乘以它的转置,最后除以(N-1)。OpenCV正是采用了这种算法。
Scalar类
scalar的意思是标量
typedef struct Scalar
{
double val[4];
}Scalar;
scalar是由一个由长度为4的数组作为元素构成的结构体,最多可以存储四个值,没有提供的默认值为0。
常使用的场景如下:
Mat M(7,7,CV_32FC2,Scalar(1,3));
上面的代码表示:创建一个2通道,且每个通道的值都为(1,3),深度为32,7行7列的图像矩阵。CV_32F表示每个元素的值的类型为32位浮点数,C2表示通道数位为2,Scalar(1,3)表示对矩阵每个元素都赋值为(1,3),第一个通道中的值都是1,第二个通道中的值都是3.
cv::mean()