C# 如何从图像中检测对象的数量?

C# 如何从图像中检测对象的数量?,c#,image,image-processing,emgucv,C#,Image,Image Processing,Emgucv,我有一个windows窗体应用程序,我想从医学图像中计算对象的数量。比如说 我使用了一种算法,可以从图像中提取每个物体的轮廓 private void findContoursToolStripMenuItem_Click(object sender, EventArgs e) { Image<Gray, byte> imgOutput = imgInput.Convert<Gray, byte>().ThresholdBinary(new Gra

我有一个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,我不想要实现的算法。我只需要一些想法或我必须使用的算法的建议。我认为这还不算太宽泛。这个问题有无数种可能的解决方案,但大多数解决方案都行不通。因此,我们需要做大量的工作来找到这个问题的好答案。因此它太宽了。那怎么帮不了你呢?@HimBromBeere,HNext不是等高线的属性。所以你提供的链接对我没有帮助