EMGU CV中矩阵的元素方形

时间:2013-05-13 07:58:26

标签: emgucv

我需要矩阵的元素方形。在Matlab中我找到了这段代码: 如果A是矩阵,则A.^2计算矩阵的元素方形平方。在Emgu Cv中是否有任何相同的功能?

实际上我需要矩阵的标准偏差。如果计算标准差的方法有计算标准差的函数那么对我来说会更有帮助。

3 个答案:

答案 0 :(得分:1)

如果您需要标准偏差,则Image类提供包含OpenCV等效函数AvgSdv的方法cvAvgSdv。也许您可以先将Matrix复制到Image来完成此操作。

以下复制的实施信息:

/// <summary>
/// Calculates the average value and standard deviation of array elements, independently for each channel
/// </summary>
/// <param name="average">The avg color</param>
/// <param name="sdv">The standard deviation for each channel</param>
/// <param name="mask">The operation mask</param>
public void AvgSdv(out TColor average, out MCvScalar sdv, Image<Gray, Byte> mask)
{
   average = new TColor();
   MCvScalar avgScalar = new MCvScalar();
   sdv = new MCvScalar();

   CvInvoke.cvAvgSdv(Ptr, ref avgScalar, ref sdv, mask == null ? IntPtr.Zero : mask.Ptr);
   average.MCvScalar = avgScalar;
}

答案 1 :(得分:1)

元素方形与矩阵本身的元素相乘相同。因此,以下代码行应该可以解决问题(假设Matrix被称为mat):

mat._Mul(mat);

请注意,这会取代原来的mat。如果你想保存它,你可以这样做:

Matrix<byte> squaredMatrix = mat.Copy();
squaredMatrix._Mul(mat);

答案 2 :(得分:0)

如果您的数据是图像而不是矩阵,则可以使用Image(TColor,TDepth).Mul方法:

http://www.emgu.com/wiki/files/2.3.0/document/html/01b9ba23-0058-3167-16ee-206a4befd7f3.htm

以下是代码:

Iamge.Mul(Iamge, 1);

对于矩阵的标准偏差,请尝试Image(TColor,TDepth).AvgSdv方法。