Bärbar spelkonsol (ARM MCU Team) (2 / 6 steg)
Steg 2: Bitmapp konvertering programvara
Sedan början av projektet visste vi att det var omöjligt för oss att använda alla typer av färg format på bilder som vi vill visa. För att uppfylla specifikationerna och respektera de tekniska begränsningarna, behövde vi valde ett fast format och sticka med den. Det färgformat som krävs är RGBA med 16-bitars pixlar och 12 bitars färg och 4 bitar öppenhet komponent. Att veta att detta format inte är en standard ett, vi var tvungna att utveckla en konvertering programvara för att skapa bilder av detta format. En annan fördel med sådan programvara är möjligheten att ändra vissa egenskaper hos bilden, till exempel transparens.
Vi valde C++ som ett programmeringsspråk och vi använde QT skaparen för grafik-biblioteket. I C++ är en programvara utveckling språk som vi är vana vid och vi visste att filen streamss skulle bli lätt att hantera. Vi lyckades läsa de bilder som vi ville ändra utan problem. Tack vare programvaran QT Creator och Qt-bibliotek skapade vi ett mycket enkelt grafiskt gränssnitt att användning av programvaran mycket intuitivt.
Den programvara som vi har utformat är mycket användbart för att ändra format på bilder om vi vill kunna använda dem i FPGA-kort. Bilderna att konvertera måste vara i formatet BITMAP 24 bit av tre skäl:
- Denna typ av format inte komprimera bilderna. Eftersom den bild som vi vill lagra i FPGA blir inte komprimeras, en expanderas bild kommer att bli nödvändigt.
- FPGA bildbehandling för komprimering/dekomprimering (JPEG/MPEG) redan finns som öppen kärna IPs, men det är mycket svårt att genomföra. Det är därför det är lättare att behandla bilder som redan expanderas. Vi bör notera att överdriven storleken av denna typ av bilder inte är ett problem på grund av tillgängligt minne zon och hastigheten på dataöverföring via DMA.
- Dess kvalitet är överlägsen 16 bitar.
- Den finns överallt (en hel del tillgänglig programvara som "Färg" kan konvertera alla typer av bilder i BITMAPP 24 bitars format).
- Öppenhet är inte tillgänglig. Vilket ger oss större flexibilitet i hanteringen av öppenheten i vårt eget sätt.
Vi nämnde tidigare öppenhet förvaltningen. I själva verket skapades vår programvara också för att kunna fastställa de öppenhet färgerna i en viss bild. Eftersom våra grafikkort kan hantera upp till 4 oberoende uppvisning lager, är det viktigt för oss att kunna ändra genomskinligheten för en bild eller ange en transpareny färg på itn annars multilayer displayen medför ingen vinst.
Vi har två olika alternativ för denna öppenhet:
- Den första består av att göra en serie av färg (5 högsta) ogenomskinlig. Ex: Göra bakgrunden av en sprite transparent
- Den andra består av att välja insyn i alla färger inte tar i beaktande i alternativet nummer ett. Ex: Att bilden av en brand 50% öppet för att förfina dess animering.
Förfarande
Första steget: Läsa in bilden och välja rätt parametrar för konfiguration.
Vi börjar med att välja bilden för att konvertera och sökvägen till där vi vill spara den. Sedan sätta vi öppenhet parametrarna som vi förklarade i föregående avsnitt. När bilden har lästs in, startar programvaran genom att läsa den första byten i den givna bilden. Dessa byte innehåller dimensionerna av bilden och kommer inte att kopieras i utdatafilen eftersom FPGA kortet inte tar hänsyn till dessa uppgifter men använder bara uppgifterna motsvarar en bildpunkt. Efter förvärvet av första byte av bilden, kan programvaran starta konverteringen.
Steg: Konvertera bilden.
I denna andra fas kommer programvaran endast läsa varje byte definiera färgerna på en pixel för att sätta det i ett 16-bitars format. Det är en enkel process med en rätt binära förskjutning av 4 bitar för att kunna ha 4 bitar per färg i stället för 8-bitars. Vi Lägg till dessa 12 bit og färger 4 bitar av genomskinlighet med hjälp av parametrarna definieras i början av förfarandet.
Tredje steget: Ställa in rätt format på bilden.
Detta sista steg består på Justera data. Matrisen BITMAPP lagrar pixlar i fallande ordning med tanke på nivån som linjer. Sedan specifikationerna för det bildformat som vi vill införa en stigande ordning pixlar, måste vi ordna pixlarna i rätt ordning. Vi stötte på samma problem för bit beställa. Vi korrigerade det genom att ändra 0xRGBA till 0xGRAB.
När bilden är i formatet ville, är det enda som återstår att överföra bilden till av FPGA med STM32 mikrokontroller.