Pixel art skaleringsalgoritmer

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 29. april 2016; checks kræver 7 redigeringer .

Pixel- grafikskaleringsalgoritmer  er digitale billedskaleringsalgoritmer designet specifikt til at øge kvaliteten af ​​grafik i lav opløsning . I modsætning til traditionelle skaleringsalgoritmer giver de et mindre sløret billede.

Årsager til

Der er to standard billedskaleringsalgoritmer, bilineær og bikubisk interpolation . Da farvekoordinaterne for den aktuelle pixel normalt beregnes ved at interpolere fire naboer, er det behandlede billede sløret. Selvom dette er acceptabelt for fuldfarvebilleder, har brugen af ​​interpolation en tendens til at reducere kontrasten (kantskarphed), og derfor giver denne metode dårlige resultater på paletindekserede billeder.

Den nærmeste nabometode bevarer skarpe kanter, men introducerer aliasing i billedet (især diagonale linjer ligner en "stige" af firkanter). Den ideelle algoritme til at forstørre pixelkunst bør således interpolere områder med kontinuerlig tone, bevare skarpheden for vandrette og lodrette linjer og glatte (anti-alias) diagonale linjer og kurver. Der er gjort flere forsøg på at løse dette problem.

Effektivitet

Da hovedanvendelsesområde for disse algoritmer er emulatorer af gamle konsol- og DOS-spil, er mange af dem designet til at vise et dynamisk skiftende billede i realtid (med en tilstrækkelig lav billedopløsning).

Mange algoritmer fungerer kun med heltalsforstørrelser: 2x, 3x og 4x.

Algoritmer

EPX/Scale2x/AdvMAME2x

EPX ("Eric's Pixel eXpansion") er en algoritme udviklet af Eric Johnston fra LucasArts omkring 1992 [1], mens han porterede SCUMM-motoren fra IBM PC'en (320×200 opløsning, 256 farver) til de tidlige Macintosh -farvecomputere . var omkring dobbelt så høj [2] .

Algoritmen fungerer således:

A --\ 1 2 CPB --/ 3 4 D Hvis C==A => 1=A Hvis A==B => 2=B Hvis B==D => 4=D Hvis D==C => 3=C Hvis 3 eller flere pixels fra A, B, C, D er ens: 1=P, 2=P, 3=P, 4=P

Efterfølgende implementeringer af denne algoritme (såsom AdvMAME2x og Scale2x, udviklet omkring 2001) har en anden (mere effektiv), men funktionelt identisk implementering:

A --\ 1 2 CPB --/ 3 4 D 1=P; 2=P; 3=P; 4=P; Hvis C==A og C!=D og A!=B => 1=A Hvis A==B og A!=C og B!=D => 2=B Hvis B==D og B!=A og D!=C => 4=D Hvis D==C og D!=B og C!=A => 3=C

AdvMAME4x/Scale4x er kun EPX anvendt to gange.

Scale3x/AdvMAME3x

AdvMAME3x/Scale3x-algoritmen er ikke den samme som EPX, men de ligner hinanden ret meget:

ABC --\ 1 2 3 DEF > 4 5 6 GHI --/ 7 8 9 1=E; 2=E; 3=E; 4=E; 5=E; 6=E; 7=E; 8=E; 9=E; Hvis D==B og D!=H og B!=F => 1=D Hvis (D==B og D!=H og B!=F og E!=C) eller (B==F og B!=D og F!=H og E!=A) => 2=B Hvis B==F og B!=D og F!=H => 3=F Hvis (H==D og H!=F og D!=B og E!=A) eller (D==B og D!=H og B!=F og E!=G) => 4=D 5=E Hvis (B==F og B!=D og F!=H og E!=I) eller (F==H og F!=B og H!=D og E!=C) => 6=F Hvis H==D og H!=F og D!=B => 7=D Hvis (F==H og F!=B og H!=D og E!=G) eller (H==D og H!=F og D!=B og E!=I) => 8=H Hvis F==H og F!=B og H!=D => 9=F

Eagle

Eagle fungerer som følger: For hver inputpixel genereres 4 outputpixel, i første omgang indstilles farverne på alle fire til farven på den aktuelle scannede pixel (nøjagtig den samme som i den nærmeste nabo), derefter pixels fra toppen og venstre scannes, hvis de har samme farve (alle tre), så maler vi den øverste venstre pixel i denne farve, udfører lignende handlinger for alle fire pixels og går videre [3]

.

Først: |Derefter: . . . --\ CC |STU --\ 1 2 . C. --/ CC |VCW --/ 3 4 . . . |XYZ | Hvis V==S==T => 1=S | Hvis T==U==W => 2=U | Hvis V==X==Y => 3=X | Hvis W==Z==Y => 4=Z

Således vil en enkelt sort pixel på en hvid baggrund opløses, når denne algoritme anvendes. Denne fejl er blevet rettet i 2xSaI og HQ3x algoritmerne.

2xSaI

2xSaI, (2x skala og interpolation) er en forbedring af Eagle-algoritmen. Det blev udviklet af Derek Liauw Kie Fa, også kendt som Kreed, oprindeligt til brug i emulatorer, hvor det stadig er en ret populær algoritme. Mange populære emulatorer såsom ZSNES , Jnes , DOSBox og VisualBoyAdvance understøtter denne outputalgoritme.

Kreed har udgivet kildekoderne til algoritmen [1] under GPL-licensen , dvs. den kan frit bruges til ethvert formål, der er fastsat i licensen. For at bruge algoritmen i ikke-GPL-produkter, skulle udvikleren omskrive den uden at bruge koden skrevet af Kreed.

Super 2xSaI og Super Eagle

Lidt modificerede implementeringer hedder "Super 2xSaI", "2xSaI" og "Super Eagle".

Super Eagle skrevet af Kreed, ligner 2XSaI, men outputtet er en stærkere blanding af pixelfarver (blanding).

Super 2xSaI er skrevet af Kreed, et filter til udjævning af grafik, men med stærkere blanding end Super Eagle.

Familien hq n x

Maxim Stepin udviklede hq2x, hq3x og hq4x algoritmerne til forstørrelse i forhold på henholdsvis 2:1, 3:1 og 4:1. Farven på hver pixel sammenlignes med otte naboer, naboerne er markeret som nær og fjern, derefter bruges en forudgenereret tabel til at finde det nødvendige forhold mellem værdier for hver af de 4, 9 eller 16 outputpixels. hq3x-algoritmen udjævner diagonale linjer perfekt med en hældning på ±1:2, ±1:1 og ±2:1 (forudsat at der ikke er anti -aliasing ved input af algoritmen); linjer med en anden hældningsfaktor vil blive gengivet som stiplede linjer fra ovenstående diagonaler. Stejle kurver udglatter godt. I modsætning til 2xSaI anvendes anti-aliasing på outputtet [4] .

hq n x blev oprindeligt designet til Super Nintendo-emulatoren, ZSNES .

Kopf-Lishchinsky-algoritmen

Algoritmen blev udviklet i 2011 og præsenteret på SIGGRAPH 2011 [5] . Konverterer et pixelbillede med få farver til vektorform. Men hvis billedet har anti-aliasing, er resultaterne værre.

Applikation i spillekonsollemulatorer

På tilstrækkeligt hurtige computere gør disse algoritmer det muligt at implementere output fra et skaleret billede, hvilket er acceptabelt med hensyn til hastighed for realtidsapplikationer, især computerspil. Meget optimerede algoritmer giver et klart og skarpt billede med minimal sløring. Pixel-grafikskaleringsalgoritmer er blevet implementeret til en række emulatorer, 2D-spilmotorer og remasterede spilmotorer, såsom AdvanceMAME , DOSBox og ScummVM . De blev meget roste af spillere, der begyndte at genskabe spil skrevet i 80'erne og 90'erne. Disse filtre bruges i øjeblikket (2013) i kommercielle Xbox Live- , Virtual Console- og PSN -emulatorer for at få klassiske spil med lav opløsning til at se bedre ud på højopløselige skærme. Sådanne spil inkluderer Sonics Ultimate Genesis Collection , Castlevania: The Dracula X Chronicles , Castlevania: Symphony of the Night og Akumajō Dracula X Chi no Rondo '.

Noter

  1. Indiana Jones and the Fate of Atlantis (PNG-skærmbillede). Arkiveret fra originalen den 11. april 2012.
  2. Thomas, Kas Fast Blit Strategies: A Mac Programmer's Guide (1999). Arkiveret fra originalen den 11. april 2012.
  3. Ørn (idé) . Alt2 (18. januar 2007). Arkiveret fra originalen den 11. april 2012.
  4. Stepin, Maxim hq3x forstørrelsesfilter . Hentet 3. juli 2007. Arkiveret fra originalen 8. februar 2008.
  5. Depixelizing Pixel Art . Dato for adgang: 26. marts 2012. Arkiveret fra originalen 1. september 2015.

Links