Glodinimas

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką
Padidintas vaizdas nenaudojant glodinimo (kairėje) bei naudojant (dešinėje)

Glődinimas, arba glaistymas (angl. anti-aliasing) – skaitmeninių vaizdų apdorojimo technologija, kai, vaizduojant didesne raiška, grafinis vaizdas koreguojamas, siekiant paslėpti atsiradusius netolydumus.

Kadangi šiuolaikiniai kompiuterių monitoriai turi santykinai mažą skiriamąją gebą, vaizduojant paveikslėlį ar tekstą, kuris yra atskirtas nuo kitų vaizduojamų objektų, susiduriama su pašaliniu efektu, dėl kurio nukenčia vaizduojamo teksto kokybė – įstrižos linijos yra atkuriamos „laiptuotai“. Šis pašalinis efektas vadinamas netolydumu (aliasing). Būdas, skirtas šiam efektui pašalinti, vadinamas glodinimu, arba kraštų išlyginimu (anti-aliasing). Jo metu piešinys yra apdorojamas taip, kad būtų pašalintas nereikalingas triukšmas.

Kraštų išlyginimas turi keletą šiek tiek skirtingų variacijų, kiekviena variacija yra dažniausiai skirta tam tikrai informacijos sričiai.

Kraštų išlyginimo būdai[taisyti | redaguoti kodą]

Aliased.png
(a)
Antialiased.png
(b)
Antialiased-sinc.png
(c)
1 piešinys
2 piešinys

Idealus paveiksliukas turi begalę detalių, ir mes jį galime perteikti, naudodami funkciją f(x, y), kur x ir y yra realūs koordinačių numeriai.

Esama daugybės tokių funkcijų, tačiau kompiuterio ekranas gali atvaizduoti tik baigtinį skirtingų paveikslėlių kiekį. Be to, paprastas kompiuterio ekranas turi ne daugiau kaip kelis milijonus pikselių, ir kiekvienas iš jų turi baigtinį spalvų, kurias jis gali rodyti, kiekį.

Vadinasi, konvertuodami paveikslėlį f(x, y) į kažką, ką galime parodyti ekrane, pirmiausiai turime šiuos duomenis supaprastinti. Kartais net ir du skirtingi idealūs paveiksliukai f(x, y) ir g(x, y) po konvertavimo ekrane gali atrodyti vienodai.

Netinkamo apdorojimo pasirinkimo pavyzdys yra pateiktas 1-a paveiksliuke. Paprasčiausias būdas supaprastinti paveiksliuką rodymui – naudoti paveiksliuko pavyzdį f(i, j) vietoje kiekvienam pikseliui (i, j). Lentos viršuje tiek ir juoda, tiek ir balta spalva gali būti rodoma kaip vienos spalvos pikselis. Bet kadangi idealiame paveiksliuke egzistuoja tik juodos ir baltos spalvos taškai, plotas, turintis abi spalvas, tokia pačia proporcija bus reprezentuojamas su keistu raštu iš juodos bei baltos spalvos. Tai Moire efektas.

Geresnis metodas, kai kiekvienam pikseliui naudojamas vidutinis intensyvumas iš stačiakampio formos vietos scenoje, atkreipiant dėmesį į pasirinkto pikselio paviršiaus plotą. Tai duoda geresnę kokybę, bet dar vis neidealią; paveiksliukas 1-b buvo sukurtas naudojant šį būdą.

Tačiau pats geriausias būdas yra naudoti kraštų išlyginimą dažniniame domene, taip pasiekiant geresnę vaizdo kokybę (pav. 1-c).

Signalo apdorojimas[taisyti | redaguoti kodą]

Šiame būde idealus paveiksliukas yra laikomas signalu. Paveiksliukas yra rodomas ekrane prieš tai atitinkamu būdu filtravus signalą. Idealiu atveju paveiksliukas yra pateikiamas ekrane, kur bus panašus į originalų signalą, apdorotą atsižvelgiant į tai, kaip šį paveiksliuką supranta žmogaus smegenys.

Dažniausiai naudojamas metodas yra Furjė transformacijos. Šios Furjė transformacijos padalina signalą į pagrindines bangas, arba harmonikas, ir suteikia informaciją apie amplitudę kiekvienos bangos signale. Bangos yra šios formos:

\cos (2j \pi x) \cos (2k \pi y), kur j ir k yra sutartiniai neneigiami sveikieji skaičiai.

Skaičiai j ir k kartu yra bangos dažnis: j yra dažnis x kryptimi, o k yra dažnis y kryptimi. Buvo pastebėta (Harry Nyquist), kad matuojant signalą n dažnio diapazone, reikalingi bent jau 2n pavyzdžio taškai, kurie turi būti padėti tam tikru būdu. Jeigu pavyzdžio taškai atsiranda arti signalo nulių, atrodys, kad signalas iš tiesų yra nulinis.

Todėl signalo apdorojimu mes siekiame panaikinti visus aukštus signalo dažnius, palikdami vien tik žemus. Eksperimentavimai su žmonėmis parodė, kad būtent Furjė būdas labiausiai atitinka tai, ką mūsų smegenys norėtų matyti.

Piešinys 1-c buvo sugeneruotas būtent šiuo būdu. Nebuvo galimybės daryti tokios pačios Furjė serijos transformacijos, tačiau buvo naudojama aproksimacija, kuri yra arčiausiai teisingam paveikslėliui. Rezultatas daug geresnis, nei 1-a paveikslėlis, bei šiek tiek geresnis, nei 1-b paveikslėlyje.

Paprastosios bangos neturi būti kosinusinės bangos. Pasižiūrėkite, pavyzdžiui, bangeles (angl. wavelets). Jei vienas naudoja paprastąsias bangas, kurios nėra kosinusinės bangos, gaunamas šiek tiek kitoks paveikslėlis. Kai kurios pagrindinės bangos leidžia naudoti kraštų išlyginimo algoritmus, kurie nėra tokie geri (pavyzdžiui, Haar bangelių transformacija prilygsta vienarūšio vidurkio algoritmui). Kaip ten bebūtų, tačiau kai kurios bangelės yra geros. Yra įmanoma su kai kuriomis bangelėmis geriau aproksimuoti žmogaus smegenų veikimą nei su paprastais kosinusais. Sinusų funkcijos, su įprasta erdve, yra ortogonalios, be to, jas naudojant yra mažesnis duomenų praradimas, keičiant mastelį.

Taip pat skaitykite[taisyti | redaguoti kodą]