Korszerű Információs Rendszerek
Beadandó feladat
Feladat megoldáshoz névkonvenciók:
Kód: neptunkod.c Kép: modded_mario.bmp
A programoknak egy szálon kell futniuk. A lényegi algoritmushoz (pixelek értékeinek számolása) AVX2-t kell használni.
A 192.168.110.3 gépen kell futniuk a programoknak, ott lesznek ellenőrizve. Fordításuk minden esetben a gcc "forras.c" -o "binaris" -mavx2 paranccsal fog történni.
Ezen a gépen megtalálható a feladatokhoz szükséges mario.bmp a gyökérben.
A következő feladatokat kell megoldani:
- Adott egy BMP file (ami egy tömörítetlen képformátum): mario.bmp. A mellékelt bitmapben a 0x96 byte-tól (122. hely) kezdve vannak tárolva a pixeladatok BGRA (
3 4*8bit) egeszen a file végéig. A memóriában eredményként létrejött bitmap-et mentse el "final.bmp" néven. Ügyeljen arra, hogy a kimeneti BMP file header-jében a felbontást is helyesen kell beállítani!
Bitmap formátum
Készítsen egy programot (1 db .c file) amely a következő műveleteket hajtja végre:
- Töltse be a mario bitmapet!
- Kicsinyitse le a kepet horizontalisan (EGYMÁS MELLETTI pixelekre nézve) a felére (pl. 858x1080 kepbol 429x1080-es legyen) úgy, hogy csak minden 2. képpont értékét tartja meg!
- Atlagolja az egymás alatti paros es paratlan sorokat, igy kicsinyitve a kepet vertikalisan a felere (429x1080 -> 429x540).!
- Sötétítsen el minden pixelt az eredeti fényesség 55%-ára (minden RGB értéket szorozzon meg 0,55-dal)
- Az átalakított (lekicsinyített es elsotetitett) mario képet fordítsa el 180 fokkal (fejjel lefelé)!
- Számolja meg, hogy az eredmény kép hány db fehér (minden érték 230 felett: >230, >230, >230) pixelt tartalmaz és irassa ki az eredményt a képernyőre!
- A végső eredményt mentse le modded_mario.bmp néven!
A betöltött képen nem szükséges minden műveletet pontosan ebben a sorrendben végrehajtani és a köztes állapotokat lementeni, csak a végső (modded_mario.bmp) állapotot kell a programnak létrehoznia.
A programok futási idejének mérését én végzem olyan módon, hogy a "time ./binaris" parancsot futtatom le. Ez automatikusan megmutatja a program indítása és vége közötti időtartamot, így azt nem szükséges a programkódon belül semmilyen módon mérni.
A kész feladatot (1 db c forráskód, melynek neve mindenkinek a saját neptun kódja) bármelyik választott aláíráspótló alkalmon be lehet mutatni személyesen (aláíráspótló időpontok és jelentkezés neptunban!). Szükség esetén e-mailben lehet segítséget kérni.