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
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.
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 .
joojaa
Yorik
DA01
joojaa