Esempio n. 1
0
        public void init(Image image)
        {
            width  = image.Width;
            height = image.Height;

            _slices = new ImageSlice[width];
            int _numSlices = width;

            for (int x = 0; x < width; x++)
            {
                ImageSlice slice = new ImageSlice();
                slice.init(image, x);

                _slices[x] = slice;

                red   += slice.getAverageRed();
                green += slice.getAverageGreen();
                blue  += slice.getAverageBlue();

                hue += slice.getAverageHue();
                sat += slice.getAverageSat();
                val += slice.getAverageVal();
            }

            _averageRed   = red / width;
            _averageGreen = green / width;
            _averageBlue  = blue / width;

            _averageHue = hue / width;
            _averageSat = sat / width;
            _averageVal = val / width;

            sat = 0;
            val = 0;

            for (int x = 0; x < width; ++x)
            {
                ImageSlice slice    = _slices[x];
                float      deltaSat = slice.getAverageSat() - _averageSat;
                sat += deltaSat * deltaSat;
                float deltaVal = slice.getAverageVal() - _averageVal;
                val += deltaVal * deltaVal;
            }

            _deviationVal = (float)Math.Sqrt((val / (float)width) / 255.0);
            _deviationSat = (float)Math.Sqrt((sat / (float)width) / 255.0);
        }