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:

  1. 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:

    1. Töltse be az arrow bitmapet!
    2. 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!
    3. 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)!
    4. Töltse be a windows bitmapet is!
    5. 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).
    6. 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.
    7. 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.