Bild um einen ganzzahligen Faktor verkleinern


16

Wenn ein Bild um einen ganzzahligen Faktor herabgetastet wird , besteht die naheliegende Methode darin, die Pixel des Ausgabebildes auf den Durchschnitt der entsprechenden Blöcke im Eingabebild zu setzen.n × nnn×n

Ich erinnere mich vage irgendwo gelesen zu haben, dass diese Methode nicht optimal ist (sorry, ich erinnere mich an keine Details)

Stimmt es, dass es eine bessere Methode gibt (und wenn ja, wo schlägt die obige Methode fehl, obwohl sie "offensichtlich" richtig zu sein scheint)? Ich weiß nicht viel über Signalverarbeitung, diese Frage interessiert mich nur.


Wenn Sie keinen Hintergrund für die Signalverarbeitung haben, lautet die Erklärung für den Laien: Es gibt bessere Methoden für das Downsampling. Ihr Downsampling-Algorithmus wird die Bildpixelgröße technisch um N BUT verkleinern, aber der oben beschriebene Algorithmus wird in der Qualität im Vergleich zu besseren Downsampling-Algorithmen stark beeinträchtigt.
Trevor Boyd Smith

Antworten:


16

Das Downsampling eines Bildes reduziert die Anzahl der Samples, die das Signal darstellen können. In Bezug auf den Frequenzbereich wird der Hochfrequenzteil des Signals mit dem Niederfrequenzteil abgeglichen, wenn ein Signal abgetastet wird. Wenn es auf die Bildverarbeitung angewendet wird, besteht das gewünschte Ergebnis darin, nur den Niederfrequenzteil zu bewahren. Dazu muss das Originalbild vorverarbeitet (alias-gefiltert) werden, um den Hochfrequenzanteil zu entfernen, damit kein Aliasing auftritt.


Das optimale Digitalfilter zum Entfernen des Hochfrequenzanteils (mit der schärfsten Grenze) ist eine normale Funktion . Der Grund ist, dass die Frequenzdomänendarstellung der Sinc-Funktion über den gesamten Niederfrequenzbereich eine nahezu konstante 1 und über den gesamten Hochfrequenzbereich eine nahezu konstante 0 ist.

sinc(x)=Sünde(πx)πx

Die Impulsantwort des Sinusfilters ist unendlich. Das Lanczos-Filter ist ein modifiziertes Sinc-Filter, das die Sinc-Koeffizienten abschwächt und abschneidet, sobald die Werte unwichtig werden.


Im Frequenzbereich optimal zu sein, bedeutet jedoch nicht, im menschlichen Auge optimal zu sein. Es gibt Upsampling- und Downsampling-Methoden, die keine linearen Transformationen berücksichtigen, sondern bessere Ergebnisse als lineare liefern.


In Bezug auf die Aussage über ist zu beachten, dass während der Bildabtastung die Wahl der Koordinatenentsprechung zwischen dem hochauflösenden Signal und dem niedrigauflösenden Signal weder willkürlich ist noch zum Ausrichten ausreicht sie zum gleichen Ursprung (0) auf der realen oder diskreten Zahlenlinie.n×n

Die Mindestanforderung in der Koordinatenkorrespondenz ist das

  1. Das Upsampling eines Bildes mit willkürlichen Zufallswerten um einen ganzzahligen Faktor und das Downsampling um denselben ganzzahligen Faktor sollte das gleiche Bild mit einer minimalen numerischen Änderung ergeben.
  2. Upsampling / Downsampling eines Bildes, das nur aus einem einheitlichen Wert besteht, gefolgt von der umgekehrten Operation, sollte zu einem Bild führen, das aus dem gleichen Wert besteht, mit minimalen numerischen Abweichungen.
  3. Das wiederholte Anwenden von Upsampling / Downsampling-Paaren sollte die Verschiebung des Bildinhalts so weit wie möglich minimieren.

Was meinst du damit, dass die Transformation der sinc-Funktion in den jeweiligen Regionen "fast" 1 und 0 ist?

@Tim: Gibbs-Phänomen in der Nähe der Grenzfrequenz des Zinkfilters.
rwong

2
Eine Neuabtastung macht nur bei Signalen Sinn, die im Frequenzbereich wahrgenommen / verarbeitet werden, wie z. B. Audio. Bilder werden zumindest annähernd im räumlichen Bereich wahrgenommen (dies ist umstritten; es ist möglich, dass eine gewisse Wahrnehmung von wiederholten Mustern im Frequenzbereich liegt), und jede frequenzbereichsbasierte Transformation erzeugt böse Verzerrungen (Klingeln usw.) im Frequenzbereich räumliche Domäne. Grundsätzlich führt jede Faltungs- / Linearoperation mit negativen Koeffizienten zu unangenehmen Artefakten, und jede Operation mit nicht negativen Koeffizienten führt zu Unschärfe.
R ..

6

Sie haben Recht, dass die Flächenmittelung ziemlich nahe an der "besten" liegt, die Sie bekommen können, aber das Problem ist das inkonsistente Verhalten beim Herunterskalieren einer scharfen Linie mit der Breite N um den Faktor N. Wenn die Position der Linie modulo ausgerichtet ist N, Sie erhalten eine scharfe 1-Pixel-Linie, aber wenn es ungefähr N / 2 Mod N ist, erhalten Sie eine sehr unscharfe Linie (2 Pixel breit bei halber Intensität). Dies kann sehr schlecht aussehen und bei nichtlinearem Gamma sogar zu Intensitätsunterschieden führen. (Im Idealfall muss das Resampling mit Gamma-Korrektur für eine lineare Intensitätsskala erfolgen. In der Praxis tut dies jedoch fast niemand, da es sehr teuer ist.)

Wenn Sie dies verbessern möchten, müssen Sie zunächst die Tatsache akzeptieren, dass es in einigen Fällen unmöglich ist, die Unschärfe zu verringern. Die einzige Möglichkeit, eine einheitliche Ausgabe zu erzielen , besteht darin, die Unschärfe zu erhöhen . Der ideale Weg ist, einen Gaußschen Kernel mit einem Radius größer als N / 2 anstelle einer Schrittfunktion als Faltungsfunktion für das Quellbild zu verwenden. Wenn Sie jedoch bereits über eine Implementierung zur N-mal-N-Flächen-Mittelwertbildung verfügen, können Sie auf billige Weise eine (1 / 4,1 / 2,1 / 4) -Unschärfefaltung auf das resultierende Downsampling anwenden Bild.

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.