Wie kann ich einen Fisheye-Linseneffekt (Tonnentransformation) in MATLAB implementieren?

8

Wie kann man den in diesem Bild dargestellten Fisheye-Linseneffekt umsetzen:

Man kann Googles Logo für einen Versuch verwenden:

BTW, wie lautet der Begriff?

    
user198729 07.04.2010, 03:37
quelle

3 Antworten

12

Ich glaube, dass dies typischerweise entweder als "Fischaugenlinse" -Effekt oder als "Trommeltransformation" bezeichnet wird. Hier sind zwei Links zu Demos, die ich gefunden habe:

Beispiel

In diesem Beispiel habe ich mit der Funktion radial.m von und modifizierte die Art und Weise, wie Punkte zwischen den Eingabe- und Ausgabebereichen verknüpft werden, um ein schönes kreisförmiges Bild zu erstellen. Die neue Funktion fisheye_inverse ist unten angegeben und sollte in einem Ordner in Ihrem MATLAB-Pfad Sie können es später in diesem Beispiel verwenden:

%Vor%

Die Fisheye-Verzerrung sieht am besten aus, wenn sie auf quadratische Bilder angewendet wird. Daher sollten Sie Ihre Bilder quadratisch gestalten, indem Sie sie entweder zuschneiden oder mit einer Farbe füllen. Da die Transformation des Bildes für indexierte Bilder , möchten Sie auch alle indizierten Bilder in konvertieren RGB-Bilder mit ind2rgb . Graustufen oder binary Bilder wird auch gut funktionieren. So führen Sie das für Ihr Beispiel Google-Logo durch:

%Vor%

Jetzt können wir die Transformation mit maketform erstellen und sie mit imtransform (oder imwarp wie in neueren Versionen empfohlen:

%Vor%

Und hier ist das Bild, das Sie sehen sollten:

Sie können den Grad der Verzerrung einstellen, indem Sie den dritten Wert im Array options ändern. Dies ist die Exponentialstärke, die bei der radialen Verformung der Bildpunkte verwendet wird.

    
gnovice 07.04.2010, 04:12
quelle
1

Ich denke, Sie beziehen sich auf den Fischaugen Linseneffekt. Hier ist ein Code um Fisheye im Matlab zu imitieren.

    
Greg Bray 07.04.2010 04:11
quelle
0

Nur für das Protokoll:

Dieser Effekt ist eine Art radialer Verzerrung, die "tonnenförmige Verzerrung" genannt wird.

Weitere Informationen finden Sie unter:

Ссылка

Hier ist eine andere Methode zum Anwenden eines Effekts ähnlich der Tonnenverzerrung mittels Textur-Mapping (angepasst von MATLAB Dokumentation ):

%Vor%

Damit erhalten Sie den kreisförmigen Rahmen, nach dem Sie suchen, aber die Aliasing-Artefakte könnten zu komplex sein.

    
upperBound 07.04.2010 14:33
quelle