public Bitmap Calculate(GradientTypeEnum gradientType, int threshold) { Bitmap grayBitmap = new Bitmap(_bitmap.Width, _bitmap.Height); for (int i = 0; i < _bitmap.Width; i++) { for (int j = 0; j < _bitmap.Height; j++) { //得到像素的原始色彩 var oColor = _bitmap.GetPixel(i, j); //得到该色彩的亮度 var brightness = oColor.GetBrightness(); //用该亮度计算灰度 var gRGB = (int)(brightness * 255); //组成灰度色彩 var gColor = Color.FromArgb(gRGB, gRGB, gRGB); //最后将该灰度色彩赋予该像素 grayBitmap.SetPixel(i, j, gColor); } } var gradientTemplate = Gradient.GetGradientTemplate(gradientType); var destBitmap = EdgeDectect(grayBitmap, gradientTemplate, threshold); return(destBitmap); }
public static int[,] GetGradientTemplate(GradientTypeEnum gradientType) { int[,] gradientTemplate = null; switch (gradientType) { case GradientTypeEnum.Lapacian: { gradientTemplate = Lapacian; break; } case GradientTypeEnum.Sobel_Horizontal: { gradientTemplate = Sobel_Horizontal; break; } case GradientTypeEnum.Sobel_Vertical: { gradientTemplate = Sobel_Vertical; break; } case GradientTypeEnum.Sobel_Diagonal1: { gradientTemplate = Sobel_Diagonal1; break; } case GradientTypeEnum.Sobel_Diagonal2: { gradientTemplate = Sobel_Diagonal2; break; } case GradientTypeEnum.Prewitt_Horizontal: { gradientTemplate = Prewitt_Horizontal; break; } case GradientTypeEnum.Prewitt_Vertical: { gradientTemplate = Prewitt_Vertical; break; } case GradientTypeEnum.Prewitt_Diagonal1: { gradientTemplate = Prewitt_Diagonal1; break; } case GradientTypeEnum.Prewitt_Diagonal2: { gradientTemplate = Prewitt_Diagonal2; break; } default: break; } return(gradientTemplate); }