Erstellung und Präsentation von Panoramen

Aus FunkFeuer Wiki
Zur Navigation springen Zur Suche springen

Folgendes ist eine Niederschrift meiner Erfahrungen, und kann keine absoluten Wahrheiten anbieten.

1. Aufnahme der Einzelbilder

Um das Zusammenfügen des Panoramas möglichst einfach zu machen, und dabei möglichst wenige sichtbare Verschiebungen zu produzieren folgende Tipps:

  • Bilder mit zwischen 20% und 30% Überschneidung aufnehmen.
  • Position möglichst Konstant halten (Am besten ein Stativ verwenden)
  • Den Drehpunkt möglichst Nahe am Knotenpunkt (Am Besten einen "Nodalpunktadapter" / Panorama-Stativ-Kopf, sind leider recht teuer (im 3-Stelligen €-Bereich, z.B.), kann man aber mit sowas [1] auch um einen 2-Stelligen €-Betrag selber basteln)).

2. Zusammensetzen des Panoramas

Ich habe die besten Ergebnisse mit Hugin erreicht.

  • Falls Wolken auf den Bildern zu sehen sind, umbedingt das Feature "Celeste" vor der Erkennung der Kontrollpunkte aktivieren. (Datei -> Einstellungen -> Kontrollpunkt-Detektor -> Cpfind+Celeste -> Als Standard verwenden)
  • Um Panoramas die Breiter als ca 70.000 Pixel sind, muss man aufgrund eines Bugs das ganze Toolset selbst komplieren - Mit hugin 2013.0 und enblend 4.2 lassen sich Panoramas erstellen, die bis zu 2^31 Pixel haben. Mein größtes damit erstelltes Panorama hat 253.352 x 8.476 Pixel - siehe [2]

3. Präsentation des Panoramas

  • Pannellum - Für 360° Panoramas unter 8.200 Pixel Breite, Technologie: Javascript + WebGL --> Beispiel: [3]
  • SaladoPlayer 1.3.5 Für 360° Panoramas bis zu 70.000 Pixel Breite, Technologie: Flash --> Beispiel: [4]
    • Um ein Equirectlinear Panorama (=Output von Hugin) mit SaladoPlayer präsentieren zu können, muss es mit dem SaladoConverter in ein Deep Zoom cubic panorama umgewandelt werden.
    • Um vom SaladoConverter akzeptiert zu werden, muss das Panorama genau halb so viele Pixel in der Höhe haben, wie in der Breite. In den meisten Fällen hat man keine komplette Kugel, sondern oben und unten fehlt ein Stück. Es ist wesentlich weniger Rechenaufwand diese schwarzen Streifen oben & unten nachträglich mit Gimp hinzuzufügen, also Hugin anzuweisen ein volles 360° * 180° Panorama auszugeben.
    • Alternative: erect2cubic (Vorteile: schneller & braucht weniger RAM, produziert weniger Artifakte (linien) & Pixelverhältnis muss nicht 2:1 sein, aber Horizont muss weiterhin zentriert sein; Nachteil: Input-Bild darf maximal 2^31 Pixel haben.)
      • Installation: sudo cpan -> install Panotools::Script
      • Verwendung: erect2cubic --erect=equirectlinear-input.tif --ptofile=cube.pto; nona -o prefix cube.pto
      • Tiling mittels imgcnv (siehe unten) Für die Umsortierung der Tiles ins Salado-Format hab ich ein script geschrieben: [5]
  • PanoJS3 für die "flache" Darstellung von Bildern, die zu groß sind, um sie direkt als JPG in einer vernünftigen Größe von wenigen MB in einem Stück vom Browser darstellen zu lassen. Siehe auch das panojs github repository. Technologie: Nur Javascript. --> Beispiel: [6]
    • Zum zerstückeln des Bildes in Tiles entweder das Inkludierte Python-Script verwenden, oder der Weg den ich gewählt habe: bioImageConvert
    • imgcnv -i MY_INPUT_IMAGE.tif -o MY_OUT_FOLDER/MY_OUT_BASE_NAME.jpg -t jpeg -tile 512

Limits, Bugs & Workarounds verwendeter Tools

  • enblend und damit hugin stürzt ab, wenn ein Input oder Output file mehr als 2^31 Pixel haben sollte.
    • größt mögliches 360° x 180° equirectlinear Panorama das mit enblend generiert werden kann ist somit 65534 x 32767
    • Workaround: Hochauflösend braucht man bei unsrer Art von Panoramen eigentlich nur den Horizont
    • Also das Panorama auf 2 Schritte generieren, einmal mit hoher Auflösung und sehr schmal den Horizont (z.B. so wie [7] und mit einer geringeren Auflösung den Hintergrund. Anschließend skaliert man den Hintergrund mit Gimp (oder ähnlichem) auf die Größe des Horizonts und legt diesen darüber.
  • der SaladoConverter stürzt ebenfalls bei zu großen Input-Bildern ab, jedoch hat er eine etwas höhere mir nicht genau bekannte Grenze.
    • Das größte von mir damit erfolgreich konvertierte Panorama hatte 75692 x 37846 Pixel (siehe [8])
    • Mittels direktem aufrufen der einzelnen Teile des Converters konnte ich auch ein 80844 x 40422 Pixel großes Panorama konvertieren, jedoch hat das Artifakte produziert (siehe [9] Artefakte sieht man nur wenn man nah ranzoomt (Linien))