Feature preview for Xpano

First of all - Happy New Year to all of you :slight_smile:

I’d like to share a bit of progress I’ve made with Xpano - I’m implementing a mode in the app where you can adjust the projection rotation (yaw, pitch, roll). This was previously impossible to do in Xpano, you had to use an external tool.

This built-in rotation feature has the benefit of reducing the number of times the image has to be resampled - the rotations are applied to the computed camera parameters and then the panorama is reprojected from original source data.

The image preview is reprojected after each adjustment, you can see it better in the video:

2024-01-01 21-27-20.mkv (7.6 MB)

There is still some polish / usability improvement to do until I’ll release this , but I’m already quite happy with the results, hope you find this feature useful!

Is there something you’d like to see included? I’d be greatful for any tips or feedback from you.

(for self-build it is available here: GitHub - krupkat/xpano at feature-pano-states)

I have added pre-release binaries for testing: Release 0.18.0 - Projection adjustments · krupkat/xpano · GitHub


Very cool!

1 Like

That looks great!
I don’t think I really have any further suggestions. Thanks for your work!

1 Like

This looks really good. The adjustments you show are what attracts me to Microsoft Image Compositor (ICE). It looks like you may be doing it even better. I can wait for a Windows download to be available to test it out. I don’t feel confident to try to do a self build.

I presume it is not practical to code this into other FOSS programs like GIMP or Darktable?


Thanks for the feedback! I’m not using ICE anymore as I’m mostly on Linux now, but it is indeed an inspiration for this feature :slight_smile:

In case you’d like to test it out, I have created pre-release binaries here (win, appimage, mac-x86): Release 0.18.0 - Projection adjustments · krupkat/xpano · GitHub

As for a possible gimp / darktable extension - this is probably not within my reach at the moment, I have no experience with development for them + not that much time now, but it is an interesting thought.

In principle it could be done by exporting the camera parameters (maybe in exif / xmp) and then using that to reproject, maybe using Xpano as a library or directly OpenCV.


Hello @krupkat

Do you plan to add an option to add RAWs files as well ?

Just tried the pre-release version (0.18.0) on Windows 10 (64 bit).
As soon as I tried to rotate my jpegs images they disappear afterwards from the gui, which remains black

To always reproduce:

  • open some jpeg images;
  • choose “perspective mode”;
  • click on “full-res”;
  • click on rotate and move the “controls rules” to rotate the preview;
  • the image disappears and the window remains black.

1 Like

Just two very minor suggestions:

  • 1
    Make it possible to not always load the changelog because you are forced to close this windows over and over at startup.
    EDIT: Actually, this only occurs when you are switching between version (e.g. 0.17 and 0.18). If you stick with one version you are fine
  • 2
    Very controversial (I know…) : list the first image as 1 instead of 0.
    I am fully aware 0 is the “correct” index from a computer point of view but for a photographer is a bit weird (at leat IMHO…) :slight_smile:
1 Like

Very nice work indeed!

1 Like

Thanks for running the test @Silvio_Grosso and your feedback. Seems like your example is on my todo list of fixes, I have to properly compute the center of rotation for rolling adjustments… although it shouldn’t disappear immediately. I’d be happy to test your example images, feel free to pm me.

Re. your suggestions:

  1. like you noticed, the changelog only shows when switching versions
  2. this is not controversial really, I totally agree, I’m just blind to it by now :slight_smile: I’ll add it to the next version

A prerequisite for RAW support is this issue: Support inputs with higher image depth · Issue #74 · krupkat/xpano · GitHub I’d love to get to it at some point

1 Like

darktable is a raw processor and it’s whole pixel pipe is designed to deal with one raw file. A panorama stiched from just one image isn’t a convincing usecase …

1 Like

Hi Martin,
I guess what I am suggesting is something like the script that already exists for DT to export images for stitching in Hugin and to return the output to DT for further editing. But I see this as a low priority for Xpano at this time. From my perspective I would love to see Xpano one day stitch Raw files and output a DNG that could be edited in DT, RT or whatever RAW processor that people use. Tomas has taken on an ambitious project and seems to be progressing well with it. The video looked very promising.

1 Like

Hello everyone,

there is a new version available with the new feature significantly polished, you can check out a video here: Projection adjustments by krupkat · Pull Request #118 · krupkat/xpano · GitHub

The binaries are available as a pre-release:

  • As a bonus there is a package for arm64 MacOS now as new github runners are available :slight_smile:

I’ll do the release on all the platforms in a week or so.

As always, I’d be happy to hear your feedback / feature requests / info about crashes. Have a great day!


Thank you, xpano works very smoothly and quickly. considerably faster than e.g. Hugin. I can do 80% with xpano and 15% with Hugin. Hugin is still needed for additional operations such as masks and EV correction. The alignment itself even goes very well with XPano. Hopefully someone can make a LUA script so that Xpano can be controlled directly from darktable. And maybe an Arch-linux build file. :slight_smile:

1 Like

Hello @krupkat

Just tested right now (Windows 10)
It works extremely fine and it is super stable as well.
I have tried 3 differents sets of panoramas images (jpeg)

Most of all, it is super EASY to work with :slight_smile:
Thanks a lot indeed!


See the difference between Hugin (with assist) and XPano (without adjust). It is good to see that XPano has much less trouble with the very fast moving clouds.

Another question, both photos have the extension .pano. Is it possible to automatically give the xpano panorama the extension xpano?


That would be an easy fix, thanks for the suggestion! I’ll keep it in mind for the next release. I’m also happy to accept a PR on this if anyone would feel like looking at it before :slight_smile:

And thanks a lot for the feedback, also @Silvio_Grosso, it is quite valuable to know the app works well for you.

Btw. There is a pkgbuild for arch from @sguyader here: PKGBUILD proposal for Arch linux · Issue #85 · krupkat/xpano · GitHub, probably with a minor update you could make it to work

I’m sorry that I didn’t finish this PKGBUILD, but the help I got from the AUR experts wasn’t conclusive. So this script is not on AUR.

No worries, I appreciate the help! Maybe someone else will pick it up later.

1 Like