【问题标题】:How to convert Image<Gray, Byte> into 1D Matrix<float>?如何将 Image<Gray, Byte> 转换为 1D Matrix<float>?
【发布时间】:2012-09-11 08:47:35
【问题描述】:

我有一个大小为 NxN 的 Image&lt;Gray, Byte&gt; trainImage,我想将其更改为大小为 (N^2)x1 的一维 Matrix&lt;float&gt; trainMatrix。

我想做的是打电话给CvInvoke.cvCalvCovarmatrix()。对于第一个参数,我使用的是Matrix&lt;Single&gt;[],我将其转换为IntPtr[]

Matrix<Single> avg = new Matrix<float>(7, 1);
Matrix<Single> cov = new Matrix<float>(7, 7);
Matrix<Single>[] input = new Matrix<float>[3];
for (int i = 0; i < 3; i++)
    input[i] = new Matrix<float>(7, 1);

IntPtr[] inObjs = Array.ConvertAll<Matrix<Single>, IntPtr>(input, delegate(Matrix<Single> mat) { return mat.Ptr; });

CvInvoke.cvCalcCovarMatrix(inObjs, 3, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);

但是现在我的输入是Image&lt;Gray, Byte&gt;[],每个图像尺寸(假设)7x7。我想我需要先将每个图像转换为大小为 49x1 的Matrix&lt;float&gt;,然后再将其更改为IntPtr[]。怎么做?

【问题讨论】:

  • 你的意思是二维矩阵吗?因为一维矩阵是一个向量。
  • 哦,是的,一个向量,但类型是矩阵,这就是为什么矩阵有 N^2 行只有 1 列。
  • 您可以查看this question 它是关于 3d 数组,但它与 IMO 非常相似。但是在问题中已经给出了 2D 的解决方案。
  • 所以你想要的是一张 1 行或 1 列的图像,对吧?你能提供一些代码吗?因为我不知道 Image 到底是什么(Simple GrayscaleMatrix?)。
  • 我已经编辑了这个问题。 Image 来自 emguCV,不知道是不是简单的灰度矩阵。

标签: c# image matrix emgucv


【解决方案1】:

你是在正确的方式。我在这里放了一些代码,这些代码也可以作为其他代码的示例,因为那里没有 emgucv 协方差示例。

      Matrix<float> mat1 = new Matrix<float>(1, 3);
      mat1[0, 0] = 38;
      mat1[0, 1] = 55;
      mat1[0, 2] = 49;

      Matrix<float> mat2 = new Matrix<float>(1, 3);
      mat2[0, 0] = 43;
      mat2[0, 1] = 54;
      mat2[0, 2] = 4;

      Matrix<float> cov = new Matrix<float>(3, 3);

      Matrix<float> avg = new Matrix<float>(2, 1);

      Matrix<float>[] input = new Matrix<float>[2];
      input[0] = mat1;
      input[1] = mat2;          
      IntPtr[] inputPtrs = Array.ConvertAll<Matrix<Single>, IntPtr>(input, delegate(Matrix<Single> mat) { return mat.Ptr; });
      CvInvoke.cvCalcCovarMatrix(inputPtrs, 2, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);

我对照 computed wolfram ones 检查了 cov 矩阵值,它们似乎没问题。

尽我所能, 卢卡

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2018-04-05
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多