Scalare a imaginii

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 29 decembrie 2015; verificările necesită 69 de modificări .

Scalarea imaginii  este redimensionarea unei imagini digitale menținând în același timp raportul de aspect . Scalare înseamnă atât o creștere (“ upscaling ” din engleză upscaling ) cât și o scădere („ downscaling ” din engleză downscaling ) a rezoluției imaginii . Este utilizat pe scară largă în grafica computerizată , procesarea video , în special, este implementat la nivel hardware în televizoare și playere video .   

În același timp, în funcție de tipul de grafică ( raster , vector ), scalarea se realizează prin diferiți algoritmi . Scalarea imaginilor vectoriale are loc fără pierderea calității imaginii, în timp ce creșterea imaginilor raster, calitatea imaginii se poate pierde: sunt posibile distorsiuni semnificative în geometria detaliilor mici și apariția unor modele false pe texturi . Prin urmare, la scalarea bitmap-urilor, algoritmi specializați sunt utilizați pentru a netezi efectele nedorite.

Metode de scalare de uz general

Teoria generală a metodelor de scalare este descrisă în articolul Resampling .

Dacă imaginea are detalii contrastante mici, este important să o convertiți într-un spațiu de culoare liniar - în caz contrar (dacă sursa este în sRGB ), „mizeriea” rezultată de lumină și întuneric în imaginea redusă va fi mai întunecată decât este necesar.

Fereastra filtrului de reeșantionare este egală cu dimensiunea pixelului sursă sau destinație - oricare dintre acestea este mai mare [1] .

Mulți algoritmi au nevoie de pixeli virtuali în afara memoriei tampon. În funcție de scopul algoritmului, puteți mări fizic imaginea cu câțiva pixeli sau puteți prelua date dintr-un alt loc folosind metoda if-then . Datele pot fi preluate de la margini (dacă avem de-a face cu o imagine finită), luați pixeli goali (dacă imaginea este un sprite ) sau luați pixeli din cealaltă parte a imaginii (dacă imaginea ar trebui să se repete fără probleme ) .

Crește

Pentru a crește, de obicei nu folosesc filtre de reeșantionare într-o formă generală, ci un caz special - interpolarea.

Cea mai simplă modalitate de a dubla rezoluția este să copiați metoda pixelului cel mai apropiat , care înlocuiește fiecare pixel cu patru pixeli de aceeași culoare, în timp ce imaginea, păstrând detaliile originalului, capătă un „ efect de scară ” nedorit . Aceeași metodă poate fi folosită pentru modificări mai subtile ale rezoluției, de exemplu, pentru o scară de 99% sau, respectiv, 101%, eliminați sau duplicați fiecare sutime de punct.

Metoda de interpolare biliniară asigură o oarecare păstrare a netezirii contururilor imaginii, dar uneori provoacă efecte nedorite ale detaliilor de netezire și generează totuși un „efect de scară” destul de vizibil. O metodă mai avansată este utilizarea interpolării bicubice .

Scade

Pentru a reduce imaginile, convoluția este utilizată cu una sau alta funcție de nucleu. Metoda celui mai apropiat vecin corespunde unui dreptunghi îngust, interpolare biliniară - un nucleu triunghiular ... Adesea, pentru a reduce fotografiile, se folosește filtrul Lanczos , care oferă o claritate subiectivă și un filtru dreptunghiular ( filtru cutie ), care estompează imaginea.

Folosirea metodelor de zoom pentru a micșora și invers

O reducere mică (până la 0,5×) este adesea efectuată prin interpolare. La coeficienți mai mari începe pierderea de informații – de unde și recomandarea apărută în zilele primelor editori foto de a reduce treptat, nu mai mult de două ori o dată.

Interpolarea vecinului cel mai apropiat și interpolarea biliniară, ca fiind cele mai simple, sunt utilizate atunci când scalarea în timp real este necesară în jocuri și software-ul de grafică. Texturarea MIP se bazează pe luarea unei texturi reduse calitativ de o dimensiune adecvată - și apoi scalarea acesteia prin interpolare cu un factor apropiat de unu.

Metoda de convoluție a nucleului utilizată la reducere, la creștere (dacă setați lățimea corectă a ferestrei - 1 pixel original) nu dăunează calității, dar poate oferi o muncă de calcul suplimentară. Unele nuclee (cum ar fi filtrul Lanczos ) își introduc propriile artefacte atunci când sunt mărite de mai mult de două ori.

Filtrul dreptunghiular este folosit de jocurile moderne de pixeli (din anii 2010 și mai târziu) pentru a mări imaginea de două ori sau mai mult, inclusiv cu un factor non-întreger [2] .

Metode pentru scalarea pixel art

Pentru a mări imaginile de culoare mică la rezoluție scăzută , algoritmii speciali sunt cei mai potriviti , dezvoltați pentru grafica raster, care permit, cu ușoare distorsiuni în acuratețea formelor de desen, să păstreze și să sublinieze contururile clare și detaliile fine. Există, de asemenea, algoritmi de anti-aliasing potriviti pentru procesarea fotografiilor și imaginilor raster multicolor cu efect de scară, grupați sub denumirea de „metode super-scale” ( ing.  supersampling ).

Comparație

Tabelul compară algoritmii de scalare realizati cu programul gratuit 2dimagefilter .

Algoritm Imagine
(imagini originale)
Super-xBR 4x
Vulturul de 3x
hq3x
Scala 3x
XBR 3x
SuperVultur
SuperSaI
SaI de 2x
Scala 2x

Metode de scalare a graficelor vectoriale

Grafica vectorială poate fi redată la orice rezoluție dorită. Dar există nuanțe.

O sarcină separată este scalarea unei imagini vector/ grafice evident redate într-un raster și posibil distorsionată de algoritmi de compresie (de exemplu, pentru restaurarea desenelor animate ). Sarcina nu este la fel de restrictivă ca urmărirea raster  - dacă, de exemplu, este detectată o umplere cu gradient, nu trebuie să fie convertită în primitive vectoriale. Pentru aceasta, de exemplu, există un algoritm de rețea neuronală waifu2x .

Distanța până la diferența vizibilă

Datele științifice utilizate pentru a calcula rezoluția ochiului uman reprezintă baza pentru calcularea distanței optime de vizualizare pentru diferite rezoluții de ecran. Când stai la distanța optimă, vei putea vedea toate detaliile de pe ecran fără să te uiți la pixeli individuali. Distanța optimă depinde de dimensiunea ecranului. Cu cât ecranul este mai mare, cu atât poți sta mai departe de el.

Dacă stai la distanța optimă, vei vedea toate detaliile imaginii. Pe măsură ce vă îndepărtați de ecran, detaliile se vor pierde și imaginea va arăta mai moale. Dacă vizionați conținut 4K pe un televizor 4K și vă așezați la distanța optimă pentru un televizor 1080p , veți vedea o imagine 4K pe ecran, dar ochii tăi vor vedea 1080p.

Utilizare în emulatoarele consolelor de jocuri

Datorită componentei hardware puternice a computerelor moderne , este posibil să utilizați algoritmi de scalare a imaginii în timp real pentru jocuri video. Algoritmii foarte optimizați oferă o imagine clară și detaliată cu efect de estompare minim, fără a necesita resurse semnificative de sistem. Ele sunt folosite în multe emulatoare de console de jocuri, cum ar fi HqMAME , DOSBox și ScummVM .

Algoritmii de scalare a imaginilor sunt utilizați în emulatoarele comerciale Xbox Live , Consolă virtuală și PlayStation Network și le permit jucătorilor, fanilor jocurilor cu rezoluție scăzută din anii 80 și 90 să vadă jocurile lor preferate cu o calitate acceptabilă a imaginii pe ecranele HD . Astfel de algoritmi sunt utilizați în Sonic's Ultimate Genesis Collection , Castlevania: The Dracula X Chronicles , Castlevania: Symphony of the Night și Akumajō Dracula X Chi no Rondo .

Probleme de scalare a imaginii

La scalarea imaginilor, cea mai frecventă problemă este efectul „deformat”, care este eliminat de algoritmii de anti- aliasing . În acest caz, pixelii adiacenți pixelului de margine al imaginii capătă o valoare intermediară între culoarea imaginii și culoarea de fundal, creând un gradient și estompând chenarul.

Scalarea imaginii cu anti-aliasing depinde de modelul de culoare adoptat în ea. Modelul standard de ecran este sRGB cu o curbă de răspuns polinomială pe bucăți, care se aproximează bine la o curbă de putere . Cu toate acestea, majoritatea bibliotecilor grafice tratează sRGB ca pe un spațiu liniar. Problema este mai puțin vizibilă pentru fotografii și mai mult pentru desene.

Există un algoritm simplu pentru creșterea artei pixelilor („cel mai apropiat vecin avansat”) cu un factor fracțional de 2 sau mai mult, dar nu există un algoritm similar cu un factor de la 1 la 2. Prin urmare, jocurile moderne (anii 2010) cu grafică în pixeli încearcă pentru a face de cel puțin două ori rezoluția mai mică decât mașina țintă [2] .

Istoricii sunt foarte îngrijorați de algoritmii rețelelor neuronale care vin automat cu detalii - pentru că vin cu ceva care nu era în imaginea originală. Și se poate dovedi că cea mai populară imagine va fi o imagine de calitate tehnic mai bună - dar nu autentică. Sau după ce trece printr-un serviciu similar, proprietarul va șterge originalul „de calitate scăzută” [3] .

Vezi și

Note

  1. Bazele reeșantionării imaginii . Preluat la 11 mai 2020. Arhivat din original la 23 ianuarie 2022.
  2. 1 2 Gamasutra: Blogul lui Lars Doucet - Doing an HD Remake the Right Way . Preluat la 3 martie 2020. Arhivat din original la 3 martie 2020.
  3. Când aud cuvintele „rețeaua neuronală restaurată”, mă urc să verific backup-urile / Sudo Null IT News . Preluat la 3 martie 2020. Arhivat din original pe 2 martie 2020.

Literatură

Link -uri

inclusiv Hqnx-family, SaI, Eagle, EPX, XBR, XBRz, Lanczos etc.