Étape 2: Logiciel de Conversion Bitmap
Depuis le début du projet, nous savions qu’il était impossible pour nous d’utiliser toutes sortes de formats de couleurs sur les images que nous souhaitons afficher. Afin de respecter le cahier des charges et de respecter les contraintes techniques, nous avions besoin de choisir un taux fixe format et respectez-le. Le format de couleur requis est le RGBA avec 16 bits de pixel et 12 bits couleur et 4 bits composant de transparence. Sachant que ce format n’est pas un standard, nous avons dû développer un logiciel de conversion afin de créer des images de ce format. Un autre avantage d’un tel logiciel est la possibilité de modifier n’importe quel certaines caractéristiques de l’image, tels que la transparence.
Nous avons choisi le C++ comme un langage de programmation, et nous avons utilisé le QT creator pour la bibliothèque graphique. Le C++ est un langage de développement de logiciels que nous sommes habitués et nous savions que streamss fichier serait facile à manipuler. Nous avons réussi à lire les images que nous avons voulu modifier sans aucun problème. Grâce au logiciel QT Creator et la bibliothèque Qt, nous avons créé une interface graphique très simple, ce qui rend l’utilisation du logiciel très intuitif.
Le logiciel que nous avons conçu est très utile pour modifier le format des images, si nous voulons utiliser avec succès dans la carte FPGA. Les images à convertir doivent être au format BITMAP 24 bits à cause de trois raisons :
- Ce type de format ne pas compresser les images. Étant donné que l’image que nous voulons stocker dans le FPGA sera ne pas compressé, il faudra une image décompressée.
- FPGA traitement d’image pour compression/décompression (JPEG/MPEG) déjà existe comme noyau ouvert IPs, mais il est très difficile à mettre en œuvre. C’est pourquoi il est plus facile de traiter des images qui sont déjà décompressés. Il convient de noter que la taille excessive de ce type d’images n’est pas un problème en raison de la zone de la mémoire disponible et la vitesse de transfert de données via le DMA.
- Sa qualité est supérieure à 16 bits.
- Il est disponible partout (beaucoup de logiciels disponibles comme « Paint » peut convertir n’importe quel type d’images au format BITMAP 24 bit).
- La transparence n’est pas disponible. Qui nous donne plus de flexibilité en ce qui concerne la transparence dans notre propre façon.
Nous l’avons mentionné plus tôt la gestion de la transparence. Dans une question de fait, notre logiciel a été également créé afin d’être en mesure de régler les niveaux de transparence des couleurs d’une image donnée. Puisque notre carte graphique peut gérer jusqu'à 4 couches d’affichage indépendant, il est essentiel que nous soyons en mesure de modifier la transparence d’une image ou définir un transpareny couleur sur écran sinon multicouche itn n’apportera aucun bénéfice.
Nous avons deux options différentes pour cette transparence :
- La première consiste de rendre opaque une série de couleur (5 maximum). Ex : Rendre le fond d’un sprite transparent
- L’autre consiste à choisir la transparence de toutes les couleurs ne prenant pas en compte dans l’option numéro une. Ex : Rendre l’image d’un feu de 50 % transparent afin d’affiner son animation.
Procédure
Première étape : Chargement de l’image et en choisissant les bons paramètres de configuration.
On commence par choisir l’image à convertir et le chemin vers où nous voulons enregistrer. Puis, nous avons mis les paramètres de transparence que nous l’avons expliqué dans la section précédente. Lorsque l’image a fini de charger, le logiciel va commencer en lisant les premiers octets de l’image donnée. Ces octets contient les dimensions de l’image et ne sera pas copié dans le fichier de sortie car la carte FPGA ne tiennent pas compte de ces données mais utilise uniquement les données correspondant à un pixel. Après l’acquisition des premiers octets de l’image, le logiciel peut démarrer la conversion.
Deuxième étape : Conversion de l’image.
Dans cette deuxième phase le logiciel indiquera seulement chaque octet définissant les couleurs d’un pixel pour le mettre dans un format de 16 bits. C’est un processus simple utilisant un décalage droite binaire de 4 bits pour pouvoir disposer de 4 bits par couleur au lieu de 8 bits. Nous l’ajouter à ces couleurs d’og 12 bits 4 peu de transparence en utilisant les paramètres définis au début de la procédure.
Troisième étape : Définissant le bon format de l’image.
Cette dernière étape consiste à ajuster les données. La matrice BITMAP stocke les pixels décroissant, tenant compte du niveau de lignes. Depuis les spécifications du format image que nous voulons imposer un ordre croissant des pixels, il faut réorganiser les pixels dans le bon ordre. Nous avons rencontré le même problème à l’ordre du bit. Nous avons corrigé il en remplaçant 0xRGBA par 0xGRAB.
Une fois que l’image est au format voulu, la gauche seule chose consiste à transférer l’image vers la RAM de la FPGA utilisant le microcontrôleur STM32.