Beispiel #1
0
        /// <summary>
        /// Processes the specified SRC image.
        /// </summary>
        /// <param name="srcImage">The SRC image.</param>
        /// <remarks></remarks>
        public void Process(Bitmap srcImage)
        {
            resize.NewWidth  = srcImage.Width / Scale;
            resize.NewHeight = srcImage.Height / Scale;

            FilteredBoard = resize.Apply(srcImage);

            ImageFilters.HSLFilter(FilteredBoard, targetHue, targetSat, targetBri, hueTol, satTol, briTol);

            median.ApplyInPlace(FilteredBoard);

            GaussianBlur blr = new GaussianBlur(1, 2);

            blr.ApplyInPlace(FilteredBoard);

            List <IntPoint> cors = new List <IntPoint>();

            try
            {
                cors = quadFinder.ProcessImage(FilteredBoard);
            }
            catch { }

            if (ValidCorners(cors))
            {
                EnlargeCorners(cors);
                SortCorners(cors);
                UpdateCorners(cors);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Processes the specified SRC image.
        /// </summary>
        /// <param name="srcImage">The SRC image.</param>
        /// <remarks></remarks>
        public void Process(Bitmap srcImage)
        {
            if (srcImage == null || srcImage.Width < 10 || srcImage.Height < 10)
            {
                return;
            }

            resize.NewWidth  = srcImage.Width / Scale;
            resize.NewHeight = srcImage.Height / Scale;

            FilteredBoard = resize.Apply(srcImage);

            if (Enhance)
            {
                ImageFilters.FlattenLighting(FilteredBoard);
            }

            ImageFilters.HSLFilter(FilteredBoard, targetHue, targetSat, targetBri, hueTol, satTol, briTol);

            median.ApplyInPlace(FilteredBoard);
            GaussianBlur blr = new GaussianBlur(2, 2);

            blr.ApplyInPlace(FilteredBoard);

            TileBlobs.Clear();

            try
            {
                BlobCounter.ProcessImage(FilteredBoard);

                Blob[] blobs = BlobCounter.GetObjectsInformation();
                TileBlobs.Clear();

                foreach (Blob b in blobs)
                {
                    if (b.Area < 10)
                    {
                        continue;
                    }
                    TileBlobs.Add(b);
                }
            }
            catch { }
        }