aihot  2017-05-13 18:05:33  OpenCV |   查看评论   
  如果矩阵正定对称,用奇异值分解的方法解决cvSVD();
特征向量特征值
void cvEigenVV(CvArr* mat, CvArr*evects, CvArr* evals, doubleeps=0);//计算对称矩阵的特征值和特征向量,evects输出特征向量,evals输出特征值,eps雅可比方法停止参数
   要求三个矩阵都是浮点类型,10×10以下该方法有效,20×20以上的矩阵不能计算出结果,为节约计算量,eps通常设为DBL_EPSILON(10^-15)
   如果给定的矩阵是对称正定矩阵,那么考虑使用cvSVD();
协方差
void cvCalcCovarMatrix(const CvArr**vects, int count, CvArr* cov_mat, CvArr* avg, intflags);//给定一组大小和类型相同的向量,向量的个数,计算标记,输出协方差正阵和每个向量的平均值矩阵
   CV_COVAR_NORMAL   普通计算协方差和平均值,输出的是n×n的协方差阵
   CV_COVAR_SCRAMBLED   快速PCA“Scrambled”协方差,输出的是m×m的协方差阵
   CV_COVAR_USE_AVERAGE   平均值是输入的
   CV_COVAR_SCALE   重新缩放输出的协方差矩阵
       四个flag通过并运算协同发挥作用,前两个不能并
CvSize cvMahalonobis(const CvArr* vec1,const CvArr* vec2,CvArr*mat);
int cvSolve(const CvArr* src1, const CvArr* src2, CvArr* dst, intmethod=CV_LU);//Solves a linear system or least-squaresproblem.
void cvSVD(CvArr* A, CvArr* W, CvArr* U=NULL, CvArr* V=NULL, intflags=0);//Performs singular value decomposition of a realfloating-point matrix.
void cvSVBkSb(const CvArr* W, const CvArr* U, const CvArr* V, constCvArr* B, CvArr* X, int flags);//Performs singular value backsubstitution.

数组比较
void cvCmp(const CvArr* src1, constCvArr* src2, CvArr* dst, int cmp_op);//两矩阵比较运算
    CV_CMP_EQ -src1(I) 是否相等
    CV_CMP_GT -src1(I) 是否大于
    CV_CMP_GE -src1(I) 是否大于等于
    CV_CMP_LT -src1(I) 是否小于
    CV_CMP_LE -src1(I) 是否小于等于
    CV_CMP_NE -src1(I) 是否不等
       如果判断为假,dst设为0,如果判断为真,dst设为0xff
void cvCmpS(const CvArr* src, double value, CvArr* dst, intcmp_op);//矩阵和一个数字比较运算

矩阵内转换 类型转换
void cvConvertScale(constCvArr* src,CvArr* dst,double scale,doubleshift);//矩阵首先乘以scale再加上shift,然后把src中的数据类型转换成dst类型,但是src和dst通道数需要相等
void cvConvertScaleAbs(const CvArr* src,CvArr* dst,doublescale,double shift);//在src到dst类型转换前,先做绝对值
void cvCvtColor(const CvArr* src,CvArr* dst, int code);//图像颜色空间转换,src要为8U 16U 32F,dst的数据类型需要和src相同,通道数看code
  

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自openCV矩阵操作

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]