📄
Colors/src/HistogramBuilder.cs
using System; using SixLabors.ImageSharp; using SixLabors.ImageSharp.PixelFormats; namespace Mosaic.Colors; internal class HistogramBuilder() { public readonly Memory<int> Histogram = new int[MmcqQuantizer.HistogramSize]; public void Populate(PixelAccessor<Rgba32> accessor) { var histogram = Histogram.Span; for (var y = 0; y < accessor.Height; y++) { var row = accessor.GetRowSpan(y); for (var x = 0; x < row.Length; x++) { var pixel = row[x]; var r = pixel.R >> MmcqQuantizer.Shift; var g = pixel.G >> MmcqQuantizer.Shift; var b = pixel.B >> MmcqQuantizer.Shift; histogram[MmcqQuantizer.GetColorIndex(r, g, b)]++; } } } }