Blobcounter ile nasıl elips objelerin kenarlarını belirleyebilirim?

Blobscounterla şekillerin kenar piksellerini belirleyip elips bir cismin şeklini bulmak istiyorum ama bir türlü kenarları çizdiremedim.Kodu çalıştırdığımda objeleri buluyor ama objelerin her pikseli kırmızı oluyor.Bu konuda bilgisi olan biri cevap verebilirse sevinirim.Ayırt etmek istediğim şekil şu:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Imaging;
using AForge.Imaging;
using System.Runtime.InteropServices;
using AForge.Math.Geometry;
using AForge;
using AForge.Imaging.Filters;
using System.Windows.Forms;

namespace blobdnm
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog sfd = new OpenFileDialog();
            sfd.Filter = "Image Files|*.jpg|All Files|*.*";
            sfd.InitialDirectory = ".";
            if (sfd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            pictureBox1.ImageLocation = sfd.FileName;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(pictureBox1.Image);
            BitmapData BmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            byte[] data = new byte[bmp.Width * bmp.Height * 3];
            IntPtr ptr = BmpData.Scan0;
            Marshal.Copy(ptr, data, 0, data.Length);



            for (int i = 0; i < bmp.Width * bmp.Height * 3; i = i + 3)
            {
                double a = data[i] * 0.229 + data[i + 1] * 0.587 + data[i + 2] * 0.114;

                if (a > 100)
                {
                    data[i] = 0;
                    data[i + 1] = 0;
                    data[i + 2] = 0;
                }
            }


            Bitmap bmp2 = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format24bppRgb);
            BitmapData BmpData2 = bmp2.LockBits(new Rectangle(0, 0, bmp2.Width, bmp2.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            Marshal.Copy(data, 0, BmpData2.Scan0, data.Length);

            bmp2.UnlockBits(BmpData2);
            ColorFiltering colorFilter = new ColorFiltering();
            BlobCounter blobCounter = new BlobCounter();
            blobCounter.ObjectsOrder = ObjectsOrder.Size;
            blobCounter.FilterBlobs = true;
            blobCounter.MinWidth = 5;
            blobCounter.MinHeight = 5;
            blobCounter.MaxWidth = 5000;
            blobCounter.MaxHeight = 5000;
            blobCounter.ProcessImage(BmpData2);
            Blob[] blobs = blobCounter.GetObjectsInformation();



            Graphics g = Graphics.FromImage(bmp2);
            Pen redPen = new Pen(Color.Red, 2);
            SimpleShapeChecker shapeChecker = new SimpleShapeChecker();
           
            for (int i = 0; i < blobs.Length; i++)
            {
                List<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);

               AForge.Point center;
               float radius;

               if (shapeChecker.IsCircle(edgePoints, out center, out radius))
               {
                   g.DrawEllipse(redPen, (float)(center.X - radius), (float)(center.Y - radius), (float)(radius * 2), (float)(radius * 2));
               }

           }
  


            redPen.Dispose();
            g.Dispose();
            pictureBox1.Image = bmp2;

        }
       
    }
}