Was sind die praktisch relevanten Unterschiede zwischen verschiedenen Bild-Resampling-Methoden?


22

Die ImageResizeFunktion von Mathematica unterstützt viele Resampling- Methoden.

Da ich mit diesem Gebiet nicht vertraut bin, bin ich jenseits des nächsten Nachbarn bilinear, biquadratisch und bikubisch (was aus dem Namen ersichtlich ist) verloren.

Können Sie mich auf eine Quelle verweisen, die die grundlegenden (mathematischen) Unterschiede zwischen diesen Methoden erklärt und insbesondere auf die praktischen Unterschiede hinweist (z. B. indem Sie Beispielbilder zeigen, bei denen die Wahl der Methode wirklich wichtig ist und spürbare Unterschiede einführt)?

Ich habe keinen Hintergrund für die Signalverarbeitung, daher würde ich eine "sanfte" und prägnante Einführung bevorzugen :-)


Ich kopiere hier die Liste der ImageResizeMethoden für diejenigen, die "faul" sind, um auf den Link zu klicken:

  • Resampling des nächsten Nachbarn "am nächsten"

  • "Bilineare" bilineare Interpolation

  • "Biquadratic" Biquadratic Spline Interpolation

  • "Bikubische" bikubische Spline-Interpolation

  • "Gaußscher" Gaußscher Resampling

  • "Lanczos" Lanczos multivariates Interpolationsverfahren

  • Cosinus-Interpolation

  • "Hamming" -Raised-Cosine-Hamming-Interpolation

  • "Hann" -Raised-Cosine-Hann-Interpolation

  • "Blackman" -Drei-Term-Generalized-Raised-Cosine

  • "Bartlett" Dreiecksfensterinterpolation

  • "Connes" quadrierte Welch-Interpolation

  • "Welch" Quadratische Welch-Interpolation

  • "Parzen" stückweise kubische Interpolation

  • "Kaiser" -modifizierte Bessel-Interpolation nullter Ordnung


1
Die Frage erscheint mir zu weit gefasst. Es ist ratsam, es in bestimmte Methoden zu unterteilen und bestimmte Fragen zu Methoden zu stellen, mit denen Sie Probleme haben.
mirror2image

Etwas tangential zu Ihrer Frage, könnte Sie dieser Bild-Upsampling-Vergleich interessieren: general-cathexis.com/interpolation/index.html
Mr.Wizard

Ich würde darauf achten, dass alle von Ihnen geschriebenen Methoden Space Invariant sind. Ich denke, modernere Methoden für das Upsampling sind Edge Aware und Space Variant.
Royi

Hier ist die vorletzte Transformation. Es wird als PB-Transformation bezeichnet und transformiert das Bild durch bikubische Vorhersage von Werten gemäß der Wahrscheinlichkeit dessen, was nach dem Training mit vielen anderen Bildern auftreten soll. So sieht das [Ergebnis] [1] aus. [1]: v1.std3.ru/57/a9/…
MyBushisaNeonJungle

Antworten:


12

I(m,n)m,nm,n

I~(m,n)=m=mw+1m+w n=nw+1n+wI(m,n) f(mm,nn)

I~I(x,y) und alles, was verschiedene Interpolationsfunktionen tun, ist, den Annäherungsfehler unter verschiedenen Bedingungen und Zielen zu minimieren.

f(m,n) Fensterfunktionen hängt , stark vom jeweiligen Problem ab. Ich habe noch nichts von Connes, Welch und Parzen gehört (vielleicht sind sie domänenspezifisch), aber die anderen sollten die 2-D-Entsprechungen der mathematischen Funktionen für ein 1-D-Fenster sein, die im obigen Wikipedia-Link angegeben sind.

Genau wie bei Fensterfunktionen für zeitliche Signale ist es einfach, anhand des Frequenzgangs einen Überblick über die Funktionsweise eines Bildinterpolationskerns zu erhalten. Aus meiner Antwort zu Fensterfunktionen :

Die zwei Hauptfaktoren, die eine Fensterfunktion beschreiben, sind:

  1. Breite der Hauptkeule (dh bei welchem ​​Frequenzbereich ist die Leistung halb so groß wie die maximale Antwort)
  2. Dämpfung der Nebenkeulen (dh wie weit unten die Nebenkeulen von der Hauptkeule entfernt sind). Dies informiert Sie über die spektrale Leckage im Fenster.

Dies gilt so ziemlich für Interpolationskerne. Die Wahl ist grundsätzlich ein Kompromiss zwischen Frequenzfilterung (Dämpfung von Nebenkeulen), räumlicher Lokalisierung (Breite der Hauptkeule) und Reduzierung anderer Effekte wie Klingeln (Gibbs-Effekt), Aliasing, Unschärfe usw. Beispielsweise kann ein Kernel mit Schwingungen wie z wie der sinc-Kernel und der Lanczos4-Kernel "Klingeln" einführen in das Bild , während ein Gauß-Resampling kein Klingeln einführt.

Hier ist ein vereinfachtes Beispiel in Mathematica, in dem Sie die Auswirkungen verschiedener Interpolationsfunktionen sehen können:

true = ExampleData[{"TestImage", "Lena"}];
resampling = {"Nearest", "Bilinear", "Biquadratic", "Bicubic", 
   "Gaussian", "Lanczos", "Cosine", "Hamming", "Hann", "Blackman", 
   "Bartlett", "Connes", "Welch", "Parzen", "Kaiser"};
small = ImageResize[true, Scaled[1/4]];

trueI(x,y)smallI(m,n)I(m,n)I~(m,n)

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Sie können selbst sehen, dass verschiedene Interpolationsfunktionen unterschiedliche Auswirkungen haben. Die nächsten und einige andere weisen sehr grobe Merkmale auf, und Sie können im Wesentlichen gezackte Linien sehen (siehe Bild in voller Größe, nicht die Rasteranzeige). Bikubisch, biquadratisch und Parzen überwinden dies, führen aber zu viel Unschärfe. Von allen Kernen scheint Lanczos (visuell) der attraktivste zu sein und derjenige, der den besten Job macht.

Ich werde versuchen, diese Antwort zu erweitern und intuitivere Beispiele bereitzustellen, die die Unterschiede veranschaulichen, wenn ich Zeit habe. Vielleicht möchten Sie diesen recht einfachen und informativen Artikel lesen , den ich im Internet gefunden habe (PDF-Warnung).


Ist das die Infixnotation, die ich sehe!?! : ->
Mr.Wizard

@ Mr.Wizard Ich habe gesagt, ich würde einen ehrlichen Versuch machen :)
Lorem Ipsum
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.