//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; }
public static Bitmap WordPosition(Bitmap origImg, Segmentation segmentation, WordPosition wordPosition, Color colour) { Bitmap img = origImg.DeepCopy(); WordPositionInPlace(img, segmentation, wordPosition, colour); return img; }
public static Bitmap Solution(Bitmap origImg, Segmentation segmentation, Solution solution, Color colour) { Bitmap img = origImg.DeepCopy(); SolutionInPlace(img, segmentation, solution, colour); return img; }
public static Bitmap Grid(Bitmap imgOrig, uint rows, uint cols, Color colour) { Bitmap img = imgOrig.DeepCopy(); GridInPlace(img, rows, cols, colour); return img; }
public static Bitmap Segmentation(Bitmap imgOrig, Segmentation segmentation, Color colour) { Bitmap img = imgOrig.DeepCopy(); SegmentationInPlace(img, segmentation, colour); return img; }
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; }
public static Bitmap Polygon(Bitmap origImg, List<IntPoint> points, Color colour) { Bitmap img = origImg.DeepCopy(); PolygonInPlace(img, points, colour); return img; }