9 votos

Comprender los requisitos de memoria para un archivo de imagen

Quiero entender los requisitos de memoria para la imagen de los archivos de recursos para ser visualizado en una resolución de 240x400 pantalla.

La pantalla tiene las siguientes especificaciones:

specs

Soporta hasta 18 bits de profundidad de color y utiliza ILI9327 controlador de pantalla.

Suponiendo que tengo que mostrar 50 iconos diferentes, cada uno de tamaño 10 mm X 10 mm, ¿cuál es el espacio de almacenamiento necesario?

Aquí están mis cálculos:

Píxeles por mm = 400/61.2 = 6.536

Número de píxeles en una imagen = 65.36 x 65.36 = 4272 píxeles

Cada píxel se requieren 18 bits X 3 (para R, G y B) = 54 bits

Total de bits requerido = 4272 x 54 = 230688 bits = 28.16 kilobytes

50 imágenes, voy a exigir 1.375 megabytes de almacenamiento.

Es mi cálculo correcto?

17voto

WhatRoughBeast Puntos 20870

Píxeles por mm = 400/61.2 = 6.536

Yup.

Número de píxeles en una imagen = 65.36 x 65.36 = 4272 píxeles

Así, la media de los píxeles por el icono. Pero aún así, usted no puede producir fracciones de píxeles, por lo que su número debe ser de 65 x 65 o 66 x 66. Y esto conduce a una mayor simplificación. ¿Por qué no hacer que los iconos de 64 x 64? Esto simplificará la dirección de cálculo para su memoria, y que sólo se producen una "contracción" de aproximadamente 2%. Y confía en mí, en este tamaño, nadie se dará cuenta. A continuación, los iconos se 4096 píxeles de tamaño.

Cada píxel se requieren 18 bits X 3 (para R, G y B) = 54 bits

Nope. Como jms acaba de responder, es de 18 bits por píxel total, o 6 bits por color. De nuevo, sin embargo, se debe considerar la posibilidad de no preocuparse mucho sobre el nivel de bit. Almacenar sus valores de color de forma parcial bytes (6 bits por byte) con zona separada para los bytes de cada color. Esto tomará un 33% más de memoria, pero va a reducir drásticamente su carga de procesamiento cuando se transfiere desde la memoria a la pantalla.

Total de bits requerido = 4272 x 54 = 230688 bits = 28.16 kilobytes

Total de bits es de 4096 x 24, o 98304 bits, o 12288 bytes.

50 imágenes, voy a exigir 1.375 megabytes de almacenamiento.

12288 50 veces da 614400 bytes.

11voto

GSerg Puntos 33571

Hacer la vida más fácil al hacer que los iconos de 64×64 píxeles. Dibujar un borde alrededor de ellos si usted quiere que se vea más grande.

Con el color de 16 bits formato, esto sólo requiere de 8 kB por icono, o 400 kB para el conjunto de los 50.

Una forma simple de compresión es el uso de una tabla de colores en lugar de almacenar cada uno de los píxeles del color directamente. 16 colores es con frecuencia más que suficiente para un icono, especialmente si se aplica un poco de creatividad tramado. Esto reduce el almacenamiento a 2 kB por icono, además de 32 bytes para la tabla de colores. Total de almacenamiento es de un poco más de 101 kB si cada icono tiene su propia tabla de colores.


Sólo para satisfacer mi propia curiosidad, me agarró de la siguiente "peor caso" de la imagen (de aquí):

the power of colours

Este ImageMagick de la línea de comandos

convert image.jpg -crop 267x267+66+0 -resize 64x64 -colors 16 final.png

convertido en esto:

enter image description here

No está mal, y por supuesto de origen de las imágenes con un rango más limitado de colores va a salir incluso mejor. Por ejemplo, aquí es Olin, procesadas de la misma forma:

enter image description here enter image description here

9voto

RelaXNow Puntos 1164

Más acerca de la profundidad de color

Ampliación de Dave Tweed de la respuesta, usted puede hacer incluso mejor de lo que mostró.

Aquí es el mismo de gran tamaño original utilizó:

Recorta cuadrada y reducido a 64 x 64 píxeles, pero el uso completo (8 bits por color rojo, grn, blu) color de los rendimientos:

El redondeo de la información de color de 8 bits por canal a 6 bits resultados en:

Que es lo que la pantalla puede hacer, ya que dicen que soporta 18 bits de profundidad de color.

El redondeo de la información de color de más de 5 bits para el rojo, 6 para el verde, y 5 para el azul, para un total de 16 bits/píxel se obtiene:

Este debe ser realmente un montón lo suficientemente bueno para los iconos.

Incluso sin ningún tipo de compresión, los iconos de este formato de tomar sólo el 64 x 64 x 2 = 8192 bytes. 50 imágenes requeriría 409,600 bytes.

8voto

Asher M Puntos 11

Cada píxel se requieren 18 bits X 3 (para R, G y B) = 54 bits

Su estimación es incorrecta. El "18 bits", el valor es por píxel, no por el color. El rojo, verde y azul canales cada uno tiene una profundidad de bits máxima de 6 bits (64 valores diferentes), 18 bits en total.
Este controlador de pantalla también soporta un modo de 16 bits (donde los datos de los píxeles sólo tiene 5 bits para el rojo, 6 verdes y 5 azul), que hace que sea fácil de empacar cada píxel en sólo dos bytes. Esto hace que sea más fácil para almacenar mapas de bits de manera eficiente y aumenta la cantidad de píxeles que se pueden escribir en la pantalla por segundo.

enter image description here

Número de píxeles en una imagen = 65.36 x 65.36 = 4272 píxeles

Usted no puede prácticamente tienda de fracciones de píxeles, por lo que su real de mapas de bits (imágenes/sprites/personajes/lo que sea) probablemente sería 652 = 4225 píxeles.

Ir por el camino fácil (de 16 bits R5G6B5 formato de píxel), 4225 * 16 bits equivaldría a 67600 bits por mapa de bits, o 8450 bytes por mapa de bits. 50 imágenes requeriría 423 kB (sin compresión).

Si usted realmente quiere la plena profundidad de color, usted necesita más de 2 bytes por píxel. En esa etapa que bien podría dedicar un byte para cada color (como WhatRoughBeast sugiere), que va a inflar más el requisito de almacenamiento por 3/2 (634 kB de 50 65x65 mapas de bits).

Usted también podría pack de 18 bits píxeles uno al lado del otro en la memoria (subpixel bits no alineados con los límites de bytes), sin perder de bits. Sólo se necesita 476 kB para el 50 65x65 de 18 bits mapas de bits, pero sería un dolor de programa y más lento el proceso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X