我有一个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
文档中搜索,但我找不到任何能够像我想要的那样思考的函数。
任何建议或答案都会得到回报。
如果您认为太宽泛,我不想要实施的算法。我只需要一些想法或我必须使用的算法建议。
答案 0 :(得分:1)
它可能有点基本和暴力,但如何在图像上选择接近绿色的随机点,然后有效地搜索匹配&#39;颜色(具有相同颜色的容差。当您访问每个像素时,将其着色为黑色,这样您就不必再次查看它并计算您有多少像素。每次选择一个像素时,请确保它和#39;不是黑色。一旦你无法找到更多的点,如果黑色像素的数量大于容差(所以你只能找到大的多边形),那么就把它计算在内细胞数量。