Paso 2: Software de conversión de mapa de bits
Desde el comienzo del proyecto, sabíamos que era imposible utilizar todo tipo de formatos de color en las imágenes que queremos mostrar. Con el fin de cumplir con las especificaciones y se respeten las restricciones técnicas, necesitábamos eligió un fijo y el formato de quedarte con él. El formato del color requerido es RGBA con píxeles de 16 bits y componente de transparencia de color y 4 bits 12 bits. Sabiendo que este formato no es una norma, tenemos que desarrollar un software de conversión para crear imágenes de este formato. Otra ventaja de este tipo de software es la posibilidad de modificar cualquier algunas características de la imagen, como la transparencia.
Elegimos el C++ como lenguaje de programación y utilizamos el QT creator para la biblioteca de gráficos. El C++ es un lenguaje de desarrollo de software que estamos acostumbrados y sabíamos que ese archivo streamss sería fácil de manejar. Hemos conseguido leer las imágenes que queríamos modificar sin ningún problema. Gracias a la librería Qt y el software de QT Creator, hemos creado una interfaz gráfica muy simple, por lo tanto, haciendo el uso del software es muy intuitivo.
El software que hemos diseñado es muy útil para cambiar el formato de las imágenes si queremos utilizarlas con éxito en la tarjeta FPGA. Las imágenes a convertir deben estar en el formato de mapa de bits 24 bits debido a tres razones:
- Este tipo de formato no comprime las imágenes. Ya que será la imagen que queremos guardar en la FPGA no serán comprimidos, será necesaria una imagen descomprimida.
- FPGA procesamiento de imagen para compresión/descompresión (JPEG/MPEG) ya existe como núcleo abierto IPs pero es muy difícil de implementar. Por esta razón es más fácil de proceso de imágenes que ya se descomprimen. Debemos señalar que el tamaño excesivo de este tipo de imágenes no es un problema debido a la zona de memoria disponible y la velocidad de transferencia de datos a través de la DMA.
- Su calidad es superior a 16 bits.
- Está disponible en todas partes (mucho software disponible como "Pintura" puede convertir a cualquier tipo de imágenes en formato de mapa de bits 24 bits).
- Transparencia no está disponible. Que nos da más flexibilidad en el trato con la transparencia en nuestro propio camino.
Mencionamos anteriormente la gestión de la transparencia. En una cuestión de hecho, nuestro software también fue creado con el fin de establecer los niveles de transparencia de los colores de una imagen. Puesto que nuestra tarjeta gráfica puede manejar hasta 4 capas de pantalla independiente, es crucial para poder cambiar la transparencia de una imagen o establecer un transpareny color en pantalla lo contrario multicapa itn no traerá ningún beneficio.
Tenemos dos opciones para esta transparencia:
- El primero consiste en hacer opaco una serie de color (5 máximo). Ej.: Transparentar el fondo de un sprite
- El segundo consiste en elegir la transparencia de todos los colores sin tomar en cuenta en la opción número una. Ej.: Hacer transparente la imagen del fuego 50% con el fin de refinar su animación.
Procedimiento
Primer paso: Carga de la imagen y elegir los parámetros correctos de la configuración.
Comenzamos por elegir la imagen a convertir y la ruta donde queremos guardarlo. A continuación, ponemos los parámetros de transparencia que explicamos en la sección anterior. Cuando la imagen ha terminado de cargarse, el software comenzará por leer los primeros bytes de la imagen. Estos bytes contiene las dimensiones de la imagen y no se copiarán en el archivo de salida porque la tarjeta FPGA no tome en cuenta estos datos pero utiliza sólo los datos correspondientes a un píxel. Después de la adquisición de los primeros bytes de la imagen, el software puede iniciar la conversión.
Segundo paso: Conversión de la imagen.
En esta segunda fase el software sólo leerá cada byte definir los colores de un píxel para ponerlo en un formato de 16 bits. Es un proceso simple utilizando un desplazamiento derecha binario de 4 bits para poder tener 4 bits por color en lugar de 8 bits. Que agregar a estos colores de og 12 bit 4 bit de transparencia utilizando los parámetros definido al principio del procedimiento.
Tercer paso: Ajuste el formato de derecho de la imagen.
Este paso final consiste en ajustar los datos. La matriz de mapa de bits almacena los píxeles en orden teniendo en cuenta el nivel de líneas decreciente. Desde las especificaciones del formato de imagen que queremos imponer un orden creciente de los píxeles, tenemos que reorganizar los píxeles en el orden correcto. Nos encontramos con el mismo problema para el orden de bits. Hemos corregido cambiando 0xRGBA por 0xGRAB.
Una vez que la imagen está en el formato deseado, la izquierda lo único que es transferir la imagen a la RAM de la FPGA mediante el microcontrolador STM32.