¿Cómo se almacena una imagen decodificada en una memoria? [cerrado]

-1

Si decodificamos una imagen (cualquier formato) obtendremos una matriz de píxeles. Por ejemplo, considere una imagen con resolución 10x10 y profundidad de color de 16777216. Por lo tanto, el píxel está representado por 24 (888 RGB) bit 10x10 datos de matriz.

¿Mi duda es cómo se almacenan estos datos en una memoria de acceso aleatorio?

Una opción:

0x00: primer píxel (24 bits) 0x03: segundo píxel (24 bits) ...

opción dos:

0x00: parte roja del primer píxel (8 bits) 0x01: parte roja del segundo píxel (8 bits) ...

0x64: parte verde del primer píxel (8 bits) 0x65: parte verde del segundo píxel (8 bits) ...

¿Qué método es común? ¿O hay algún tercer método?

    
pregunta tollin jose

1 respuesta

5

Su resultado no es una matriz de MxNx3. Tu resultado es una secuencia de números. Puedes guardarlos como quieras.

Tome la pantalla LCD en la que está leyendo esto, por ejemplo. Eso es un dispositivo 2D, ¿no es así? Sin embargo, parece que tendría una pantalla de MxNx3. Mira más de cerca sin embargo. Muy cerca. Consigue una lupa y luce muy cerca.

En realidad es una matriz de (Mx3) xN. Tres píxeles físicos por cada uno que vea: uno rojo, uno verde y uno azul.

Entonces, en realidad tienes 3 veces más valores en la dirección X que píxeles en la dirección X.

Eso es un intercalado R / G / b directo, donde cada tres entradas en la matriz se combinan para hacer un solo valor de píxel.

O podría tener tres matrices separadas de MxN: una para almacenar la información de píxeles rojos, una verde y otra azul, si eso tiene más sentido para lo que está haciendo con los datos.

La mayoría de los sistemas, sin embargo, simplemente eligen representar cada píxel como un valor de 24 o 32 bits en un esquema de direccionamiento lineal. Normalmente, los 32 bits representan ARGB, donde A es un valor alfa (transparencia) y R, G y B representan el brillo de los tres colores, todos con una precisión de 8 bits. 24 bits es el mismo pero sin la información alfa. (A menos que usted sea Microsoft, por supuesto, cuando les gusta hacer ABGR u otras combinaciones extrañas en sus formatos de archivo, pero son simplemente tontos).

Entonces eso solo se trata como una sola lista de números.

Digamos que la imagen tiene un tamaño de 100x100 píxeles, que le daría una lista de 10,000 números para almacenar en la memoria. El hecho de que sea una imagen de 100x100 píxeles no está aquí ni allí en la memoria. Es solo lo que haces con esos datos cuando el hecho de que sea una imagen de 100x100 píxeles importa.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas