Stap 2: Beeldverwerking
We willen raw pixelgegevens Haal uit het beeld, dan comprimeren dat en de reconstrueren in de FPGA via VGA-kabel. Hiervoor gebruikt ik Matlab, maar u kunt ook python.
Een belangrijk ding om te vermelden is dat het een pixel bestaat uit 3 componenten: rood, groen en blauw en dus heet RBG. Dit betekent dat een andere kleur (oranje, bruin...) kan worden gemaakt met behulp van deze 3 basis kleuren.
Meestal is er 3 bytes per pixel gewijd voor kleuren (een Byte per basiskleur). Voor VGA alle 3 kleuren worden opgeslagen in slechts één Byte dus hebben we om een of andere manier comprimeren drie Bytes in één. Vanuit het gegevensblad zult u zien dat de eerste 3 bits (van het minste significante beetje / van de meest juiste positie) zijn rood, vervolgens 3 bits voor groen en de laatste 2 bits voor blauwe kleuren.
In de eerste plaats het gebruik van Matlab functie imread ('name.png'); die leest van de afbeelding en slaat haar pixelinformatie. Vervolgens kunt halen we R, G & B onderdelen in het scheiden van variabelen en die vervolgens te converteren naar dubbele indeling voor verdere conversies. Voor de componenten van het rood en groen te vertalen van 1 Byte (8 bits) in 3 bits kunnen we verhogen de decimale waarde van het component naar 3/8 (wiskundig, stijgen totaal 3 stukjes bits nummer wortel, die 8 is..). Dit nummer is voor blauwcomponent 1/4 (of 2/8, dat hetzelfde is). Vertalen van het resultaat van uitvoerbaar aan uint8 (geheel getal van 8 bits) die zal ook het resultaat naar boven afronden. Sommige van de afgeronde waarden zou kunnen krijgen een beetje groter dan verwacht (door afronding enigszins verschillen tot plafond), dus min 1 voor de bits niet overloop. Dan moeten we alle 3 kleuren terug samen combineren tot een enkele uint8-waarde. Dit wordt gedaan door een verschuiving van groen 3 tijden, blauw 6 tijden en vervolgens toe te voegen Red, Green & Blue samen. Tot slot moet alles opslaan in een .list bestand in HEX formaat. (Zie Matlab-bestand).
Na het uitvoeren van de Matlab-script zal de gegevens worden opgeslagen in 'Mickey.list'. Voordat u afsluit Matlab, lees de grootte van de variabele kleur (linker- of rechterkant van Matlab venster waarin alle variabelen zijn opgeslagen) omdat zal u wilt geef deze waarde op in Verilog code over hoeveel lijnen van het dossier te lezen (voor Mickey.jpg het is 6960 x 2 char, dus noteer 6960). Ik ook voorzien in de gimp.txt en de gimp.list die u niet wilt doen het Matlab-deel.