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

时间:2018-02-01 20:38:56

标签: c# image image-processing emgucv

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

enter image description here

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

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文档中搜索,但我找不到任何能够像我想要的那样思考的函数。

任何建议或答案都会得到回报。

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

1 个答案:

答案 0 :(得分:1)

它可能有点基本和暴力,但如何在图像上选择接近绿色的随机点,然后有效地搜索匹配&#39;颜色(具有相同颜色的容差。当您访问每个像素时,将其着色为黑色,这样您就不必再次查看它并计算您有多少像素。每次选择一个像素时,请确保它和#39;不是黑色。一旦你无法找到更多的点,如果黑色像素的数量大于容差(所以你只能找到大的多边形),那么就把它计算在内细胞数量。