Floyd-Steinberg alternativas para el sombreado de píxeles
-
27-09-2019 - |
Pregunta
Sé que Floyd-Steinberg algoritmo no puede ser implementado con sombreado de píxeles, debido a que el algoritmo es estrictamente secuencial. Pero tal vez exista algún altamente paralelo tramado algoritmo que por ella de salida visual es similar al algoritmo de Floyd-Steinberg?
Así que la pregunta es - ¿Cuáles son los algoritmos de tramado que son adecuados para poner en práctica el sombreado de píxeles (preferiblemente GLSL) y con una calidad de salida (muy) similar a Floyd-Steinberg
Por cierto. algoritmos de múltiples pasadas se permite hasta que no hay más de 2 pases y sobrecarga de la CPU entre esos pases es pequeño.
¿Alguna idea?
EDIT:
Necesito tramado de color de 24 bits a color de 21 bits. gratis (Es decir - que necesito convertir de 8 bits / canal a 7 bits / canal.)
EDIT 2
Tal vez no he explicado problema muy bien. Así que voy a tratar de ampliar un poco problema exacto.
El problema es que esto - consideramos que tenemos esta imagen:
Y tenemos por encima de la imagen, sino que se transforma con el algoritmo de interpolación:
Ahora bien, este es un procedimiento que permite evaluar el tramado es bueno para mí o no:
1. Cargar estas imágenes en Photoshop como una imagen con 2 capas.
Página 2. Elija Capas modo de fusión a "diferencia".
página 3. Realizar "Combinar visibles" operación en capas, para obtener una sola capa.
página 4. Realizar la operación => Imagen / Ajustes / Ecualiza
Después de que usted debe obtener dicha imagen:
Como se puede ver
- píxeles intermedios que era en un solo tono de color rojo no fue interpolado en absoluto.
También el tramado de las zonas de imagen de la izquierda y la derecha es un poco diferente. Tratar de reconstruir el tramado algoritmo con tal comportamiento.
Solución
Si usted está reduciendo de 8 bits a 7, va a tirar casi ninguna información. ¿Seguro de que aún necesita tramado?
Si necesita tramado, añadir ruido aleatorio y luego cortar, que será bueno un montón para su aplicación.
Otros consejos
Se podría utilizar un ordenada tramado . Es más gruesa en busca de Floyd-Steinberg pero no hay dependencia entre píxeles.
Editar Dado que sólo está quitando un poco, esto se convierte en casi trivial. El principio detrás de indecisión ordenada es crear un patrón que empuja el umbral de transición; en este caso el sesgo será 0 ó 1 y el patrón será de 2x2 píxeles. Estos dos cambios juntos harán que el patrón mucho menos desagradable que el de un artículo de Wikipedia -. Usted puede ser que incluso gusta más que Floyd-Steinberg
Aquí hay algunos pseudo-código:
bias = (X xor Y) and 0x01
value = pixel + bias
if value > 255: value = 255
pixel = value and 0x7e
Editar 2: Esto es el resultado de mi diferencia, lo mejor que puedo hacer. Sin saber cómo asignar sus valores de 7 bits de nuevo a 8 bits no soy capaz de hacerlo mejor.