Korszerű Információs Rendszerek
PÓT Beadandó feladat
Feladat megoldáshoz névkonvenciók:
Kód: neptunkod.c Kép: final.bmp
A programoknak egy szálon kell futniuk. Az összes lényegi algoritmushoz (átlagolás, invertálás, képek egyesítése) 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 windows.bmp és arrow.bmp a gyökérben.
A következő feladatokat kell megoldani:
- Adott két BMP file (ami egy tömörítetlen képformátum): arrow.bmp, windows.bmp. A mellékelt bitmapben a 0x36 byte-tól kezdve vannak tárolva a pixeladatok BGR (3*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 az arrow bitmapet!
- Az arrow bitmap mérete 2048x1024 pixel, ezért ezt kicsinyítse le 1024x1024-re úgy, hogy vertikálisan (EGYMÁS ALATTI pixelekre nézve) az értékeket átlagolja!
- Az átméretezett arrow bitmap minden pixelének színét invertálja (cserélje ki az inverzére: fehér -> fekete, fekete -> fehér)!
- Töltse be a windows bitmapet is!
- Az átalakított (lekicsinyített és invertált) arrow bitmapet egyesítse a windows bitmappel a következő módon: ahol az arrow bitmap fekete volt, ott az eredmény képen kék (R: 0, G: 0, B: 255) pixelek szerepeljenek (Ha az invertálás után úgy jön ki, lehet az 1-es értékeket is feketének venni, nem csak a teljesen fekete 0 értéket).
- Az összes többi részen (tehát ahol NEM a fekete nyíl volt az invertált képen), ott az arrow.bmp és a windows.bmp pixelértékeit mossa össze olyan módon, hogy minden eredmény pixel 25%-ban az arrow.bmp, 75%-ban pedig a windows.bmp értékét tartalmazza.
- Az eredményt mentse le final.bmp néven! (Az eredménynek kb így kell kinéznie: potfinal.bmp)
A betöltött képen minden műveletet pontosan ebben a sorrendben kell végrehajtani, viszont nem szükséges a köztes állapotokat lementeni, csak a végső (final.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) személyesen kell bemutatni és megvédeni az aláíráspótló vizsga alkalmával. Ezek időpontja a neptunban vannak kiírva. Természetesen ehhez jelentkezni kell az adott alpótra neptunban.