5

Ich verwende PIL, um meine Bilder zu skalieren, mein Fall ist, das Originalbild zu vergrößern.ANTIALIAS vs BICUBIC in PIL (Python-Bildbibliothek)?

Ich bin verwirrt über den Algorithmus mit `resample = ANTIALIAS 'verwendet.

Laut dem untenstehenden Dokument scheint ANTIALIAS beim Herunterskalieren am besten zu sein. Ich frage mich, in welchem ​​Fall BICUBIC gewinnen? (Einige meiner Testfall zeigt bikubisch bessere Wahl ist)

An optional resampling filter. 
    This can be one of NEAREST (use nearest neighbour), 
    BILINEAR (linear interpolation in a 2x2 environment), 
    BICUBIC (cubic spline interpolation in a 4x4 environment), 
    or ANTIALIAS (a high-quality downsampling filter). 
If omitted, or if the image has mode “1” or “P”, it is set NEAREST. 

Ich bin auch verwirrt über die linear interpolation in a 2x2 environment und cubic spline interpolation in a 4x4 environment im Dokument. Was bedeutet es hier?

Danke.

+0

Wow. Ich habe immer gewusst, dass PIL ein wenig durcheinander war, aber ich wusste erst, wie viel ich bis zum Code gesehen habe. Ich werde später versuchen, eine vollständige Untersuchung durchzuführen. –

Antwort

0

Diese sind in der Reihenfolge der niedrigsten bis höchsten Komplexität aufgeführt. Es wird visuelle Unterschiede zwischen ihnen geben. Der Hauptunterschied wird sein, wie lange der Algorithmus zur Ausführung braucht.

Sie müssen entscheiden, was Ihnen wichtiger ist, Geschwindigkeit oder Qualität. Wenn Sie nur 5 Bilder machen, achten Sie auf Qualität. Wenn Sie 100.000 Bilder machen, gehen Sie vielleicht auf Geschwindigkeit. Es hängt wirklich davon ab, wofür Sie es verwenden.

Die 2x2- und 4x4-Umgebung bedeutet, dass der Algorithmus einen 2x2- oder 4x4-Pixelbereich betrachtet.

+0

in einigen meiner Testfall ist Bikubic der beste. Kannst du das erklären? – xunzhang

+1

Sie alle haben ihre Stärken und Schwächen, es hängt wirklich vom Quellbild ab. Einige Algorithmen können für Bilder mit scharfen Kontrastlinien besser aussehen, andere besser für natürliche Szenen. – aglassman

+0

das ist, was ich frage ... – xunzhang

11

Ich bin jetzt durch die Quelle gegangen, um die Details herauszufinden. Ich bin nicht sehr erfreut über das, was ich gesehen habe.

Zuerst BICUBIC. Es gibt eine Anzahl von Formeln, die als bikubisch klassifiziert werden können, wobei die häufigste die Catmull-Rom-Interpolation ist. Das nutzt PIL nicht. Don Mitchell und Arun Netravali haben ein Papier geschrieben, das alle Variationen analysiert und sie mit zwei Variablen B und C charakterisiert; die von PIL verwendete entspricht B = 0 und C = 1. In der Mitchell-Netravali-Arbeit befindet sich dies eindeutig in der Ringing-Artefakt-Region. Dies bedeutet, dass vergrößerte Bilder unnatürliche helle oder dunkle Halos um Kanten haben werden.

Als nächstes ist ANTIALIAS. Dies basiert auf einem Lanczos-3-Filter, der normalerweise sowohl für Downsizing als auch für Upsizing geeignet ist. Leider gibt es einen Fehler im Code beim Upsizing - anstatt einen Bereich von 6x6 Pixel zu nehmen, um das Ergebnis zu berechnen, wird es bei 2x2 Pixel abgeschnitten. Das macht es kaum besser als bilinear.

+0

Haben Sie diese Probleme an PIL gemeldet? Und wissen Sie zufällig, ob es noch Probleme gibt? –

+0

@GordonWrigley Nein und nein. Ich vermute mit aktiver Entwicklung auf Pillow, dass sich die Dinge verbessert haben. –