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.
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.
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.
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=PEfterfø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=CAdvMAME4x/Scale4x er kun EPX anvendt to gange.
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=FEagle 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=ZSå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, (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.
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.
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 .
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.
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 '.