/// <summary> /// Merges blobs that are close to each other. /// </summary> /// <param name="value">The blobs found after running connected componenets algorithm.</param> /// <returns></returns> // private ArrayList<ExtendedBlob> mergeBlobs(ArrayList<ExtendedBlob> value) // { // /* // * Using a very simple methology of merging. // * Search all blobs that in close proximity of x pixels. // */ // ICollection<ExtendedBlob> intermediateValues = // new ArrayList<ExtendedBlob>(value.Count); // int x = 10; // ExtendedBlob closeToMe = value.RemoveAt(0); // while(!value.IsEmpty) // { // for (int i = 0; i < value.Count; i++) // { // Rectangle mergeRectangle = closeToMe.Rectangle; // mergeRectangle.Width += x; // mergeRectangle.Height += x; // if (mergeRectangle.IntersectsWith(value[i].Rectangle)) // { // // closeToMe // intermediateValues.Add(value[i]); // } // } // } // // } /// <summary> /// Runs the conected components algorithm. /// </summary> /// <param name="image">The image on which to run the algorithms.</param> /// <returns></returns> private List<ExtendedBlob> runConectedComponentsAlgorithm(Bitmap image) { blobCounter = new BlobCounter(image); Blob[] blobs = blobCounter.GetObjects(image); Rectangle[] rects = blobCounter.GetObjectRectangles(); List<ExtendedBlob> returnValue = new List<ExtendedBlob>(blobs.Length); for (int i = 0; i < blobs.Length; i++ ) { // Use adapter method and convert blobs to extended blobs. returnValue.Add(new ExtendedBlob(blobs[i], null, Unknown.GetInstance(), rects[i])); } return returnValue; }