Home
RecentChanges

Search:

» AviSynth is a powerful video FrameServer for Win32.

AviSynth Links:
»Download
»Learn to script
»FAQ
»Manual
»Discussion fora
»Project page
»External filters
»FeedBack

» You can add pages to this website immediately. No login required.
Edit this document

» AboutAviSynth

 

Avisynth 
Logo

Resize Deutsch

( This site in flag-uk.gif english )

BicubicResize(clip, int "target_width", int "target_height", float "b", float "c")

BilinearResize(clip, int "target_width", int "target_height")

LanczosResize(clip, int "target_width", int "target_height")

PointResize(clip, int "target_width", int "target_height")

Bei allen diesen Filtern zur Größenänderung kann eine erweiterte Syntax verwendet werden, die vor dem Verkleinern bzw. Vergrössern das Bild abschneidet. Die gleiche Operation wird durch Crop vor dem Resize erreicht.

Crop(10,10,200,300).BilinearResize(100,150)

ist das gleiche wie

BilinearResize(100,150,10,10,200,300)

BicubicResize(clip, int "target_width", int "target_height", float "b", float "c", float "src_left", float "src_top", float "src_width", float "src_height")

BilinearResize(clip, int "target_width", int "target_height", float "src_left", float "src_top", float "src_width", float "src_height")

LanczosResize(clip, int "target_width", int "target_height", float "src_left", float "src_top", float "src_width", float "src_height")

PointResize(clip, int "target_width", int "target_height", float "src_left", float "src_top", float "src_width", float "src_height")

Wichtig: AviSynth hat (intern) völlig getrennte vertikale und horizontale Filter zur Größenänderung. Wenn in einer Richtung keine Änderung notwendig ist, wird dieser Teil übersprungen.

Es wird zuerst die Richtung mit dem kleineren Verhältnis bearbeitet, damit die bestmögliche Qualität erhalten wird und der Filter für die zweite Richtung ein möglichst gutes Eingangsbild bekommt.


BilinearResize

Der BilinearResize Filter skaliert die eingehenden Frames in eine beliebig andere Auflösung. Wenn man die optionalen source Argumente angibt, ist das Ergebnis das gleiche, als wenn man zuvor Crop angewendet hätte mit diesen Argumenten. Allerdings wäre dies nicht so schnell.

BilinearResize verwendet einen Standard-Bilinear-Filter, der fast identisch mit dem VirtualDub-Filter "precise bilinear" ist. Nur "fast" deshalb, da VirtualDub hier einen winzigen Skalierungsfehler macht, bei dem die oberste und unterste Zeile abgeschnitten oder verdoppelt werden, was aber nur bei bei einer Vergrösserung um 2 oder mehr auffällt.

Beispiele:

Eine Video-Datei laden und die Größe auf 240x180 ändern (egal wie groß die Auflösung vorher war):

AVISource("Dateiname.avi").BilinearResize(240,180)

Ein 720x480 (CCIR601)-Video laden und die Grösse auf 352x240 (VCD-NTSC) ändern, wobei das korrekte Seitenverhältnis beibehalten wird:

AVISource("Dateiname.avi").BilinearResize(352,240,8,0,704,480)

Das rechte obere Quadrat eines 320x240 Videos rausschneiden und auf den ganzen Frame vergrössern:

BilinearResize(320,240,160,0,160,120)


BicubicResize

BicubicResize ist ähnlich wie BilinearResize, es wird aber eine zweifach kubische Mitchell-Netravali-Filter-Funktion eingesetzt.

Mit den Parametern b und c kann die Eigenschaft dieser Funktion eingestellt werden, die Parameter werden auch manchmal als "blurring" (verwischen) und "ringing" (Ringe zeichnen) bezeichnet.

Mit b=0 und c=0.75 ist der Filter genau gleich wie der VirtualDub-Filter "precise bicubic" (bis auf das genannte Skalierungsproblem). Der Standardwert ist b=1/3 und c=1/3, das sind die von Mitchell und Netravali empfohlenen Werte, die das subjektiv schönste Bild ergeben. Mit grösseren Werten von b und c können interessante Effekte entstehen, z.B. mit b=0 und c=-5.

Beim Vergrössern eines Videos erhält man mit BicubicResize wesentlich bessere Ergebniss als mit BilinearResize. Beim Verkleinern kann BilinearResize gleich gut oder sogar besser sein. Ein bikubischer Filter erzeugt Bilder, die schöner aussehen, allerdings deswegen, da eine leichte Schärfung stattfindet und nicht wegen einer exakteren Abtastung. Scharfe Bilder schauen gut aus, solange man sie nicht komprimiert, dann können sie leicht hässlich werden. Besonders beim Encoden mit niedriger (knapper) Bitrate gibt BilinearResize meist bessere Ergebnisse.

Man muss b + 2 * c = 1 setzen um einen numerisch genauen Filter zu erhalten.

Daher kann für b=0 ein maximales c=0.5 verwendet werden, das ist dann ein Catmull-Rom-Spline und ein guter Wert für maximale Schärfe.

Mit Werten c>0.6 fängt der Filter an, Ring-Artefakte zu produzieren. Es entsteht hier keine echte Schärfe mehr, vielmehr eine Kantenkorrektur wie beim Fernseher.

Für b dürfen keine negativen Werte verwendet werden. b muss mindesten 0 sein.


LanczosResize

LanczosResize ist eine Alternative für BicubicResize mit hohen Werten von c von 0.6 ... 0.75 und erzeugt relativ starke Schärfung.

Es bietet normalerweise eine höhere Qualität (weniger Artefakte) und gleichzeitig ein scharfes Bild.


PointResize

PointResize ist die denkbar einfachste Methode, die einen Punkt-Sampler oder einen nächster-Nachbar-Algorithmus verwendet, was ein sehr geblocktes Bild erzeugt. Dieses Filter sollte daher nur verwendet werden, wenn man absichtlich eine "schlechte" Bildqualität erzeugen möchte oder klare Pixel-Zeichnungen möchte.

Weiter kann es auch zum probeweisen Vergrössern verwendet werden.

SourceForge Logo

 


Edit this document | View document history
Document last modified Wed, 06 Aug 2003 14:28:04