Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }