How to extract identified internal and external contours using EmguCV?

I am doing a project to handle brain injuries using Image Processing. To increase its accuracy, I need to extract only the cranial part of the brain.

With EmguCV, I was able to define the inner and outer contours (blue and blue). Is there a way to extract these identified outlines into another image?

Image<Gray, byte> grayImage = new Image<Gray, byte>(bitmap);
Image<Bgr, byte> color = new Image<Bgr, byte>(bitmap);

grayImage = grayImage.ThresholdBinary(new Gray(220), new Gray(255));

using (MemStorage storage = new MemStorage())
{
    for (Contour<Point> contours = grayImage.FindContours(
        Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_TREE, storage); contours != null; contours = contours.HNext)
    {
        Contour<Point> currentContour = contours.ApproxPoly(contours.Perimeter * 0.015, storage);
        if (currentContour.BoundingRectangle.Width > 20)
        {
            CvInvoke.cvDrawContours(color, contours, new MCvScalar(100), new MCvScalar(255), -1, 2, Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, new Point(0, 0));
        }
    }
}

EmguCV 2.2.2

Identified Contours

Expected Result:

Expected Output

+4
source share

Source: https://habr.com/ru/post/1677603/


All Articles