0

我需要矩阵的元素平方。在 Matlab 中,我找到了这段代码: if Ais matrix thenA.^2计算矩阵的元素平方。Emgu Cv 中是否有任何功能可以做到这一点?

实际上我需要矩阵的标准偏差。如果计算标准偏差的方法有计算标准偏差的功能,那么它对我会更有帮助。

4

3 回答 3

1

逐元素平方与逐元素乘法与矩阵本身相同。因此,以下代码行应该可以解决问题(假设Matrixis called mat):

mat._Mul(mat);

请注意,尽管这会替换原来的mat. 如果你想保存它,你可以这样做:

Matrix<byte> squaredMatrix = mat.Copy();
squaredMatrix._Mul(mat);
于 2013-05-13T14:00:25.613 回答
1

如果您想要标准偏差,那么Image该类提供了一个AvgSdv包装 OpenCV 等效函数的方法cvAvgSdv。也许您可以通过将您的复制MatrixImage第一个来做到这一点。

实施复制如下以供参考:

/// <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;
}
于 2013-05-13T08:37:24.060 回答
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 方法。

于 2015-08-11T03:40:04.980 回答