public Bitmap Binarization(BitImage bmp) { var result = new Bitmap(bmp.Width, bmp.Height); for (var x = 0; x < result.Width; x++) { for (var y = 0; y < result.Height; y++) { var color = bmp.PixelArray[x, y]; result.SetPixel(x, y, color <= 120 ? Color.Black : Color.White); } } return result; }
public Bitmap Binarization(BitImage bmp) { var result = new Bitmap(bmp.Width, bmp.Height); for (var i = 0; i < bmp.Width; i++) { for (var j = 0; j < bmp.Height; j++) { var pixel = bmp.PixelArray[i, j]; var pixelIntensity = SurroundedValue(i, j, bmp); result.SetPixel(i, j, pixel > pixelIntensity - 5 ? Color.White : Color.Black); } } return result; }
private byte SurroundedValue(int x, int y, BitImage bmp) { const int radius = 20; var left = (x - radius < 0) ? 0 : x - radius; var top = (y - radius < 0) ? 0 : y - radius; var right = (x + radius < bmp.Width) ? x + radius : bmp.Width - 1; var bottom = (y + radius < bmp.Height) ? y + radius : bmp.Height - 1; var summaryIntensity = 0; var counter = 0; for (var i = left; i <= right; i++) { for (var j = top; j <= bottom; j++) { summaryIntensity += bmp.PixelArray[i, j]; counter++; } } return (byte)(summaryIntensity / counter); }