【问题标题】:How to detect number of objects from image?如何从图像中检测对象的数量?
【发布时间】:2018-02-01 20:38:56
【问题描述】:

我有一个 Windows 窗体应用程序,我想从医学图像中计算对象的数量。比如

我使用了一种算法,可以从图像中获取每个对象的轮廓。

private void findContoursToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Image<Gray, byte> imgOutput = imgInput.Convert<Gray, byte>().ThresholdBinary(new Gray(100), new Gray(255));
        Emgu.CV.Util.VectorOfVectorOfPoint contours = new Emgu.CV.Util.VectorOfVectorOfPoint();
        Mat hier = new Mat();

        Image<Gray, byte> imgout = new Image<Gray, byte>(imgInput.Width, imgInput.Height, new Gray(100));

        CvInvoke.FindContours(imgOutput, contours, hier, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
        CvInvoke.DrawContours(imgout, contours, -1, new MCvScalar(123, 0, 0));

        pictureBox2.Image = imgout.Bitmap;

    } 

但我无法从图像中找出单元格的数量。我必须使用任何建议或算法吗?

我在 EMGU 文档中搜索,但我没有找到任何我想要的功能。

任何建议或回答都会得到奖励。

如果您认为这太宽泛,我不想要实现的算法。我只需要一些我必须使用的算法的想法或建议。

【问题讨论】:

  • 您不是在几个小时前发布了完全相同的问题吗?我猜它被删除了,因为它太宽泛了。
  • @HimBromBeere,我不想要实现的算法。我只需要一些我必须使用的算法的想法或建议。我认为这并不太宽泛。
  • 这个问题有一百万个潜在的解决方案,但大多数解决方案都行不通。因此,需要做很多工作才能找到这个问题的好答案。因此它太宽泛了。
  • emgu.com/forum/viewtopic.php?t=2964 怎么没有帮助你?
  • @HimBromBeere, HNext 不是 Contour 的属性。所以你提供的链接对我没有帮助

标签: c# image image-processing emgucv


【解决方案1】:

这可能有点基本和蛮力,但是如何在图像上选择一个接近绿色的随机点,然后有效地搜索“匹配”颜色(对相同颜色有容差。当您访问时)每个像素,把它涂成黑色,这样你就不用再看它了,然后计算你涂了多少个像素。每次选择一个像素时,确保它不是黑色的。一旦你找不到更多的点,如果黑色像素的数量大于容差(因此您只能找到“大”多边形),然后将其计入单元数。

【讨论】:

    猜你喜欢
    • 2018-07-02
    • 2013-04-27
    • 2013-01-23
    • 2012-06-05
    • 2019-07-13
    相关资源
    最近更新 更多