Erstellung und Präsentation von Panoramen: Unterschied zwischen den Versionen

Aus FunkFeuer Wiki
Zur Navigation springen Zur Suche springen
Zeile 13: Zeile 13:


* 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)
* 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 [https://bugs.launchpad.net/enblend/+bug/685105 Bugs] das ganze Toolset [http://wiki.panotools.org/Hugin_Compiling_Ubuntu 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 [http://kaefert.is-a-geek.org/panojs3/]
* Um Panoramas die Breiter als ca 70.000 Pixel sind zusammenzufügen, muss man aufgrund eines [https://bugs.launchpad.net/enblend/+bug/685105 Bugs] das ganze Toolset [http://wiki.panotools.org/Hugin_Compiling_Ubuntu 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 [http://kaefert.is-a-geek.org/panojs3/]


== 2.1. Riesige Panoramen mit mehr als 2^31 Pixel ==
== 2.1. Riesige Panoramen mit mehr als 2^31 Pixel ==
Zeile 22: Zeile 22:
# Die Teilstücke mittels Hugin+Nona von Zylindrisch auf Rectlinear verzerren
# Die Teilstücke mittels Hugin+Nona von Zylindrisch auf Rectlinear verzerren
# Mit Gimp die Weitwinkel-Würfel-Seiten auf die Größe der Tele-Ausschnitte hochskalieren und den Teleausschnitt als Layer darüber legen, als TIF exportieren.
# Mit Gimp die Weitwinkel-Würfel-Seiten auf die Größe der Tele-Ausschnitte hochskalieren und den Teleausschnitt als Layer darüber legen, als TIF exportieren.
# Mit Imagemagick und ein paar Shell-Scripts die ich geschrieben habe (siehe http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=24644&p=106090 ) Die Würfelseiten in Tiles für den Salado-Player zerteilen.
# Mit Imagemagick und ein paar Shell-Scripts die ich geschrieben habe (siehe [http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=24644&p=106090] ) Die Würfelseiten in Tiles für den Salado-Player zerteilen.


Beispiel eines so erstellten Panoramas mit 400.000 Pixel Breite: [http://kaefert.is-a-geek.org/SaladoPlayer-1.3.5/?pano=koega_2013-11-27]
Beispiel eines so erstellten Panoramas mit 400.000 Pixel Breite: [http://kaefert.is-a-geek.org/SaladoPlayer-1.3.5/?pano=koega_2013-11-27]

Version vom 30. Dezember 2013, 13:17 Uhr

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 - so wie hier: Medium:Selbst_gebastelter_Nodalpunktadapter_(DSC_0034).jpg)).

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 zusammenzufügen, 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]

2.1. Riesige Panoramen mit mehr als 2^31 Pixel

  1. Weitwinkel Fotos "ganz normal" (siehe oben) zu einem 360° Panorama verarbeiten, und die Würfelseiten vorm tiling aufheben.
  2. Tele-Fotos ebenfalls normal verarbeiten (Kette Hugin -> Nona -> Enblend). Enblend schmiert ab weil das Zielbild mehr als 2^31 Pixel hat (signed integer ?! schlechte Pizza? Addressierung mit signed variable..??) -> Die Ausgabe von Nona aufheben.
  3. Aus den von Nona vorverarbeiteten Bildern mit Enblend 4 Teilstücke (die den Weitwinkel-Würfel-Seiten entsprechen) mittels Enblend zusammenfügen.
  4. Die Teilstücke mittels Hugin+Nona von Zylindrisch auf Rectlinear verzerren
  5. Mit Gimp die Weitwinkel-Würfel-Seiten auf die Größe der Tele-Ausschnitte hochskalieren und den Teleausschnitt als Layer darüber legen, als TIF exportieren.
  6. Mit Imagemagick und ein paar Shell-Scripts die ich geschrieben habe (siehe [3] ) Die Würfelseiten in Tiles für den Salado-Player zerteilen.

Beispiel eines so erstellten Panoramas mit 400.000 Pixel Breite: [4]

3. Präsentation des Panoramas

  • Pannellum - Für 360° Panoramas unter 8.200 Pixel Breite, Technologie: Javascript + WebGL --> Beispiel: [5]
  • SaladoPlayer 1.3.5 Für 360° Panoramas bis zu 70.000 Pixel Breite, Technologie: Flash --> Beispiel: [6]
    • 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, als 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: [7]
  • 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: [8]
    • 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 [9] 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 [10])
    • 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 [11] Artefakte sieht man nur wenn man nah ranzoomt (Linien))