我需要矩阵的元素方形。在Matlab中我找到了这段代码:
如果A
是矩阵,则A.^2
计算矩阵的元素方形平方。在Emgu Cv中是否有任何相同的功能?
实际上我需要矩阵的标准偏差。如果计算标准差的方法有计算标准差的函数那么对我来说会更有帮助。
答案 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方法。