Ejemplo n.º 1
0
        //Actual Methods that can be used for extraction
        public static Bitmap ExtractBiggestBlob(Bitmap charIn)
        {
            //Greyscale (if not already)
            Bitmap greyImg = null;
            if(charIn.PixelFormat != PixelFormat.Format8bppIndexed)
            {
                greyImg = Grayscale.CommonAlgorithms.BT709.Apply(charIn); //Use the BT709 (HDTV spec) for RGB weights
            }
            else
            {
                greyImg = charIn.DeepCopy();
            }

            //Adaptive threshold
            bradleyLocalThreshold.ApplyInPlace(greyImg);

            //Extract the largest blob (the character)
            invert.ApplyInPlace(greyImg); //Inversion required for blob detection (must be white object on black background)
            Bitmap charWithoutWhitespace = null;
            try
            {
                charWithoutWhitespace = extractBiggestBlob.Apply(greyImg);
            }
            catch(ArgumentException) //Thrown if no blobs in image, use whole image
            {
                charWithoutWhitespace = greyImg;
            }

            //Resize the image of the char without whitespace to some normalised size (using nearest neighbour because we've already thresholded)
            Bitmap normalisedCharWithoutWhitespace = resize.Apply(charWithoutWhitespace);

            //Clean up
            greyImg.Dispose();
            charWithoutWhitespace.Dispose();

            return normalisedCharWithoutWhitespace;
        }
Ejemplo n.º 2
0
 public static Bitmap WordPosition(Bitmap origImg, Segmentation segmentation, WordPosition wordPosition, Color colour)
 {
     Bitmap img = origImg.DeepCopy();
     WordPositionInPlace(img, segmentation, wordPosition, colour);
     return img;
 }
Ejemplo n.º 3
0
 public static Bitmap Solution(Bitmap origImg, Segmentation segmentation, Solution solution, Color colour)
 {
     Bitmap img = origImg.DeepCopy();
     SolutionInPlace(img, segmentation, solution, colour);
     return img;
 }
Ejemplo n.º 4
0
 public static Bitmap Grid(Bitmap imgOrig, uint rows, uint cols, Color colour)
 {
     Bitmap img = imgOrig.DeepCopy();
     GridInPlace(img, rows, cols, colour);
     return img;
 }
Ejemplo n.º 5
0
 public static Bitmap Segmentation(Bitmap imgOrig, Segmentation segmentation, Color colour)
 {
     Bitmap img = imgOrig.DeepCopy();
     SegmentationInPlace(img, segmentation, colour);
     return img;
 }
Ejemplo n.º 6
0
 public static Bitmap Grid(Bitmap imgOrig, uint[,] rows, uint[,] cols, Color startColour, Color endColour)
 {
     Bitmap img = imgOrig.DeepCopy();
     GridInPlace(img, rows, cols, startColour, endColour);
     return img;
 }
Ejemplo n.º 7
0
 public static Bitmap Polygon(Bitmap origImg, List<IntPoint> points, Color colour)
 {
     Bitmap img = origImg.DeepCopy();
     PolygonInPlace(img, points, colour);
     return img;
 }