Dithering de Floyd-Steinberg


El difuminado de Floyd-Steinberg es un algoritmo de difuminado de imágenes publicado por primera vez en 1976 por Robert W. Floyd y Louis Steinberg . Es comúnmente utilizado por software de manipulación de imágenes, por ejemplo, cuando una imagen se convierte a formato GIF que está restringido a un máximo de 256 colores.

El algoritmo logra el difuminado mediante la difusión de errores , lo que significa que empuja (agrega) el error de cuantificación residual de un píxel a sus píxeles vecinos, para tratarlo más adelante. Extiende la deuda de acuerdo con la distribución (que se muestra como un mapa de los píxeles vecinos):

El píxel indicado con una estrella (*) indica el píxel que se está escaneando actualmente y los píxeles en blanco son los píxeles escaneados previamente. El algoritmo escanea la imagen de izquierda a derecha, de arriba a abajo, cuantificando los valores de los píxeles uno por uno. Cada vez, el error de cuantificación se transfiere a los píxeles vecinos, sin afectar a los píxeles que ya se han cuantificado. Por tanto, si un número de píxeles se ha redondeado hacia abajo, es más probable que el siguiente píxel se redondee hacia arriba, de modo que, en promedio, el error de cuantificación sea cercano a cero.

Los coeficientes de difusión tienen la propiedad de que si los valores de píxeles originales están exactamente a la mitad entre los colores disponibles más cercanos, el resultado difuminado es un patrón de tablero de ajedrez. Por ejemplo, el 50% de los datos grises se pueden difuminar como un patrón de tablero de ajedrez en blanco y negro. Para un difuminado óptimo, el recuento de errores de cuantificación debe tener la precisión suficiente para evitar que los errores de redondeo afecten el resultado.

En algunas implementaciones, la dirección horizontal de exploración alterna entre líneas; esto se llama "exploración serpentina" o difuminado por transformada de boustrophedon .

En el siguiente pseudocódigo podemos ver el algoritmo descrito anteriormente. Esto funciona para cualquier codificación aproximadamente lineal de valores de píxeles, como enteros de 8 bits, enteros de 16 bits o números reales en el rango [0,1].


sin vacilar
sin vacilar
Dithering de Floyd-Steinberg
Dithering de Floyd-Steinberg
Una imagen de 1 bit de la estatua de David , difuminada con el algoritmo Floyd-Steinberg