/pano-workflow

Workflow for 360° VR panos with SLANT adapter and Hugin

Primary LanguagePython

VR panorama workflow with Hugin, GIMP and SLANT pano head

This is a set of scripts intended to build 360° x 180° panoramas shot in single-row technique with a SLANT panoramic head.

The intention is to transform a set of photos into a equirectangular panorama with as little user intervention as possible.

Components

This repository is split into two parts:

  • A script that uses the Hugin CLI tools to create a Hugin project file

  • A GIMP plugin to automate the pre- and post-processing required for patching the zenith and nadir

Requirements

  • bash and python3

  • The Hugin suite. The script should work with any recent version. It was tested with Hugin 2023.

  • GIMP. The plugin requires a GIMP version with Python3 interface; at the time of writing this means installing the 2.99.x development version, that beta version is required until GIMP 3 is released.

    The beta version can be easily installed via flatpak:

    flatpak install --user https://flathub.org/beta-repo/appstream/org.gimp.GIMP.flatpakref
    
    • The GIMP step (zenith and nadir patching) is already possible with GIMP out of the box (see Filters -> Map -> Panorama Projection); the plugin only eliminates manual steps through automation.

    • To make GIMP aware of the plug-in, point it at the "gimp-plugin" folder in this repository:

      • Edit -> Preferences -> Folders -> Plug-ins

      • Add the path to the "gimp-plugin" directory

      • After restart, there should be a new menu entry (Filters -> Panorama)

Usage

Create panorama

  • Call create-pano.sh, pointing it at the first photo of the series. It will select 8 consecutive image files for the panorama.

    e.g. scripts/create-pano.sh /path/to/img/DSCF0025.JPG

  • The script creates a Hugin project containing the photo set, pre-aligns the photos (using known parameters like slant angle, lens properties, angle between images), creates control points and conducts a first optimization run.

  • After the Hugin project is built it is opened in Hugin Panorama Creator GUI.

  • Hugin GUI should already show a decent panorama; now it's possible to do some fine tuning (move/drag/straighten, further optimization etc)

  • Select panorama format & resolution

  • Finally stitch the panorama from the GUI or on the command line (e.g. hugin_executor --stitching tmp/pano_final.pto).

Patch zenith & nadir

  • Open the stiched panorama in GIMP.

  • Run Filters -> Panorama -> Extract Zenith and Nadir

    • Two new layers should appear, containing the Zenith and Nadir in rectilinear projection.
  • Patch the Zenith and Nadir layers until satisfied.

  • Run Filters -> Panorama -> Reinsert Zenith and Nadir

    • The Zenith and Nadir layers should be reverted into equirectangular projection.
  • The panorama can now be flattened & exported for further editing or publishing.

Compatibility

The Hugin script was created for and tested with a Samyang 8mm f/2.8 Fisheye & Fuji X-E2 on a PT4Pano SLANT pano head. This setup requires 8 single-row shots for a 360° x 180° panorama.

The script should work out of the box with any single-row fisheye setup using 8 shots for 360˚.

It should be easily adaptable for similar setups that use a different number of shots.

TODO

  • Support exposure bracketing for HDR panoramas.
  • Use ML / GAN to "auto-patch" zenith and nadir without user intervention.