PageRenderTime 26ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/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
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. namespace Microsoft.Research.DynamicDataDisplay.Maps.Charts.VectorFields
  7. {
  8. public class NormalizeFilter : VectorFieldConvolutionFilter
  9. {
  10. public override void ApplyFilter(int[] pixels, int width, int height, Vector[,] field)
  11. {
  12. double minBrightness = Double.PositiveInfinity;
  13. double maxBrightness = Double.NegativeInfinity;
  14. for (int i = 0; i < pixels.Length; i++)
  15. {
  16. int x = i % width;
  17. int y = i / width;
  18. int argb = pixels[i];
  19. var color = HsbColor.FromArgb(argb);
  20. var brightness = color.Brightness;
  21. if (brightness < minBrightness)
  22. minBrightness = brightness;
  23. if (brightness > maxBrightness)
  24. maxBrightness = brightness;
  25. }
  26. for (int i = 0; i < pixels.Length; i++)
  27. {
  28. int argb = pixels[i];
  29. var color = HsbColor.FromArgb(argb);
  30. var brightness = color.Brightness;
  31. double ratio = (brightness - minBrightness) / (maxBrightness - minBrightness);
  32. color.Brightness = ratio;
  33. pixels[i] = color.ToArgb();
  34. }
  35. }
  36. }
  37. }