diff --git a/src/ImageSharp/Processing/Processors/Quantization/WuFrameQuantizer{TPixel}.cs b/src/ImageSharp/Processing/Processors/Quantization/WuFrameQuantizer{TPixel}.cs
index f037f63c2..7c4d6420b 100644
--- a/src/ImageSharp/Processing/Processors/Quantization/WuFrameQuantizer{TPixel}.cs
+++ b/src/ImageSharp/Processing/Processors/Quantization/WuFrameQuantizer{TPixel}.cs
@@ -784,6 +784,94 @@ namespace SixLabors.ImageSharp.Processing.Processors.Quantization
=> new Vector4(this.R, this.G, this.B, this.A) / this.Weight / 255F;
}
+ private struct Moment
+ {
+ ///
+ /// Moment of r*P(c).
+ ///
+ public long R;
+
+ ///
+ /// Moment of g*P(c).
+ ///
+ public long G;
+
+ ///
+ /// Moment of b*P(c).
+ ///
+ public long B;
+
+ ///
+ /// Moment of a*P(c).
+ ///
+ public long A;
+
+ ///
+ /// Moment of P(c).
+ ///
+ public long Weight;
+
+ ///
+ /// Moment of c^2*P(c).
+ ///
+ public double Moment2;
+
+ [MethodImpl(InliningOptions.ShortMethod)]
+ public static Moment operator +(Moment x, Moment y)
+ {
+ x.R += y.R;
+ x.G += y.G;
+ x.B += y.B;
+ x.A += y.A;
+ x.Weight += y.Weight;
+ x.Moment2 += y.Moment2;
+ return x;
+ }
+
+ [MethodImpl(InliningOptions.ShortMethod)]
+ public static Moment operator -(Moment x, Moment y)
+ {
+ x.R -= y.R;
+ x.G -= y.G;
+ x.B -= y.B;
+ x.A -= y.A;
+ x.Weight -= y.Weight;
+ x.Moment2 -= y.Moment2;
+ return x;
+ }
+
+ [MethodImpl(InliningOptions.ShortMethod)]
+ public static Moment operator -(Moment x)
+ {
+ x.R = -x.R;
+ x.G = -x.G;
+ x.B = -x.B;
+ x.A = -x.A;
+ x.Weight = -x.Weight;
+ x.Moment2 = -x.Moment2;
+ return x;
+ }
+
+ [MethodImpl(InliningOptions.ShortMethod)]
+ public static Moment operator +(Moment x, Rgba32 y)
+ {
+ x.R += y.R;
+ x.G += y.G;
+ x.B += y.B;
+ x.A += y.A;
+ x.Weight++;
+
+ var vector = new Vector4(y.R, y.G, y.B, y.A);
+ x.Moment2 += Vector4.Dot(vector, vector);
+
+ return x;
+ }
+
+ [MethodImpl(InliningOptions.ShortMethod)]
+ public readonly Vector4 Normalize()
+ => new Vector4(this.R, this.G, this.B, this.A) / this.Weight / 255F;
+ }
+
///
/// Represents a box color cube.
///