/// <summary>
    /// Fit ellipse through contour points in a least square sense.
    /// </summary>
    /// <param name="c">Contour</param>
    /// <returns>Ellipse</returns>
    private Emgu.CV.Structure.Ellipse FitByContour(Emgu.CV.Contour<System.Drawing.Point> c) {
      System.Drawing.PointF[] mypoints = Array.ConvertAll(
        c.ToArray<System.Drawing.Point>(),
        value => new System.Drawing.PointF(value.X, value.Y)
      );

      Emgu.CV.Structure.Ellipse e = Emgu.CV.PointCollection.EllipseLeastSquareFitting(mypoints);
      Emgu.CV.Structure.MCvBox2D box = e.MCvBox2D;
      // Modify ellipse to have width = a, height = b in the ellipse equation.
      box.size.Height *= 0.5f;
      box.size.Width *= 0.5f;
      return new Emgu.CV.Structure.Ellipse(box);
    }