¿Existe un estándar de color 0-255?

Por lo tanto, se me encomendó un trabajo en el que escribiría una aplicación C# que analizaría una imagen y enumeraría el color de cada píxel. El problema es que no estoy muy seguro de qué estándar debe ser el color. La especificación dice:

'px (un valor en el conjunto de resultados)' será el color del píxel en un punto específico de la imagen. El color del píxel estará entre 0 y 255, inclusive.

Más adelante en la especificación, brinda un "ejemplo de una imagen de 3x5", luego procede a mostrar 3 filas de 5 números individuales entre 0 y 255.

Obviamente no está pidiendo los valores hexadecimales o CMYK. Parece que podría estar solicitando el RGB, pero realmente parece que está solicitando un valor entero ÚNICO entre 0-255 que identifica completamente el color de un píxel en particular.

¿Existe tal estándar?

Este es un extracto de la especificación:

Aquí hay un ejemplo de un archivo de imagen de 3x5, "dibujo de bebé.img".

255, 6, 65, 78, 99

100, 25, 0, 45, 66

88, 190, 88, 76, 50

Oh, parece que nadie hizo esto: Hola y bienvenidos a GD.SE. Estamos contentos de tenerte aquí.
Es plausible que su función reciba un canal de color individual. ¿Hay alguna función relacionada que, digamos, tome un nombre de archivo o una secuencia y devuelva una matriz n-dimensional donde n = número de canales? Esto parece poco probable dada la descripción, pero...
No podemos responder a esto. Debe volver con quien escribió la especificación y preguntarle qué quiso decir. La teoría de que tal vez se refiera solo a imágenes en blanco y negro es una buena teoría, pero obviamente no podemos decirlo con seguridad, ya que no escribimos la especificación.
Tal vez puedas señalar toda la especificación de alguna manera

Respuestas (2)

Los enteros de 1 byte de longitud son bastante normales para las imágenes, se puede decir que es estándar. Hexadecimal es lo mismo con diferente notación (ff=255, 00=0)

1 componente por píxel tampoco es terriblemente raro, es una imagen en escala de grises o cualquiera de muchas otras cosas, como alfa.

También había pensado en eso... que podría ser el canal alfa en un bmp en escala de grises. ¡Pero, uno pensaría que la especificación podría MENCIONAR ESO! jajaja
@hill: RGB es en realidad solo tres imágenes en escala de grises con el entendimiento implícito de que cada una se representará con un filtro de color. Para complicar las cosas, algunos alfa se almacenan como 0-127 y se "estiran" a 0-255 en la decodificación :(

Puedo entender la confusión, cuando normalmente uno espera, para RGB un número de tres (o cuatro) bytes 0xRRGGBB, cuando RR, GG y BB van de 0x00 a 0xFF. Puede pensar que RGB8 es un estándar similar con solo 2 bits por rojo, verde y azul (y un canal alfa de 2 bits). Pero no¹...

Por lo que parece, la imagen es un mapa de bits² y utiliza un mapa de color de 8 bits, u 8bpp, por lo que se admiten 256 colores distintos.

Cada byte representa un píxel³ y es un índice de una tabla que contiene 256 colores. Esta tabla se mantiene en la memoria y puede contener un conjunto de colores definido por el usuario o un sistema estándar definido , conocido como paleta de colores .

Los colores reales en esta paleta de colores no están escritos en piedra. No existe un estándar real, aparte de un estándar relacionado con un sistema operativo en particular. Es posible cambiar los colores en la paleta de colores, de modo que cambien los colores a los que se refieren los índices, lo que se denomina animación de paleta de colores y puede usarse para crear algunos efectos bastante psicodélicos .

De hecho, los valores pueden representar una escala de grises creciente, pero en este caso, el OP establece que cada número representa un color y no un tono de gris . En cuyo caso, está utilizando una paleta de colores.

Entonces, en resumen, una respuesta a la pregunta del OP es que no hay un color establecido para cada píxel, el programa C# simplemente tiene que obtener el índice de color para cada píxel. El color real que representa el índice es irrelevante hasta que se haya definido la paleta de colores.

Espero que tenga sentido.


Como un aparte histórico, no hace mucho tiempo (mediados de los 80), las tarjetas de video de 8 bits alguna vez estuvieron en el extremo superior de la tecnología actual en ese momento. Luego vino el color de 16 bits (miles de colores) a principios de los 90, luego el color de 24 bits (millones de colores), a mediados de los 90 (Apple Quadra Series) y ahora 32 bits es de rigor .


¹ Aunque hay excepciones (3 bits para R y G y 2 bits para B), el crédito es para joojaa por la sugerencia.

² Hay varios formatos de mapa de bits: BMP (Windows); XPM (ventanas X); TIFF y; PPM, por nombrar solo algunos. Consulte la lista de extensiones de archivos de imagen de mapa de bits .

³ También podría valer la pena echar un vistazo a la entrada de Wikipedia para formato de píxel .

Estoy de acuerdo en que suena como una imagen de 8 bits. Y enfatizaría que necesita definir una tabla de colores o usar la tabla de colores estándar del sistema operativo. El problema es que no encuentro una tabla de colores "estándar". Dejo aquí un ejemplo otake.com.mx/Foros/ColorTable-SystemWin.png pero algunas tablas de colores usan la primera fila para colores vga. Vea si puede definir esta tabla de colores en alguna parte.
Rechacé esta opción porque la especificación thd no dice que es un ÍNDICE sino un color que indicaría que es un nivel de valor. Sin embargo, la pregunta es tan difícil de decir que es tan probable que tengas razón como cualquiera.
Estoy de acuerdo en que la pregunta es bastante vaga. Sin embargo, no conozco un esquema de color absoluto de 8 bits, aparte del uso de paletas de colores. Puede haber un método, pero no lo sé. TBH, pensé que la pregunta se refería inicialmente a una escala de grises... :-)
Bueno, los formatos PDF, postscript y Unix antiguos tienen tales esquemas.
Aprendes algo nuevo todos los días... Color de 8 bits . Gracias, actualizaré mi respuesta.
Gracias por todas las respuestas. Una persona sugirió que los 5 valores en la fila de ejemplo representaban los canales RGB X e Y. Lo cual, no sé qué son los canales X e Y, y eso no parece encajar con todo el asunto de "Aquí hay una imagen de 3x5 representada por un gráfico de valores de 3x5". También pensé que era un promedio de los valores RGB, pero eso tampoco tiene sentido porque la especificación también exige que cada valor sea un número entero, por lo que tendrían que ser números enteros. Estoy tratando de presionar para obtener una aclaración, pero también exploraré la posibilidad del mapa de color de 8 bits.
@hill: Creo que "3x5" fue una elección realmente mala cuando se mide en la escala de ambigüedad. Si fuera "5x5", entonces no estaríamos tentados a suponer que el gráfico es de 3 flujos individuales de 5 valores para usar con RGB.