Lanczos-Resampling - Lanczos resampling

Lanczos-Interpolation mit Radius 1
Lanczos-Interpolation mit Radius 2
Lanczos-Interpolation mit Radius 3
Teildarstellung eines diskreten Signals (schwarze Punkte) und seiner Lanczos-Interpolation (durchgezogene blaue Kurve), mit Größenparameter a gleich 1 (oben), 2 (Mitte) und 3 (unten). Ebenfalls gezeigt sind zwei Kopien des Lanczos-Kerns, verschoben und skaliert, entsprechend den Proben 4 und 11 (gestrichelte Kurven).

Lanczos- Filterung und Lanczos-Resampling sind zwei Anwendungen einer mathematischen Formel. Es kann als Tiefpassfilter verwendet werden oder verwendet werden, umden Wert eines digitalen Signals zwischen seinen Abtastwerten glatt zu interpolieren . Im letzteren Fall bildet es jeden Abtastwert des gegebenen Signals auf eine übersetzte und skalierte Kopie des Lanczos-Kerns ab , der eine Sinc-Funktion ist, diedurch die zentrale Keule einer zweiten, längeren Sinc-Funktion gefenstert wird. Die Summe dieser übersetzten und skalierten Kernel wird dann an den gewünschten Stellen ausgewertet.

Lanczos-Resampling wird normalerweise verwendet, um die Abtastrate eines digitalen Signals zu erhöhen oder um einen Bruchteil des Abtastintervalls zu verschieben. Es wird oft auch für multivariate Interpolation verwendet , beispielsweise um ein digitales Bild in der Größe zu ändern oder zu drehen . Er gilt zu diesem Zweck als "bester Kompromiss" unter mehreren einfachen Filtern.

Der Filter ist nach seinem Erfinder Cornelius Lanczos ( ungarische Aussprache:  [ˈlaːnt͡soʃ] ) benannt.

Definition

Lanczos-Kernel

Lanczos-Fenster für a = 1, 2, 3.
Lanczos-Kernels für die Fälle a = 2 und a = 3. Beachten Sie, dass die Funktion negative Werte erhält.

Die Wirkung jedes Eingabesamples auf die interpolierten Werte wird durch den Rekonstruktionskern L ( x ) des Filters definiert , der Lanczos-Kernel genannt wird. Es ist die normalisierte sinc- Funktion sinc( x ) , gefenstert (multipliziert) mit dem Lanczos-Fenster ,oder sinc-Fenster , das ist die zentrale Keule einer horizontal gestreckten sinc-Funktion sinc( x / a ) für axa .

Äquivalent,

Der Parameter a ist eine positive ganze Zahl, typischerweise 2 oder 3, die die Größe des Kernels bestimmt. Der Lanczos-Kernel hat 2 a − 1 Lappen: einen positiven in der Mitte und einen − 1 abwechselnden negativen und positiven Lappen auf jeder Seite.

Interpolationsformel

Bei einem gegebenen eindimensionalen Signal mit Abtastwerten s i wird für ganzzahlige Werte von i der Wert S ( x ) interpoliert an einem beliebigen reellen Argument x durch die diskrete Faltung dieser Abtastwerte mit dem Lanczos-Kernel erhalten:

wobei a der Parameter für die Filtergröße und die Bodenfunktion ist . Die Grenzen dieser Summe sind so, dass der Kernel außerhalb davon null ist.

Eigenschaften

Solange der Parameter a eine positive ganze Zahl ist, ist der Lanczos-Kernel überall stetig , und seine Ableitung ist überall definiert und stetig (sogar bei x = ± a , wo beide sinc-Funktionen gegen Null gehen). Daher ist auch das rekonstruierte Signal S ( x ) kontinuierlich mit kontinuierlicher Ableitung.

Der Lanczos-Kernel ist bei jedem ganzzahligen Argument x null , außer bei x = 0 , wo es den Wert 1 hat. Daher interpoliert das rekonstruierte Signal genau die gegebenen Abtastwerte: Wir haben S ( x ) = s i für jedes ganzzahlige Argument x = ich .

Mehrdimensionale Interpolation

Der Incipit eines Schwarz-Weiß-Bildes. Originale Erweiterung in geringer Qualität mit JPEG-Artefakten.
Dasselbe Bild wurde mit Lanczos-Resampling auf fünfmal so viele Samples in jede Richtung neu abgetastet. Pixelierungsartefakte wurden entfernt, wodurch die Übertragungsfunktion des Bildes geändert wurde.

Der Kernel des Lanczos-Filters in zwei Dimensionen ist

Auswertung

Vorteile

Ein diskretes Lanczos-Fenster und sein Frequenzgang ; Vergleich mit anderen Fenstern siehe Fensterfunktion .

Der theoretisch optimale Rekonstruktionsfilter für bandbegrenzte Signale ist der Sinc-Filter , der unendlich unterstützt wird . Der Lanczos-Filter ist eine von vielen praktischen (endlich unterstützten) Näherungen des Sinc-Filters. Jeder interpolierter Wert ist das gewichtete Summe von 2 einer konsekutiven Eingangsabtastwerte. Somit wird durch die Variation 2 ein Parameter einer Berechnungsgeschwindigkeit kann für verbesserte Frequenzantwort handeln. Der Parameter ermöglicht auch die Wahl zwischen einer sanfteren Interpolation oder einer Erhaltung scharfer Transienten in den Daten. Bei der Bildverarbeitung besteht der Kompromiss zwischen der Reduzierung von Aliasing- Artefakten und dem Erhalt scharfer Kanten. Ebenso wie bei jeder solchen Verarbeitung gibt es keine Ergebnisse für die Ränder des Bildes. Durch Erhöhen der Länge des Kernels wird das Beschneiden der Bildränder erhöht.

Der Lanczos-Filter wurde mit anderen Interpolationsverfahren für diskrete Signale verglichen, insbesondere mit anderen gefensterten Versionen des Sinc-Filters. Turkowski und Gabriel behaupteten, dass der Lanczos-Filter (mit a = 2 ) der "beste Kompromiss in Bezug auf die Reduzierung von Aliasing, Schärfe und minimales Nachschwingen" im Vergleich zu abgeschnittenem Sinc und Bartlett- , Kosinus- und Hann-Fenster- Sinc sei Dezimierung und Interpolation von 2-dimensionalen Bilddaten. Laut Jim Blinn hält der Lanczos-Kernel (mit a = 3 ) "niedrige Frequenzen und weist hohe Frequenzen besser zurück als jeder (erreichbare) Filter, den wir bisher gesehen haben."

Die Lanczos-Interpolation ist ein beliebter Filter zum Hochskalieren von Videos in verschiedenen Mediendienstprogrammen wie AviSynth und FFmpeg .

Einschränkungen

Da der Kernel für a > 1 negative Werte annimmt , kann das interpolierte Signal auch dann negativ sein, wenn alle Abtastwerte positiv sind. Allgemeiner kann der Wertebereich des interpolierten Signals breiter sein als der von den diskreten Abtastwerten überspannte Bereich. Insbesondere kann es kurz vor und nach abrupten Änderungen der Abtastwerte zu Ringing-Artefakten kommen , die zu Clipping-Artefakten führen können . Diese Effekte sind jedoch im Vergleich zum (nicht gefensterten) Sinc-Filter reduziert. Für a  = 2 (ein dreilappiger Kernel) ist das Klingeln < 1%.

Die Methode ist eine der Interpolationsoptionen, die in der freien Software GNU Image Manipulation Program (GIMP) verfügbar sind. Eine Möglichkeit, den Klingeleffekt zu visualisieren, besteht darin, eine Schwarzweiß-Blockgrafik neu zu skalieren und die Lanczos-Interpolation auszuwählen.

Bei Verwendung des Lanczos-Filters für das Resampling von Bildern erzeugt der Ringing-Effekt entlang starker Kanten helle und dunkle Lichthöfe. Obwohl diese Streifen optisch störend sein können, tragen sie dazu bei, die wahrgenommene Schärfe zu erhöhen und bieten daher eine Form der Kantenverstärkung . Dies kann angesichts der besonderen Rolle der Kantenschärfe beim Sehen die subjektive Qualität des Bildes verbessern .

In einigen Anwendungen können die Low-End-Clipping-Artefakte verbessert werden, indem die Daten vor dem Filtern in eine logarithmische Domäne umgewandelt werden. In diesem Fall sind die interpolierten Werte eher ein gewichtetes geometrisches Mittel als ein arithmetisches Mittel der Eingabestichproben.

Der Lanczos-Kernel hat nicht die Partitionseigenschaft Unity . Das heißt, die Summe aller ganzzahlig übersetzten Kopien des Kernels ist nicht immer 1. Daher ergibt die Lanczos-Interpolation eines diskreten Signals mit konstanten Abtastwerten keine konstante Funktion. Dieser Fehler ist am offensichtlichsten, wenn  a = 1 ist . Auch für a = 1 hat das interpolierte Signal bei jedem ganzzahligen Argument eine Nullableitung. Dies ist eher akademisch, da die Verwendung eines Single-Lobe-Kernels ( a  = 1) alle Vorteile des Lanczos-Ansatzes verliert und einen schlechten Filter bietet. Es gibt viele bessere glockenförmige Einzelkeulen-Fensterfunktionen.

Siehe auch

Verweise

Externe Links

  • Beispiele für Anti-Korn-Geometrie : image_filters.cpp zeigt Vergleiche beim wiederholten Resampling eines Bildes mit verschiedenen Kerneln.
  • imageresampler : Eine Public-Domain-Bild-Resampling-Klasse in C++ mit Unterstützung für mehrere gefensterte Lanczos-Filterkernel.