OpenCV 中简单矩阵运算总结

1.矩阵的统计运算
sum(), mean(), meanStdDev(), norm(), countNonZero(),minMaxLoc(),
对应:求和,求均值,求均方差,求范数,求非零元素个数,求最大最小元素及位置。
2。基本数学运算
exp(), log(), pow(), sqrt(), cartToPolar(),polarToCart()
对应:矩阵元素的指数,对数,乘方,开方,计算二维向量的长度和/或者角度,计算极坐标形式的二维向量对应的直角坐标.

3.代数运算和SVD

scaleAdd(), transpose(), gemm(), invert(), solve(),determinant(), trace(), eigen(), SVD,
对应:
计算一个数组缩放后与另一个数组的和(dst(I)=src1(I)*scale + src2(I)),矩阵的转置 dst(i,j)=src(j,i) ,矩阵乘法 dst = alpha*op(src1)*op(src2) + beta*op(src3)这里 op(X) 是 X 或者 XT, 查找矩阵的逆矩阵或伪逆矩阵,求解线性系统或者最小二乘法问题,返回浮点方阵的行列式,返回矩阵的迹,计算对称矩阵的特征值和特征向量,对实数浮点矩阵进行奇异值分解。
5。离散傅里叶变换和离散余弦变换
dft(), idft(), dct(), idct(),
对应:离散傅里叶变换,离散傅里叶反变换,离散余弦变换,离散余弦反变换。
For some operations a more convenient algebraic notation can be used, for example:
Mat delta = (J.t()*J + lambda*Mat::eye(J.cols, J.cols, J.type())).inv(CV SVD)*(J.t()*err);
implements the core of Levenberg-Marquardt optimization algorithm.
.矩阵的点运算

add(), subtract(), multiply(), divide(), absdiff(), bitwise_and(), bitwise_or(), bitwise_xor(), max(),min(), compare()

对应:加,减,点乘,点除,点绝对差,点位运算—与,点位运算—或,点位运算—异或,点最大,点最小,点比较。
Example. Alpha compositing function:

void alphaCompose(const Mat& rgba1,const Mat& rgba2, Mat& rgba dest)
{
    Mat a1(rgba1.size(), rgba1.type()), ra1;
    Mat a2(rgba2.size(), rgba2.type());
    int mixch[]={3, 0, 3, 1, 3, 2, 3, 3};
    mixChannels(&rgba1, 1, &a1, 1, mixch, 4);
    mixChannels(&rgba2, 1, &a2, 1, mixch, 4);
    subtract(Scalar::all(255), a1, ra1);
    bitwise_or(a1, Scalar(0,0,0,255), a1);
    bitwise_or(a2, Scalar(0,0,0,255), a2);
    multiply(a2, ra1, a2, 1./255);
    multiply(a1, rgba1, a1, 1./255);
    multiply(a2, rgba2, a2, 1./255);
    add(a1, a2, rgba dest);
} 
4.代数运算和SVD
scaleAdd(), transpose(), gemm(), invert(), solve(),determinant(), trace(), eigen(), SVD,
对应:
计算一个数组缩放后与另一个数组的和(dst(I)=src1(I)*scale + src2(I)),矩阵的转置 dst(i,j)=src(j,i) ,矩阵乘法 dst = alpha*op(src1)*op(src2) + beta*op(src3)这里 op(X) 是 X 或者 XT, 查找矩阵的逆矩阵或伪逆矩阵,求解线性系统或者最小二乘法问题,返回浮点方阵的行列式,返回矩阵的迹,计算对称矩阵的特征值和特征向量,对实数浮点矩阵进行奇异值分解。
5.离散傅里叶变换和离散余弦变换
dft(), idft(), dct(), idct(),
对应:离散傅里叶变换,离散傅里叶反变换,离散余弦变换,离散余弦反变换。
For some operations a more convenient algebraic notation can be used, for example:
Mat delta = (J.t()*J + lambda*Mat::eye(J.cols, J.cols, J.type())).inv(CV SVD)*(J.t()*err);
implements the core of Levenberg-Marquardt optimization algorithm.


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值