Пример #1
0
        protected override void Process(Image <Gray, byte> queryImage)
        {
            var data = DoRandomNoise(queryImage.Data, 0.3);

            OnNoisedImage?.Invoke(this, new CaptureArgs <Image <Bgr, float> >(new Image <Gray, byte>(data).Convert <Bgr, float>()));
            var result = Medianvolution(data, 6);

            OnResultImage?.Invoke(this, new CaptureArgs <Image <Bgr, float> >(new Image <Gray, byte>(result).Convert <Bgr, float>()));
        }
Пример #2
0
        protected override void Process(Image <Gray, byte> queryImage)
        {
            //создаем гистограмму
            double[] points = new double[byte.MaxValue + 1];


            var data = queryImage.Data;

            DataMatrixRenuming(ref data, b =>
            {
                points[b]++;
                return(b);
            });
            //стандартизируем ее
            points = points.Select(d => d / (data.GetLength(0) * data.GetLength(1))).ToArray();
            //преобразуем к виду для отображения
            InitPointList(points);
            OnHistogramPoints?.Invoke(this, new CaptureArgs <List <Point> >(resPoints));
            //производим нарастающую сумму
            for (int i = 1; i < points.Length; i++)
            {
                points[i] += (points[i - 1]);
            }
            for (int i = 0; i < points.Length; i++)
            {
                points[i] = points[i] * 255;
            }
            //преобразуем к виду для отображения
            InitPointList(points);
            OnHistogramResultPoints?.Invoke(this, new CaptureArgs <List <Point> >(resPoints));
            var resultData = data;

            //применяем функцию на стандартное изображение
            DataMatrixRenuming(ref resultData, b =>
            {
                return((byte)(points[b]));
            });
            OnResultImage?.Invoke(this, new CaptureArgs <Image <Bgr, float> >(new Image <Gray, byte>(resultData).Convert <Bgr, float>()));
        }