Stap 2: Bitmap conversiesoftware
Sinds het begin van het project wisten we dat het onmogelijk voor ons was gebruik van allerlei kleur formaten op de beelden die we wilt weergeven. Om te voldoen aan de specificaties en het respecteren van de technische beperkingen, we moesten een vaste koos opmaken en stok mee. Het vereiste formaat van kleur is de RGBA met 16 bit pixels en 12 bit kleur en 4 bit transparantie component. Wetende dat deze indeling niet standaard is, moesten we een conversiesoftware ontwikkelen om het maken van beelden van deze indeling. Een ander voordeel van dergelijke software is de mogelijkheid om een aantal kenmerken van de afbeelding, zoals de transparantie wijzigen.
We kozen de C++ als een programmeertaal en gebruikten we de QT-creator voor de grafische bibliotheek. De C++ is een software ontwikkelingstaal die we gewend zijn en we wisten dat bestand streamss zou gemakkelijk te hanteren. We kunnen lezen van de beelden die we wilden wijzigen zonder enig probleem. We gemaakt dankzij de QT-Creator-software en de Qt-bibliotheek, een zeer eenvoudige grafische interface, dus waardoor het gebruik van de software zeer intuïtief.
De software die we ontworpen is zeer handig voor het wijzigen van het formaat van de afbeeldingen als we willen ze met succes in de FPGA-kaart gebruiken. De beelden om te zetten moet de indeling BITMAP 24 bits vanwege drie redenen:
- Dit type indeling de beelden niet comprimeren. Aangezien de afbeelding die we willen slaan in de FPGA zullen niet worden gecomprimeerd, een gedecomprimeerd beeld nodig zal zijn.
- FPGA beeldverwerking voor compressie/decompressie (JPEG/MPEG) al bestaat als open kern IPs, maar het is zeer moeilijk te implementeren. Dit is de reden waarom het is makkelijker voor het verwerken van afbeeldingen die al zijn gecomprimeerd. We moeten er rekening mee dat de buitensporige omvang van dit soort opnamen niet een probleem vanwege de beschikbare geheugen zone en de snelheid van data-overdracht via de DMA is.
- Zijn kwaliteit is superieur aan 16-bits.
- Het is beschikbaar overal (een heleboel beschikbare software zoals 'Paint' kunt converteren naar elk type van afbeeldingen in de indeling BITMAP 24-bits).
- Doorzichtigheid is niet beschikbaar. Dat geeft ons meer flexibiliteit in de omgang met de transparantie in onze eigen manier.
Eerder vermeldden wij het beheer van de transparantie. In een kwestie van feit, is onze software ook gemaakt om te kunnen de niveaus van de transparantie van de kleuren van een bepaalde afbeelding instellen. Aangezien onze grafische kaart maximaal 4 onafhankelijke vertoning lagen verwerken kan, is het cruciaal voor ons om de transparantie van een afbeelding wijzigen of instellen van een transpareny te kunnen kleur itn anders gelaagde tentoongesteld brengt geen winst.
We hebben twee verschillende opties voor transparantie:
- De eerste bestaat uit een reeks van kleur (maximaal 5) ondoorzichtig maken. Ex: De achtergrond van een sprite doorzichtig maken
- Ten tweede bestaat de transparantie van alle kleuren niet nemen in overweging bij de nummer één optie te kiezen. Ex: Het beeld van een brand 50% transparant maken ter verfijning van de animatie.
Procedure
Eerste stap: Laden van de afbeelding en het kiezen van de juiste parameters voor configuratie.
We beginnen met het kiezen van de afbeelding om te zetten en het pad naar waar we wenst op te slaan. Dan zetten we de transparantie-parameters die we uitgelegd in de vorige sectie. Wanneer de afbeelding is geladen, zal de software beginnen met het lezen van de eerste bytes van de opgegeven afbeelding. Deze bytes bevat de afmetingen van de afbeelding en worden niet gekopieerd in het uitvoerbestand omdat de FPGA-kaart doen geen rekening gehouden met deze gegevens, maar alleen de gegevens die overeenkomen met een pixel gebruikt. Na de overname van de eerste bytes van het beeld, kan de software start de conversie.
Tweede stap: Het omzetten van de afbeelding.
In deze tweede fase zal de software alleen lezen elke byte de kleuren van een pixel te definiëren om te zetten in een 16-bits indeling. Het is een eenvoudig proces met behulp van een juiste binaire verschuiving van 4 bit te kunnen hebben van 4 bits per kleur in plaats van 8 bits. We het toevoegen aan deze 12 bit og kleuren 4 bit transparantie met behulp van de parameters vastgesteld aan het begin van de procedure.
Derde stap: Instellen van het juiste formaat van de afbeelding.
Deze laatste stap bestaat over het aanpassen van de gegevens. De BITMAP matrix slaat de pixels in aflopende volgorde gelet op het niveau van de lijnen. Sinds de specificaties van de installatiekopie-indeling die we willen opleggen van een toenemende volgorde van de pixels, hebben we aan het herschikken van de pixels in de juiste volgorde. Wij ontmoeting idem werkstuk voor de bitvolgorde. Wij gecorrigeerd door het veranderen van 0xRGBA naar 0xGRAB.
Zodra het beeld in het gewenste formaat is, is het enige wat overblijft het beeld overbrengen naar het RAM van de FPGA met behulp van de STM32 microcontroller.