protected override Pixel QuantizatePixel(int x, int y)
        {
            // Get the color and add to the list
            Color color = image[y, x];

            int colorIndex;

            if (listColor.Count < this.MaxColors)
            {
                if (!listColor.Contains(color))
                {
                    listColor.Add(color);
                }
                colorIndex = listColor.IndexOf(color);
            }
            else
            {
                // Create the labpalette if so
                if (nearestNeighbour == null)
                {
                    LabColor[] labPalette = ColorConversion.ToLabPalette <Color>(listColor.ToArray());
                    nearestNeighbour = new ExhaustivePaletteSearch();
                    nearestNeighbour.Initialize(labPalette);
                }

                LabColor labNoTrans = ColorConversion.ToLabPalette <Color>(new Color[] { color })[0];
                colorIndex = nearestNeighbour.Search(labNoTrans);
            }

            return(new Pixel((uint)colorIndex, (uint)color.Alpha, true));
        }
 public FixedPaletteQuantization(Color[] fixedPalette)
 {
     this.nearestNeighbour = new ExhaustivePaletteSearch();
     this.Palette          = fixedPalette;
 }
 protected override void PreQuantization(EmguImage image)
 {
     this.listColor        = new List <Color>();
     this.nearestNeighbour = null;
     this.image            = image;
 }