Etape 2: Traitement de l’Image
Nous avons besoin extraire les données de pixel brutes de l’image, puis compresser le qui et le reconstruire dans le FPGA via câble VGA. Pour cela j’ai utilisé Matlab, mais vous pouvez utiliser python ainsi.
Il est important de mentionner que le pixel a 3 composantes : rouge, vert et bleu et ainsi s’appelle RBG. Ce qui signifie que n’importe quelle autre couleur (orange, marron...) peut être créé à l’aide de ces 3 couleurs de Base.
Habituellement, il y a 3 octets par pixel dédié pour les couleurs (un octet par couleur de Base). Pour VGA 3 de toutes les couleurs est stockés dans un seul octet donc il faut compresser en quelque sorte trois octets en une. De la feuille de données, vous verrez que les premiers bits 3 (depuis le bit le moins significatif / de la position plus droite) sont rouges, puis 3 bits pour le vert et les finales 2 bits pour les couleurs bleus.
Tout d’abord utiliser Matlab fonction imread (".png") ; qui lit l’image et stocke ses informations de pixel. Puis, nous pouvons extraire R, G & B composants en séparent les variables et puis que convertir au format double pour les autres conversions. Pour les composants rouge et vert traduire 3 bits de 1 octet (8 bits), nous pouvons augmenter la valeur décimale du composant à 3/8 (mathématiquement, monter 3 bits de total bit numéro racine, qui est 8..). Pour la composante bleue, ce nombre est 1/4 (ou 2/8, qui revient au même). Traduire le résultat de faisable d’uint8 (entier de 8 bits) qui sera également arrondir le résultat. Certaines des valeurs arrondies pourraient obtenir un peu plus grand que prévu (arrondis au plafond), donc moins un pour les bits, pas de débordement. Nous devons combiner tous les 3 couleurs de retour ensemble en une valeur unique uint8. Cela se fait en déplaçant vert 3 fois, bleu 6 fois et puis additionner rouge, vert et bleu. Je dois enfin tout stocker dans un fichier .list au format hexadécimal. (voir fiche de Matlab).
Après avoir exécuté le script Matlab, les données sont sauvegardées dans « Mickey.list ». Avant de quitter Matlab, lire la taille de la couleur variable (côté droit ou gauche de la fenêtre Matlab où toutes les variables sont stockées) parce que vous devrez entrer cette valeur dans le code Verilog quant à combien de lignes du fichier à lire (pour Mickey.jpg C’est char 6960 x 2, donc la remarque en bas 6960). J’ai également fournir les gimp.txt et gimp.list pour ceux qui que vous ne voulez pas faire la part de Matlab.