矩阵和图像操作(1)

来源:互联网 发布:esp8266单片机程序 编辑:程序博客网 时间:2024/05/01 16:01

矩阵和图像操作(1)

表3-3列出了一些操作矩阵图像的函数,其中的大部分对于图像处理非常有效。它们实现了图像处理中的基本操作,例如对角化、矩阵变换以及一些更复杂的诸如计算图像的统计操作。【47】

表3-3:矩阵和图像基本操作

函数名称

描述

cvAbs

计算数组中所有元素的绝对值

cvAbsDiff

计算两个数组差值的绝对值


续表

函数名称

描述

cvAbsDiffS

计算数组和标量差值的绝对值

cvAdd

两个数组的元素级的加运算

cvAddS

一个数组和一个标量的

元素级的相加运算

cvAddWeighted

两个数组的元素级的加权

相加运算(alpha融合)

cvAvg

计算数组中所有元素的平均值

cvAvgSdv

计算数组中所有元素的

绝对值和标准差

cvCalcCovarMatrix

计算一组n维空间向量的协方差

cvCmp

对两个数组中的所有元

素运用设置的比较操作

cvCmpS

对数组和标量运用设置的比较操作

cvConvertScale

用可选的缩放值转换数组元素类型

cvConvertScaleAbs

计算可选的缩放值的绝对值之

后再转换数组元素的类型

cvCopy

把数组中的值复制到另一个数组中

cvCountNonZero

计算数组中非0值的个数

cvCrossProduct

计算两个三维向量的向量积(叉积)

cvCvtColor

将数组的通道从一个颜色空间

转换另外一个颜色空间

cvDet

计算方阵的行列式

cvDiv

用另外一个数组对一个数

组进行元素级的除法运算

cvDotProduct

计算两个向量的点积

cvEigenVV

计算方阵的特征值和特征向量

cvFlip

围绕选定轴翻转

cvGEMM

矩阵乘法

cvGetCol

从一个数组的列中复制元素

cvGetCols

从数据的相邻的多列中复制元素值

cvGetDiag

复制数组中对角线上的所有元素

cvGetDims

返回数组的维数

cvGetDimSize

返回一个数组的所有维的大小

cvGetRow

从一个数组的行中复制元素值

cvGetRows

从一个数组的多个相邻的

行中复制元素值

cvGetSize

得到二维的数组的尺寸,

以CvSize返回

cvGetSubRect

从一个数组的子区域复制元素值

cvInRange

检查一个数组的元素是否在

另外两个数组中的值的范围内

cvInRangeS

检查一个数组的元素的值是

否在另外两个标量的范围内


续表

函数       名称

描述

cvInvert

求矩阵的转置

cvMahalonobis

计算两个向量间的马氏距离

cvMax

在两个数组中进行元素级

的取最大值操作

cvMaxS

在一个数组和一个标量中

进行元素级的取最大值操作

cvMerge

把几个单通道图像合并为

一个多通道图像

cvMin

在两个数组中进行元素级

的取最小值操作

cvMinS

在一个数组和一个标量中

进行元素级的取最小值操作

cvMinMaxLoc

寻找数组中的最大最小值

cvMul

计算两个数组的元素级的乘积

cvNot

按位对数组中的每一个元素求反

cvNorm

计算两个数组的正态相关性

cvNormalize

将数组中元素进行规一化

cvOr

对两个数组进行按位或操作

cvOrS

在数组与标量之间进行按位或操作

cvReduce

通过给定的操作符将二维

数组约简为向量

cvRepeat

以平铺的方式进行数组复制

cvSet

用给定值初始化数组

cvSetZero

将数组中所有元素初始化为0

cvSetIdentity

将数组中对角线上的元素

设为1,其他置0

cvSolve

求出线性方程组的解

cvSplit

将多通道所组分割成

多个单通道数组

cvSub

两个数组元素级的相减

cvSubS

元素级的从数组中减去标量

cvSubRS

元素级的从标量中减去数组

cvSum

对数组中的所有元素求和

cvSVD

二维矩阵的奇异值分解

cvSVBkSb

奇异值回代计算

cvTrace

计算矩阵迹

cvTranspose

矩阵的转置运算

cvXor

对两个数组进行按位异或操作

cvXorS

在数组和标量之间进行

按位异或操作

cvZero

将所有数组中的元素置为0

cvAbs,cvAbsDiff和cvAbsDiffS

  1. void cvAbs(  
  2.     const CvArr*    src,  
  3.     const           dst  
  4. );  
  5. void cvAbsDiff(  
  6.    const CvArr*     src1,  
  7.    const CvArr*     src2,  
  8.    const            dst  
  9. );  
  10. void cvAbsDiffS(  
  11.     const CvArr*    src,  
  12.     CvScalar        value,  
  13.     const           dst  
  14. ); 

【50】

这些函数计算一个数组的绝对值或数组和其他对象的差值的绝对值,cvAbs()函数计算src里的值的绝对值,然后把结果写到dst;cvAbsDiff()函数会先从src1减去src2,然后将所得差的绝对值写到dst;除了从所有src元素减掉的数是常标量值外,可以看到cvAbsDiffS()函数同cvAbsDiff()函数基本相同。

cvAdd, cvAddS, cvAddWeighted和alpha融合

  1. void cvAdd(  
  2.     const CvArr*    src1,  
  3.     const CvArr*    src2,  
  4.     CvArr*          dst,  
  5.     const CvArr*    mask = NULL 
  6. );  
  7. void cvAddS(  
  8.     const CvArr*    src,  
  9.     CvScalar        value,  
  10.     CvArr*          dst,  
  11.     const CvArr*    mask = NULL 
  12. );  
  13. void cvAddWeighted(  
  14.     const CvArr*    src1,  
  15.     double          alpha,  
  16.     const CvArr*    src2,  
  17.     double          beta,  
  18.     double          gamma,  
  19.     CvArr*          dst  
  20. ); 

cvAdd()是一个简单的加法函数,它把src1里的所有元素同src2里的元素对应进行相加,然后把结果放到dst,如果mask没有被设为NULL,那么由mask中非零元素指定的dst元素值在函数执行后不变。cvAddS()与cvAdd()非常相似,惟一不同的是被加的数量标量value。

cvAddWeighted()函数同cvAdd()类似,但是被写入dst的结果是经过下面的公式得出的:【50】

原创粉丝点击