Anti-aliasing

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare

În procesare a semnalului digital, spațiale anti-aliasing este tehnica de minimizare a artefactelor denaturarea cunoscut sub numele de aliasing atunci când reprezintă o imagine de înaltă rezoluție la o rezolutie minima. Anti-aliasing este folosit în fotografia digitală, grafica pe calculator, audio digital, și multe alte aplicații.

Anti-aliasing înseamnă înlăturarea componentelor de semnal, care au o frecvență mai mare decât este capabil de a fi rezolvată în mod corespunzător de înregistrare (sau prelevarea de probe) dispozitiv. Această eliminare se face înainte de a (re) de prelevare a probelor la o rezolutie minima. Atunci când eșantionarea se efectuează, fără a îndepărta această parte a semnalului, aceasta provoacă artefacte nedorite, cum ar fi zgomotul alb-negru în partea de sus a figura 1-a de mai jos.

În achiziție de semnal audio și, anti-aliasing este de multe ori face folosind un analog anti-aliasing filtru pentru a elimina componenta out-of-band a semnalului de intrare, înainte de prelevare, cu un convertor analog-digital. În fotografia digitală, optică filtre anti-aliasing sunt fabricate din materiale birefringent, și netede semnalului în domeniul optic spațiale. Filtrul anti-aliasing estompează, în esență, imaginea ușor, în scopul de a reduce rezoluție sub limita a senzorului digital (cu atât mai mare diviziunea de pixel, cu atât mai mică rezoluția realizabil la nivel de senzor). A se vedea articolele privind procesare a semnalului și aliasing pentru mai multe informații despre justificări teoretice pentru anti-aliasing.

Exemple[modificare | modificare sursă]

An aliased picture of a checkerboard from an angle looks random in the distance, and has jagged lines in the foreground.
(a)
The same picture, anti-aliased, blurs into a gray in the distance, and has smoother lines in the foreground.
(b)
There are different algorithms for anti-aliasing, creating a slightly different appearance
(c)
Figura 1
Figura 2

În grafica pe calculator, anti aliasing îmbunătățește aspectul marginilor poligon, astfel încât acestea nu sunt "zimțate", dar netezite pe ecran. Cu toate acestea, el suportă un cost de performanță pentru placa grafică și utilizează memoria video mai mult. Nivelul de anti-aliasing determină cât de margini netede poligon sunt (și câtă memorie video de o consumă). Figura 1-a ilustrează denaturare vizuale care apare atunci cand anti-aliasing nu este folosit. Observați că lângă partea de sus a imaginii, în cazul în care tabla de șah este foarte îndepărtată, imaginea este dificil de recunoscut și nu este punct de vedere estetic atrăgătoare. În contrast, figura 1-b prezinta o versiune anti-alias de scena. Tabla de șah lângă amestecurile de top în gri, care este de obicei efectul dorit atunci când rezoluția este insuficient pentru a afișa detaliile. Chiar și în apropiere de partea de jos a imaginii, marginile apar mult mai lin in imaginea anti-alias. Figura 1-C prezinta un alt algoritm de anti-aliasing, bazate pe filtrul de sinc, care este considerat mai bun decât algoritmul folosit în 1-b.[1]

Figura 2 prezintă porțiuni marita (interpolate cu algoritmul cel mai apropiat vecin) din figura 1-a (stânga) și 1-c (dreapta) pentru comparație. În figura 1-C, anti-aliasing a interpolate luminozitatea de pixeli la limitele pentru a produce pixeli gri, deoarece spațiul este ocupat de tigle, atât alb-negru. Acestea ajuta la a face figura 1-C apar mult mai lin decât Figura 1-a la o mărire de versiunea originală. În figura 3, anti-aliasing a fost utilizat pentru a amesteca pixelii limita unui eșantion grafic. Acest lucru a redus efectul estetic discordant al clare, pas-cum ar fi limitele care apar în grafic alias la stânga. Anti-aliasing este adesea aplicată în redarea textului pe un ecran de computer pentru a sugera contururi netede care emuleaza mai bine aspectul textului produs de cerneală-convenționale și-hartiei. În special cu fonturi afișate pe ecranele LCD tipice, este comună de a folosi tehnici de randare de subpixel ca ClearType. Redare subpixel necesită construcții de culoare-echilibrat filtre anti-aliasing pentru a transforma ceea ce ar fi distorsiuni de culoare severă în franjuri de culoare abia-vizibile. Rezultate echivalente poate fi avut de a face individuale subpixeli adresabile ca în cazul în care acestea au fost complet pixeli, și furnizarea unui hardware pe bază de anti-aliasing de filtrare așa cum se procedează în controlor afișare OLPC XO-1 laptopului. Geometria pixelilor afectează toate acestea, indiferent dacă anti-aliasing și subpixel abordarea se face în software sau hardware.


Anti-aliased-diamonds.png
De mai sus stânga: o versiune a alias o formă simplă. De mai sus drept: o versiune anti-alias de aceeasi forma. Dreapta: grafic anti-alias la o mărire de 5x.
Anti-aliased diamond enlarged.png
Figura 3

De prelucrare a semnalului pentru a abordare anti-aliasing[modificare | modificare sursă]

În această abordare, imaginea ideală este privit ca un semnal. Imaginea afișată pe ecran este luate ca probe, la fiecare (x, y) poziția pixelilor, de o versiune filtrată a semnalului. În mod ideal, ne-am înțelege modul în care creierul uman ar fi procesul de semnalul original, și să ofere o imagine de pe ecran, care va da răspunsul cel mai similare de către creier. Instrumentul cel mai larg acceptat analitice pentru astfel de probleme este transformata Fourier. Transformata Fourier descompune un semnal de funcții în baza de frecvențe diferite, cunoscut sub numele de componente de frecvență, și ne dă amplitudinea de fiecare componentă de frecvență în semnal. Valurile sunt de forma:

\ \cos (2j \pi x) \cos (2k \pi y)

în cazul în care J și K sunt arbitrare non-negativ numere întregi. Există, de asemenea, componentele de frecvență care implică funcții sinus intr-unul sau ambele dimensiuni, dar pentru scopul acestei discuții, cosinus va fi suficient; vedea transformata Fourier pentru mai multe detalii tehnice. Numerele j și k sunt împreună frecvența componentei: j este frecvența în direcția x, iar k este frecvența în direcția y. Scopul unui filtru anti-aliasing este acela de a reduce foarte mult frecvența peste o anumită limită, cunoscut sub numele de frecvența Nyquist, astfel încât semnalul va fi exact reprezentată de eșantioane sale, sau aproape astfel, în conformitate cu teorema de eșantionare, există multe opțiuni diferite de algoritmul detaliat, cu diferite functii de transfer de filtrare. Cunoștințele noastre de percepție vizual uman nu este suficient, în general, de a spune ce abordare va arata cel mai bine.

Considerații bidimensionale[modificare | modificare sursă]

Sinc funcție, cu separate pentru X și Y

Cele de mai sus presupune că eșantionarea plasă dreptunghiulară este partea dominantă a problemei. Ar trebui să pară ciudat că filtrul de obicei, considerat optim nu este rotationally simetrice, așa cum se arată în această prima cifră. Acest lucru se datorează faptului că avem de-a face cu date eșantion pe un spațiu pătrat, și nu cu o imagine continuă. Acest lucru trebuie să fie justificare pentru a acționa de procesare a semnalului, de-a lungul fiecare axă, astfel cum este în mod tradițional face pe un singur date tridimensionale. Lanczos re-eșantionarea se bazează pe convoluție de date cu o reprezentare discretă a funcției sinc.

În cazul în care rezoluția nu este limitat de rata de eșantionare dreptunghiular, fie a sursei sau imaginea țintă, atunci ar trebui să utilizeze în mod ideal, filtru rotationally simetrice sau funcții de interpolare, ca și cum datele au fost o funcție bidimensionale de continue x și y. Funcția sinc de raza, în a doua figură, are prea mult timp o coadă pentru a face un filtru bun (nici macar nu este pătrată-integrabilă). O analog mai adecvate pentru a sinc unidimensionale este amplitudinea bidimensional disc Airy, Fourier 2D transforma dintr-o regiune circulară în spațiu de frecvență 2D, spre deosebire de o regiune pătrat.

Gaussian plus diferențial funcție

S-ar putea considera un Gaussian plus destul de derivat de-al doilea pentru a aplatiza de top (în domeniul de frecvență) sau ascuți-l în sus (în domeniul spațial). Această funcție este arătat, de asemenea. Funcții bazate pe funcția de Gauss sunt alegeri naturale, pentru că convoluție cu un gaussian oferă o altă Gaussian, dacă aplicat la x si y sau pe raza. Similar cu wavelets, un alt de proprietățile sale este faptul că este la jumătatea distanței între a fi localizate în configurație (x și y) și în spectrale (j și k) de reprezentare. Ca o funcție de interpolare, un singur Gaussian pare prea întins pentru a păstra detaliile maximă posibilă, care este motivul pentru care se adaugă al doilea derivat. Ca un exemplu, atunci când imprimarea unui negativ fotografic, cu capacitatea de procesare din belșug, pe o imprimantă cu un model hexagonal, nu există nici un motiv pentru a utiliza funcția de interpolare sinc. Acest lucru ar trata diferit liniile diagonale din linii orizontale și verticale, care este ca o formă slabă de aliasing.

Practice în timp real, anti-aliasing aproximări[modificare | modificare sursă]

Există doar o mână de primitive folosite la cel mai mic nivel într-un motor de randare în timp real (fie software sau hardware accelerată.) Acestea includ "puncte", "linii" si "triunghiuri". Dacă cineva este de a elabora un astfel de primitiv în alb pe un fundal negru, este posibil pentru a proiecta o astfel de primitiv de a avea margini fuzzy, realizarea un fel de anti-aliasing. Cu toate acestea, această abordare are dificultati in a face cu primitive adiacente (cum ar fi triunghiuri care impartasesc un avantaj.) Pentru a aproximative algoritmul de uniforme de mediere, se poate folosi un tampon suplimentare pentru sub-pixeli de date. Memory-hungry inițiale, și cel mai puțin abordare, folosite 16 biti per pixel plus, într-un 4 × 4 grilă. Dacă cineva face primitivele într-o ordine atentă, de exemplu, fata-spate, este posibil pentru a crea o imagine rezonabilă. Întrucât acest lucru necesită ca primitivele să fie, în unele ordine, și, prin urmare interactioneaza slab cu o interfață de programare a aplicațiilor, cum ar fi OpenGL, cele mai recente tentative de pur și simplu au două sau mai multe pe deplin sub-pixeli per pixel, inclusiv informații full color pentru fiecare sub-pixel. Unele informații pot fi partajate între pixeli sub-(cum ar fi Z-tampon.)

Mipmapping[modificare | modificare sursă]

Există, de asemenea, o abordare de specialitate pentru maparea texturii numit mipmapping, care funcționează prin crearea mai mică rezoluție, versiunile prefiltered a hărții de texturi. Atunci când redare a imaginii, rezoluția corespunzătoare MIP-harta este ales și, prin urmare pixeli textura (texeli) sunt deja filtrate atunci când ajung pe ecran. Mipmapping este, în general, combinate cu diverse forme de filtrare textură, în scopul de a îmbunătăți rezultatul final.

Un exemplu a unei imagini cu extremă pseudo-aleatoare aliasing[modificare | modificare sursă]

Deoarece fractali au detaliu nelimitat și nici un zgomot, altele decât roundoff eroare aritmetică, ele ilustrează aliasing mai clar decat fotografii sau alte date măsurate. Locuiește, care sunt convertite în culori de la centrele de exactă a pixeli, du-te la infinit la frontiera de set, astfel încât culorile din centrele de apropierea frontierelor sunt imprevizibile, din cauza aliasing. Acest exemplu are avantaj în aproape jumătate din pixeli sale, asa ca arata mult aliasing. Prima imagine este încărcat la rata de eșantionare inițială. Deoarece cele mai moderne de software anti-alias, o poate avea pentru a descărca versiunea full size pentru a vedea toate aliasing. A doua imagine se calculează la de cinci ori rata de eșantionare și de stabilire a-incluși în eșantion, cu anti-aliasing. Presupunând că ne-ar place foarte mult ceva de genul culoare medie pe fiecare pixel, acesta se apropie. Este în mod clar mai ordonată decât prima. În scopul de a compara în mod corespunzător aceste imagini, faceți clic pentru a le vizualiza în dimensiunile lor originale.

Se întâmplă că, în acest caz, nu există informații suplimentare care pot fi utilizate. Prin re-calcularea cu estimator distanta, s-au identificat puncte de care sunt foarte aproape de marginea stabilit, astfel încât detaliile neobișnuit de amendă este alias în care se schimbă rapid de la valorile locui aproape de marginea din set. Culorile derivate din aceste puncte calculate au fost identificate ca fiind neobisnuit de reprezentative pentru pixeli lor. Aceste puncte au fost înlocuite, în a treia imagine, prin interpolarea punctelor din jurul lor. Acest lucru reduce noisiness a imaginii, dar are efectul secundar de a strălucire culorilor. Deci, această imagine nu este exact același lucru care ar fi obținut cu un set chiar mai mare de puncte calculate.

Pentru a arăta ceea ce a fost aruncat, de punctul respins, Bled într-un fundal gri, sunt prezentate in imagine a patra. În cele din urmă, "Tinere talente în domeniul Turbine" este atât de obișnuit ca sistematic (Moiré) alias poate fi văzut clar în apropierea "axa turbinei", principal atunci când este redus prin luarea de la cel mai apropiat pixel. Aliasing în prima imagine apare aleator pentru că vine de la toate nivelurile de detaliere, sub dimensiunea pixelilor. În cazul în care aliasing nivel inferior este suprimată, pentru a face a treia imagine, apoi, care este jos-eșantion încă o dată, fără a anti-aliasing, pentru a face imaginea cincilea, ordinea pe scara a treia imagine apare ca aliasing sistematice în a cincea imagine.

Cea mai bună metodă anti-aliasing și de jos de eșantionare aici, depinde de punctul de vedere al cuiva. La montarea majoritatea datelor într-o gamă limitată de pixeli, la fel ca în imagine a cincea, funcția sinc anti-aliasing-ar par a fi adecvate. În obținerea de imagini doilea și al treilea, principalul obiectiv este de a filtra aliasing "zgomot", astfel încât o funcție rotationally simetrice poate fi mai adecvat.

Pure jos de prelevare a unei imagini are următorul efect: (Click pe fiecare imagine pentru ao vedea la scară completă)

Super eșantionare / full-scene anti-aliasing[modificare | modificare sursă]

Super eșantionare anti-aliasing (SSAA),[2] de asemenea, numit full-scene anti-aliasing (FSAA),[3] este folosit pentru a evita aliasing (sau "jaggies") pe full-screen imagini.[4] SSAA a fost Primul tip de anti-aliasing disponibil cu placi video mai devreme. Dar, datorita costurilor enorme de calcul și odată cu apariția de multisample anti-aliasing (MSAA) sprijin pe GPU-urile, nu mai este utilizat pe scară largă în aplicații timp real. MSAA ofera o calitate ceva mai mici grafic, dar, de asemenea, economii extraordinare în puterea de calcul. Imaginea care rezultă din SSAA poate părea mai moale, și ar trebui să apară, de asemenea, mai realiste. Cu toate acestea, în timp ce utile pentru fotografie, cum ar fi imagini, o simpla abordare anti-aliasing (cum ar fi supersampling și apoi medii) se pot agrava de fapt, apariția unor tipuri de artă linii sau diagrame (care face imaginea să apară fuzzy), în special în cazul în care cele mai multe linii sunt orizontale sau verticale. În aceste cazuri, o grilă înainte de montare-pas ar putea fi utilă (a se vedea făcând aluzie). În general, supersampling este o tehnică de colectare a punctelor de date la o rezoluție mai mare (de obicei de către o putere de două) decât rezoluția finală de date. Aceste puncte de date sunt apoi combinate (jos-eșantion) la rezoluția dorită, de multe ori doar printr-o medie simplă. Punctele au combinat datele artefacte mai puțin vizibile aliasing (sau modele moiré). Full-scene anti-aliasing de supersampling, de obicei, înseamnă că fiecare cadru complet prestate la dublu (2x) sau cvadruple (4x), rezoluția de afișare, și apoi în jos, în eșantion pentru a se potrivi rezoluția de afișare. Deci, un FSAA 2x ar face 4 pixeli supersampled pentru fiecare pixel din fiecare cadru. În timp ce redarea la rezoluție mai mare va produce rezultate mai bune, putere procesor mai este nevoie de care pot degrada performanța și rata de cadre. Uneori, FSAA este pus în aplicare în hardware-ul în așa fel încât o aplicație grafică este conștient imaginile sunt în curs de supersampled și apoi în jos, înainte de a fi incluși în eșantion afișate.

Object pe bază de anti-aliasing[modificare | modificare sursă]

Un sistem de redare grafică creează o imagine bazată pe obiecte construite de primitive poligonale prin care efectele aliasing din imagine sunt reduse prin aplicarea unui sistem de anti-aliasing doar la zonele de imagini reprezentând marginile conturul obiectelor. Marginile Silueta sunt anti-alias prin crearea de anti-aliasing primitive care variază în opacitate. Aceste primitive anti-aliasing sunt unite la marginile siluetele, și de a crea o regiune din imagine în cazul în care obiectele par să se amestece în fundal. Metoda are unele avantaje importante pe metodele clasice bazate pe acumularea de buffer, deoarece generează full-scene anti-aliasing în doar două treceri și nu necesită utilizarea de memorie suplimentare cerute de tampon de acumulare. Obiect pe bază de anti-aliasing a fost dezvoltat pentru prima dată la Silicon Graphics pentru postul de lucru Indy.

De compresie anti-aliasing și gamma[modificare | modificare sursă]

Imaginile digitale sunt de obicei stocate într-un format gamma-comprimat, ci o optic anti-aliasing filtru este liniar. Deci, pentru a Downsample o imagine într-un mod care să se potrivească estomparea optice, ar trebui să convertiți mai întâi într-un format liniar, apoi se aplică filtrul anti-aliasing, și, în final conversia înapoi într-un format comprimat gamma. Calcul anti-aliasing direct pe imagine pentru gama comprimat va duce la detalii luminoase (cum ar fi de mustăți de pisică), devenind mai subțire punct de vedere vizual, și detaliile întunecate (cum ar fi crengile copacilor) a deveni mai gros, în raport cu imaginea optic anti-alias. Aproape toate aplicațiile software de editare a imaginilor, inclusiv Adobe Photoshop și GIMP, imagini proces în domeniul gamma-comprimat.

Istoric[modificare | modificare sursă]

Lucrări importante devreme în istoria de anti-aliasing includ:

  • Freeman, H. (1 martie 1974). „Computer processing of line drawing images / Prelucrarea pe calculator a imaginilor desen liniar”. ACM Computing Surveys 6 (1): 57–97. doi:10.1145/356625.356627. 
  • Crow, Franklin C. (1 noiembrie 1977). „The aliasing problem in computer-generated shaded images / Problema aliasing în calculator imagini generate umbrită”. Communications of the ACM 20 (11): 799–805. doi:10.1145/359863.359869. 
  • Catmull, Edwin (August 23–25, 1978). „A hidden-surface algorithm with anti-aliasing / Un algoritm ascuns-suprafață, cu anti-aliasing”. Proceedings of the 5th annual conference on Computer graphics and interactive techniques. pp. 6–11. 

Freeman, H. (martie 1974). "Prelucrarea pe calculator a imaginilor desen liniar". ACM Computing Sondaje 6 (1): 57-97. doi: 10.1145/356625.356627. Crow, Franklin C. (noiembrie 1977). "Problema aliasing în calculator imagini generate umbrită". Comunicările ACM 20 (11): 799-805. doi: 10.1145/359863.359869. Catmull, Edwin (douăzeci și trei au 25 august, 1978). "Un algoritm ascuns-suprafață, cu anti-aliasing". Lucrările conferinței anuale privind cincea Grafică pe calculator și tehnici interactive. pp. 6–11.

Referințe[modificare | modificare sursă]

  1. ^ Leler, William J. (1 iulie 1980). „Human Vision, Anti-aliasing, and the Cheap 4000 Line Display” (în engleză). ACM SIGGRAPH Computer Graphics 14 (3): 308–313. doi:10.1145/965105.807509. 
  2. ^ AMD's Radeon HD 5870: Bringing About the Next Generation Of GPUs / AMD Radeon HD 5870: Aducerea Despre urmatoarea generatie de GPU-uri” (în engleză). AnandTech.com. http://www.anandtech.com/show/2841/14. 
  3. ^ Jason Gregory, Jeff Lander (2009) (în engleză). Game Engine Architecture. A K Peters, Ltd.. p. 39. ISBN 978-1-56881-413-1. http://books.google.com/books?id=LJ20tsePKk4C&pg=PA442 
  4. ^ M. Carmen Juan Lizandra (1 iunie 2000). „Graphic libraries for Windows programming / Biblioteci grafice pentru programare Windows” (în engleză). Crossroads, the ACM Student Magazine (ACM) 6 (4): 14–18. doi:10.1145/333424.333433. http://dl.acm.org/citation.cfm?id=333433. 

^ Leler, William J. (iulie 1980). "Human Vision, anti-aliasing, și ieftine 4000 Afișare Line". ACM SIGGRAPH Computer Graphics 14 (3): 308-313. doi: 10.1145/965105.807509. ^ "AMD Radeon HD 5870: Aducerea Despre urmatoarea generatie de GPU-uri". AnandTech.com. ^ Jason Grigorie, Jeff Lander (2009). Joc Motor de Arhitectura. Un Peters K, Ltd.. p. 39. ISBN 9781568814131. ^ M. Carmen Juan Lizandra (iunie 2000). "Biblioteci grafice pentru Windows programare". Crossroads, revista Student ACM (ACM) 6 (4): 14-18. doi: 10.1145/333424.333433.

Legături externe[modificare | modificare sursă]

Antialiasing și Transparență Tutorial: Explică interacțiune între antialiasing și transparență, în special atunci când se ocupă cu elemente de grafică web Rectificarea interpolare si Gamma În cele mai multe sisteme din lumea reala, corecție gamma este obligată să liniariza curbei de răspuns a senzorului și a sistemelor de afisare. Dacă acest lucru nu este luată în considerare, rezultanta non-linear denaturare va învinge, în scopul de anti-aliasing calcule bazate pe ipoteza unui răspuns al sistemului liniar. (În franceză) Le rol du filtre anti-aliasing dans les APN (functia de anti-aliasing de filtrare în DSLR)