2010-06-24 8 views
19

die Bildfunktion durch Emgu (a .net Wrapper für OpenCV) vorgesehen Ändern der Größe verwenden können any one of four interpolation methods:Wie wähle ich eine Bildinterpolationsmethode? (Emgu/OpenCV)

  1. CV_INTER_NN (default)
  2. CV_INTER_LINEAR
  3. CV_INTER_CUBIC
  4. CV_INTER_AREA

Ich verstehe grob lineare Interpolation, kann aber nur raten, was kubische oder Fläche tun. Ich vermute, NN steht für den nächsten Nachbarn, aber ich könnte mich irren.

Der Grund, warum ich ein Bild in der Größe verändere, ist, die Anzahl der Pixel zu reduzieren (sie werden irgendwann übersprungen), während sie repräsentativ bleiben. Ich erwähne das, weil mir scheint, dass Interpolation für diesen Zweck von zentraler Bedeutung ist - die richtige Art zu bekommen, sollte daher sehr wichtig sein.

Meine Frage ist dann, was sind die Vor- und Nachteile von jeder Interpolationsmethode? Wie unterscheiden sie sich und welche sollte ich verwenden?

Antwort

19

Nächster Nachbar wird so schnell wie möglich sein, aber Sie werden wesentliche Informationen verlieren, wenn Sie die Größe ändern.

Die lineare Interpolation ist weniger schnell, führt aber nicht zu einem Informationsverlust es sei denn, schrumpfen Sie das Bild (was Sie sind).

Kubische Interpolation (wahrscheinlich tatsächlich "bikubisch") verwendet eine von vielen möglichen Formeln, die mehrere Nachbarpixel enthalten. Das ist viel besser für das Schrumpfen von Bildern, aber Sie sind immer noch begrenzt, wie viel Sie ohne Informationsverlust schrumpfen können. Abhängig vom Algorithmus können Sie Ihre Bilder wahrscheinlich um 50% oder 75% reduzieren. Der Hauptgrund für diesen Ansatz ist, dass es viel langsamer ist.

Nicht sicher, was "Bereich" ist - es kann tatsächlich "bicubic" sein. Aller Wahrscheinlichkeit nach wird diese Einstellung zu Ihrem besten Ergebnis führen (hinsichtlich Informationsverlust/Aussehen), jedoch auf Kosten der längsten Verarbeitungszeit.

Update: Link weitere Informationen gibt (einschließlich eines fünften Typs nicht in der Liste enthalten):

http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize

9

Das Interpolationsverfahren hängt von verwenden, was Sie zu erreichen versuchen:

CV_INTER_LINEAR oder CV_INTER_CUBIC wenden Sie einen Tiefpassfilter (Durchschnitt) an, um einen Kompromiss zwischen visueller Qualität und Randentfernung zu erzielen Oval (Tiefpassfilter neigen dazu, Kanten zu entfernen, um Aliasing in Bildern zu reduzieren). Zwischen diesen beiden würde ich Ihnen empfehlen CV_INTER_CUBIC.

CV_INTER_NN Methode ist eigentlich Nächster Nachbar, es ist die einfachste Methode und Sie erhalten schärfere Kanten (kein Tiefpassfilter wird angewendet). Allerdings ist diese Methode einfach wie "Zoomen" des Bildes, keine visuelle Verbesserung.

1

Sie alle verlieren Informationen, die Sie verwenden, hängt von der Geschwindigkeit ab, die Sie benötigen, wie viel Informationen Sie sich leisten können zu verlieren und die Art Ihres Bildes.

Leider gibt es keine richtige Antwort - das ist, warum es eine Wahl

4
ist

Die Algorithmen sind: (Beschreibungen der OpenCV-Dokumentation sind)

  • INTER_NEAREST - ein Nächster-Nachbar-Interpolation
  • INTER_LINEAR - eine bilineare Interpolation (wird standardmäßig verwendet)
  • INTER_AREA - Resampling mit Pixelflächenrelation. Es kann eine bevorzugte Methode zur Bilddezimierung sein, da es Moiré-freie Ergebnisse liefert. Wenn das Bild jedoch gezoomt wird, ähnelt es der Methode INTER_NEAREST.
  • INTER_CUBIC - eine bikubische Interpolation über 4x4-Pixel-Nachbarschaft
  • INTER_LANCZOS4 - eine Lanczos-Interpolation über 8x8-Pixel-Nachbarschaft

Wenn Sie mehr Geschwindigkeit Verwendung Nearest Neighbor-Methode wollen.

Wenn Sie die Qualität des Bilds nach dem Downsampling erhalten möchten, können Sie INTER_AREA-basierte Interpolation verwenden, aber auch hier kommt es auf den Bildinhalt an.

Sie können detaillierte Analyse des Geschwindigkeitsvergleiches here

Im Folgenden wird der Geschwindigkeitsvergleich auf 400 * 400 Pixel Bild aus dem obigen Link genommen finden

Speed comparison

+0

Große Antwort, +1. Leider bin ich mir nicht sicher, dass Sie viel mehr bekommen werden, da die Frage 7 Jahre alt ist. –

+0

Ursprüngliche Quelle: http://tanbakuchi.com/posts/comparison-of-openv-interpolation-algorithms/ – dgorissen

Verwandte Themen