1.1 Felbontás
1.2 Árnyalat visszaadás
1.3 Színvisszaadás
1.4 Színmenedzsment, jelek (számok) a képfájltól a megjelenésig.

1. A képmegjelenítés paraméterei

Vizualizáció

A számítógépekben tárolt adatokat (egyenlőre) jórészt a szemünkkel és a fülünkkel érzékelhetjük. Ehhez szükséges az adatokat megfelelően fény és vagy hangingerekké alakítani. Absztrakt módon gondolkodva, a számítógépekben tárolt információt egy virtuális világnak foghatjuk fel. Ekkor a megjelenítés két lépésből áll. Először a virtuális világról "fényképet" kell készíteni, majd ezt a képet fényingerré kell alakítani. Abban az esetben, ha a kijelzendő dokumentum már eleve képszerű (pl. szöveg, rajz, fotó) akkor az első lépés kihagyható, azonban más objektumok, pl. matematikai függvények, menetrendek, tőzsdei árfolyamok, tömörtest modellek, 3D vagy többdimenziós terek stb., esetén csak jó ötletekkel megvalósított vizualizáció ad eredményt. Fejezetünkben a képi megjelenítés második lépésével foglalkozunk.


1. ábra Matematikai függvény vizualizációja.
1.1 Felbontás

1.1.1 Pixel

A képmegjelenítő eszközöket megkülönböztetjük vonalrajzoló (vektoros) és pöttyözős (raszteres) módszerűekre. A vektoros megjelenítőkre példák a rajzgépek, tükrös lézeres rajzoló, (az ember). Ezen berendezések, természetüknél fogva, jól használhatók vonalas ábrák (tervrajzok, kapcsolási rajzok stb.) megjelenítésére, de nehézkesek árnyalatos képek kijelzésénél. Ezzel szemben a raszterkijelzők (pl. televízió, számítógép monitor, tintasugaras nyomtatók) könnyen boldogulnak az árnyalatos képekkel és, kellő felbontás esetén, a vonalas ábrák sem okoznak gondot. Így napjainkra már szinte csak raszterkijelzőkkel találkozunk.
A raszteres megjelenítéshez azonban a képeket egyenletes háló (raszter) mentén apró pontokra kell osztanunk. Ezeket az apró képrészeket angol nevük alapján pixelnek nevezzük. Egy pixelnek a tulajdonsága a képben elfoglalt helye (kettő db koordinátája) és színe. Fontos megjegyezni, hogy ebben az értelemben a pixelnek nincs mérte, csak pixeltávolságról beszélhetünk, valamint kettő koordinátáról, mert például, háromdimenziós esetben a térfogati elemet már voxelnek nevezik.

1.1.2 Mintavételezés

Raszteres megjelenítőn a legsűrűbb vonalazás úgy jeleníthető meg, hogy a sorokat felváltva feketére, ill. fehérre állítjuk. Ekkor a megjelenített vonalazás periódusa fele a megjelenítő felbontásának. (vonalpárt kell kijelezni) Vajon elég-e ez a felbontás az adott kép megjelenítéséhez? Milyen hatással lesz ez a korlátozás a kép minőségére? Ezen kérdések megválaszolásához, meg kell ismerkednünk a pixelre bontás, vagyis a mintavételezés törvényeivel. Valós képek esetén a megfelelő eszköz (szkenner, ccdlap, letapogató sugár), míg virtuális objektumok esetén a megjelenítést segítő algoritmus (raszaterizáló) végzi a pixelre bontást. Fekete-fehér képek esetén a feladat, egy kétváltozós skalárfüggvény (vizualizálva hegyvonulat, sátor), míg színes kép esetén, a színcsatornák számának megfelelő számú kétváltozós skalárfüggvény, továbbiakban képfüggvény, mintavételezése. Annak érdekében, hogy a képtartalom (képi információ) a megjelenítés, és az ehhez tartozó pixelre bontás során ne sérüljön, be kell tartani a mintavételezés szabályait. (Akadémia kiadó 1989: A digitális képfeldolgozás alapproblémái) Mintavételezésnél legyen a P pixelérték: P[nx, ny] = K( nx*dx, ny*dy) ahol nx,ny egész koordináták, dx,dy mintavételi sűrűségek. P pixelérték tehát a képfüggvény adott pontban felvett értéke, nem pedig a dx,dy felületelem feletti átlagértéke. (Ilyen értelemben a CCD detektor egyben valósít meg egy átlagoló szűrőt, és egy mintavételezőt.)


2. ábra A képfüggvény hegyvonulata.(Nem összetévesztendő az eredeti kép domborulataival.)

A szükséges felbontás matematikai meghatározása: Legyen a K képfüggvény kétdimenziós Fourier transzformáltja F függvény. (Fourier transzformáció során meghatározzuk, hogy az adott függvényt hogyan lehet változó hullámhosszú sinusjelek segítségével szintetizálni. Egy éles kép jóval több sűrűn hullámzó, vagyis nagyfrekvenciás jelet tartalmaz. Részletesen lásd pl.: Székely Vladimír: Képkorrekció, hanganalízis, térszámítás PC-n.) Ha létezik F-re fhx és fhy sávkorlát, akkor törvény szerint a minimális mintavételi frekvencia fxmin = 2*fhx és fymin =2*fhy adódik. (Shanon) Lefordítva fotósnyelvre, ha egy zebrán megelégszünk azzal, hogy a csíkjait egypixeles durva felbontásban lássuk, akkor úgy kell beállítani a kép felbontását (és ezzel a mintavételi frekvenciát), hogy a zebracsíkozáson egy pixel jusson a feketére, és egy a fehérre.


3. ábra A jobb zebra orrán már nincs meg a kellő felbontás.

Abban az esetben, ha F re nincs sávkorlát, vagy technikailag nem biztosítható 2*Fh mintavételi frekvencia (a gyakorlatban szinte mindig), akkor mintavételezés során torzul a képfüggvény. A torzulás a legtöbb esetben a kép életlenedéséhez, az apró részletek elvesztéséhez vezet, azonban a moaré megjelenése esetén a legzavaróbb. Ez esetben, mintavételezés előtt, a K képfüggvényt aluláteresztő (életlenítő) szűrővel szűrni kell. Digitális fotózáskor a szűrés csak optikailag végezhető el. A kijelzéshez tartozó mintavételezésnél ez megfelelő algoritmusokkal is létrehozható. (pl. átlagolás, blur ) Ugyanebből adódik, hogy egy dokumentum nyomtatáshoz tartozó mintavételezését, (újramintavételezést , lásd 1.1.3), lehetőleg egyszer végezzük, éspedig akkor, ha már ismert a nyomtató felbontása. (PostScript filozófia) A mintavételi törvény be nem tartásának egyik következménye a textil szövetének moaré mintája.


4. ábra A textil szövetének moaré mintája.


1.1.3 Újramintavételezés (resampling)

Sokszor a megjelenítendő kép már pixelekre bontott, vagyis mintavételezett. Ennek kijelzésekor több módon járhatunk el:
- a megjelenítendő kép pontjaival egy az egyben vezéreljük a kijelző pixeleit. Ebben az esetben a kijelzett kép fizikai mérete függ a kijelző felbontásától. A megjelenő kép szélessége Lx[mm] = Lxpix[darab] * dx[mm], ahol Lxpix az eredeti kép pixelszám vízszintes, dx a kijelző pontjainak távolsága. Ha a kijelző (nyomtató) felbontása Res[dpi] akkor dx[mm]=25.4/Res. Ly hasonlóan adódik.
- előírjuk a megjelenő kép méretét. A méretet vagy egyszerűen magunk megadjuk, pl. 10cm x 15cm, vagy a képhez tartozó felbontásból számoljuk (Lx[mm] = Lxpix[darab] * 25.4/Res[dpi]). Ekkor, az esetek többségében, a pixelek nem esnek egybe a megjelenítő raszterével. A megjelenítéshez tehát meg kell határozni, hogy a képfüggvény milyen értékkel rendelkezik a kijelző pontjainál, vagyis az eredeti mintavételi pontok helyett újakat számolunk ki. Ezt a műveletet újramintavételezésnek nevezzük.


5. ábra A tört koordinátához tartozó függvényértéket keressük.

Képletesen (vizualizálva) az újramintavételezés a következőt jelenti. Az eredeti képünk pontjaiba tűzzünk le szőlőkarókat, mégpedig a világosságértéknek megfelelő hosszúakat. Utána terítsük le az egészet fóliával, majd a talajon rajzoljuk meg az új pontoknak megfelelő rácsozatot. Ezután minden rácspontba faragjunk új karókat, mégpedig úgy, hogy éppen érintsék a fóliát. Ha ezzel végeztünk, kiszedhetjük az eredeti karókat, fóliasátrunk alakja nagyjából megmarad. Az új karók hossza az újramintavételezett kép pixelértékei.
A számítógépekben fóliázás helyett un. interpolációs algoritmusokat használunk. (Interpoláció jelentése becslés, az ismert adatok birtokában. Tavasszal a tej ára 5[Ft/liter], ősszel 7[Ft/liter], kb. mennyi volt a nyáron.) Képekhez a gyakorlatban három algoritmus terjedt el, a legközelebbi szomszéd (nearest neighbor), bilineáris és a bicubic. Példaként nézzük egy kép 1.41 szeres pontsűrítését, azaz nagyítását. Az eredeti kép legyen 50x100 pixel méretű. A nagyított kép mérete tehát 71x141 pix. Algoritmusunk épp a nagyított kép nx =20 ny=12 pontjánál tart, ehhez keresi az értéket. Első lépésként kiszámoljuk a pont helyét az eredeti képen, ex=20/1.41= 14.1843 ey=12/1.41= 8.5106 Ezek általában nem egész számok, az algoritmus feladata meghatározni ehhez a tört koordinátához tartozó értéket. Kiindulásként a közeli ismert pontok értékeit használjuk, ezekből interpoláljuk az eredményt.
Ha egyszerűen a legközelebbi pont értékét adjuk vissza, (ez példánkban a mx=14 my=9 pont) akkor a legközelebbi szomszéd algoritmust alkalmaztuk.

InterpolációLegközelebbiSzomszéd( mx, my )
{
Y= K[ mx, my];
return Y;
}


6. ábra A bilineáris interpoláció.

Bilineáris esetben figyelembe vesszük a P(ex, ey) pontot körülvevő négy szomszédot. Az interpoláló függvény lineáris, 2 pontra illeszkedik. Többdimenziós interpolációnál a dimenziót sorozatosan csökkentjük. Így 2D képek esetén először soronként interpolálunk az oszlopok közé, és végül be a sorközé (vagy fordítva). Legyen mx=egészrész(ex), my= egészrész(ey) és dx=ex-mx, dy=ey-my törtrészek. (példánkban mx=14 my=8). Az elvet a 6.ábrán szemléltetjük. Ekkor az ábrán látható téglalap egy belső P pontjában a következő módon határozhatjuk meg a képfüggvény interpolált értékét:

FvLinear( d, X0, X1) //interpoláló függvény lineáris
{
Y = X0 + (X1- X0)*d;
return Y;
}

InterpolációLineáris( mx, my, dx, dy)
{
y0 = FvLinear( dx, K[mx+0,my+0], K[mx+1,my+0]);//interpoláció oszlop közé
y1 = FvLinear( dx, K[mx+0,my+1], K[mx+1,my+1]);//interpoláció oszlop közé
Y = FvLinear( dy, y0, y1); //interpoláció sor közé
return Y;
}
Bicubic algoritmusnál a környező 16 pontot vesszük figyelembe. Az interpoláló függvény harmadfokú, 4 pontra illeszkedik.

a splineparaméter -1 <= a <= 0, photoshop esetén a=-0.75,

FvCubic( d, X-1, X0, X1, X2) //interpoláló függvény harmadfokú
{
C-1 = -ad3 + ad2;
C0 = -(a+2)d3 + (2a+3)d2 - ad;
C1 = (a+2)d3 - (a+3)d2 + 1;
C2 = ad3 - 2ad2 + ad;

Y= C-1X-1+ C0X0+ C1X1+ C2X2;
return Y;
}

InterpolációBicubic( mx, my, dx, dy)
{
y-1 = FvCubic( dx, K[mx-1,my-1], K[mx+0,my-1], K[mx+1,my-1], K[mx+2,my-1]);
y0 = FvCubic( dx, K[mx-1,my-0], K[mx+0,my-0], K[mx+1,my-0], K[mx+2,my-0]);
y1 = FvCubic( dx, K[mx-1,my+1], K[mx+0,my+1], K[mx+1,my+1], K[mx+2,my+1]);
y2 = FvCubic( dx, K[mx-1,my+2], K[mx+0,my+2], K[mx+1,my+2], K[mx+2,my+2]);

Y = FvCubic( dy, y-1,y0,y1,y2 );
return Y;
}
Nagyításhoz a fenti algoritmusok, némi optimalizálás után, közvetlenül alkalmazhatók. Kicsinyítés esetén, a mintavételi törvénynek megfelelően, aluláteresztő szűrésre lehet szükség az interpolálás előtt. ( 6. ábra nagyított pont, bilin, bicubic)


7. ábra Szürke négyzet 10x nagyítása, látható a bicubic algoritmus élkiemelő hatása.


1.1 Felbontás
1.2 Árnyalat visszaadás
1.3 Színvisszaadás
1.4 Színmenedzsment, jelek (számok) a képfájltól a megjelenésig.