コード例 #1
0
		/// <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;
		}