freeimage.h

FreeImage_ColorQuantize

24 32

DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ColorQuantize(FIBITMAP *dib, FREE_IMAGE_QUANTIZE quantize);

Cuantiza un mapa de bits high-color de 24- o 32-bit a un mapa de bits con paleta de 8-bit. El parámetro quantize especifica el algoritmo de reducción de color a usar:

ParámetroMétodo de cuantización
FIQ_WUQUANTAlgoritmo de Xiaolin Wu
FIQ_NNQUANTNeuQuant neural-net de Anthony Dekker (sólo 24-bit)
FIQ_LFPQUANTAlgoritmo rápido sin pérdida Pseudo-Quantization de Carsten Klein

Tabla 7: constantes FREE_IMAGE_QUANTIZE.

Referencias

Wu, Xiaolin, Efficient Statistical Computations for Optimal Color Quantization. In Graphics Gems, vol. II, p. 126-133. [Online] http://www.ece.mcmaster.ca/~xwu/

Dekker A. H., Kohonen neural networks for optimal color quantization. Network: Computation in Neural Systems, Volume 5, Number 3, Institute of Physics Publishing, 1994. [Online] http://members.ozemail.com.au/~dekker/NEUQUANT.HTML

About the Lossless Fast Pseudo-Quantization Algorithm (Carsten Klein, 2014)

El algoritmo rápido sin pérdida Pseudo-Quantization no es un algoritmo de cuantificación real, ya que no hace ningún intento de crear una paleta que sea adecuada para todos los colores de la imagen fuente de 24-bit.

Sin embargo, proporciona conversiones muy rápidas para imágenes de 24-bit a 8-bit, si el número de colores diferentes en la imagen fuente no es mayor que el tamaño de la paleta deseada (es decir, menos de 256). Si se excede el número de colores en la imagen fuente, el método de de esta implementación se detiene y retorna NULL.

Esta implementación usa un mapa hash rápido para recolectar los colores en la imagen fuente. Implementa una versión personalizada de una tabla hash con direccionamiento abierto (usando sondeo lineal) que proporciona el mejor rendimiento. La tabla hash tiene 512 entradas, que previente que el factor de carga sea mayor de 0.5 ya que tenemos 256 entradas como máximo. Cada entrada consume 64 bits, de modo que la tabla hash completa ocupa 4KB de memoria.

Para imágenes grandes, LFPQuantizer suele ser hasta tres veces más rápido que Wu Quantizer.