/Main/src/DynamicDataDisplay.Maps/Charts/VectorFields/Convolution/NormalizeFilter.cs
C# | 43 lines | 37 code | 6 blank | 0 comment | 4 complexity | 740afce6c3b93cedfa9f257d1f10918b MD5 | raw file
Possible License(s): CC-BY-SA-3.0
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows;
-
- namespace Microsoft.Research.DynamicDataDisplay.Maps.Charts.VectorFields
- {
- public class NormalizeFilter : VectorFieldConvolutionFilter
- {
- public override void ApplyFilter(int[] pixels, int width, int height, Vector[,] field)
- {
- double minBrightness = Double.PositiveInfinity;
- double maxBrightness = Double.NegativeInfinity;
-
- for (int i = 0; i < pixels.Length; i++)
- {
- int x = i % width;
- int y = i / width;
-
- int argb = pixels[i];
- var color = HsbColor.FromArgb(argb);
- var brightness = color.Brightness;
-
- if (brightness < minBrightness)
- minBrightness = brightness;
- if (brightness > maxBrightness)
- maxBrightness = brightness;
- }
-
- for (int i = 0; i < pixels.Length; i++)
- {
- int argb = pixels[i];
- var color = HsbColor.FromArgb(argb);
- var brightness = color.Brightness;
-
- double ratio = (brightness - minBrightness) / (maxBrightness - minBrightness);
- color.Brightness = ratio;
- pixels[i] = color.ToArgb();
- }
- }
- }
- }