Exemplo n.º 1
0
        private void Noise(BitmapModel inputPointer, BitmapModel outputPointer, int sigma)
        {
            var random = Randoms.Create(DateTime.Now.Millisecond + Thread.CurrentThread.ManagedThreadId, RandomType.FastestDouble);

            for (var i = 0; i < inputPointer.Length; i++)
            {
                var a = random.NextDouble();
                var b = random.NextDouble();

                var noise = (float)(sigma * Math.Sqrt(-2.0 * Math.Log(a)) * Math.Cos(2.0 * Math.PI * b));
                outputPointer.Data[i] = inputPointer.Data[i] + noise;
            }
        }
Exemplo n.º 2
0
        public (SKBitmap, FilteringStatsModel) MakeNoisy(SKBitmap input, int sigma)
        {
            var inputChannels = BitmapModel.Create(input);
            var noisyChannels = BitmapModel.Create(inputChannels.Width, inputChannels.Height, inputChannels.ColorType, inputChannels.AlphaType);

            var watch = Stopwatch.StartNew();

            this.Noise(inputChannels, noisyChannels, sigma);
            watch.Stop();

            var noisy = noisyChannels.ToBitmap();

            var stats = BitmapHelpers.CalculateStats(input, noisy, watch.ElapsedMilliseconds);

            return(noisy, stats);
        }