¿Cómo se almacenan las imágenes en Ram como una matriz bidimensional de bytes que representan un píxel?

El ram se puede modelar como una matriz de palabras unidimensional, por lo que cualquier tipo de datos que cargue en la memoria estará más o menos organizado en parte / partes del ram.

Cuando se trata de imágenes, existe una gran diferencia entre lo que se guarda en el disco y lo que necesita para mostrar la imagen en general y, excepto para los tipos de imágenes en formato sin formato, lo que se guarda en el disco está en forma comprimida (con pérdida o sin pérdida).

Sin embargo, después de cargar los datos de la imagen del archivo y poder visualizarlos, la descompresión inicia y reconstruye la matriz de píxeles con algunos metadatos que describen cómo están organizados.

Por ejemplo: imaginemos que estamos cargando una imagen de 800 * 600 colores que tiene transparencia y cada color se representa con un byte.

Se verá en la memoria así (o algo similar)

Dirección 000000: entero de 32 bits que representa el ancho = 800

Dirección 000001: entero de 32 bits que representa la altura = 600

Dirección 000002: número entero de 32 bits que representa el formato de los datos = un número que representa la secuencia de colores como “RGBA”

Dirección 000003: inicio de la matriz de píxeles y que contiene el color del primer píxel como entero de 32 bits que se puede ver como 4 bytes: primer byte = valor rojo, segundo byte = valor verde, tercer byte = valor azul, cuarto byte = valor de transparencia

.

.

Dirección 480003: final de la matriz de píxeles y que contiene el color del último píxel como entero de 32 bits que se puede ver como 4 bytes: primer byte = valor rojo, segundo byte = valor verde, tercer byte = valor azul, cuarto byte = valor de transparencia

así que en un lenguaje de programación necesitará mantener los píxeles en alguna variable como estos píxeles [800 * 600] y para acceder al color en el píxel con posición (x, y) accederá a píxeles [x + ancho * y] y Si solo necesita el valor rojo, deberá extraer el byte correspondiente del valor de color.

La RAM es unidimensional, por lo que los valores de píxeles se almacenan como una matriz de bytes regular, con las dimensiones de la imagen también almacenadas como valores.

Es como una tira de píxeles, y luego cortas la tira en cada X bytes y obtienes un rectángulo.

More Interesting

¿Cuál es la mejor estrategia para obtener una solución óptima para cualquier problema de codificación solicitado en la entrevista de codificación?

¿Cómo se utilizan los punteros para la asignación dinámica de memoria de las variables?

¿Cuáles son los 10 algoritmos que uno debe conocer para resolver la mayoría de los problemas de algoritmos?

¿Cómo son útiles la estructura de datos y los algoritmos en el aprendizaje automático?

¿Qué es un algoritmo para emparejar 18 personas en los 816 grupos posibles de 3 con 6 grupos a la vez?

Paso mucho tiempo pensando en el diseño, por lo que la implementación es terriblemente lenta. ¿Cómo supero este problema?

¿Cuál es el algoritmo utilizado por la búsqueda de imagen inversa de Google (es decir, la búsqueda por imagen)? ¿Qué algoritmos necesitaría entender para crear una funcionalidad similar a pequeña escala?

¿Conoces alguna biblioteca de diario E2PROM que pueda usarse en controladores de 8 bits o al menos un algoritmo para hacerlo?

¿Qué tan difícil es aprender por sí mismo cómo codificar algoritmos eficientes?

Cómo enviar una matriz unidimensional a una función y tener esa misma matriz (posición en la memoria) convertida en una matriz bidimensional en C ++

¿Qué es mejor si necesito elegir un camino para mi carrera, algoritmos y estructuras de datos, o tecnologías de big data, en las que estoy trabajando actualmente?

¿Cuál es el mejor algoritmo para girar a la izquierda en los semáforos?

Si recibe fondos de miles de millones de dólares y tiene la tarea de crear un motor de búsqueda para competir con Google, ¿cómo sería su motor de búsqueda?

¿Cuáles son algunos proyectos que podrían realizarse utilizando estructuras de datos?

¿Qué algoritmo puedo usar para encontrar el camino más corto en un sistema de variante de tiempo?