Am 07.03.21 um 10:05 schrieb Harry van der Wolf:
Sorry. Long mail.
Op za 6 mrt. 2021 om 20:03 schreef yuv
From far away, it looks like there are four alternatives:
(a) do nothing;
(b) distribute pv along Hugin;
(c) integrate pv's functionalities into Hugin; or
(d) integrate Hugin's functionalities into pv.
My vote would be for (b), just like Kay himself also mentions.
That's also what I would propose. The distribution process is already
established, and building pv as yet another binary to 'ride out' with a
hugin bundle should not be too hard - I have already put a lot of work
into making porting easy, as you can see from the fact that we have
proof of build and execution on Linux, macOS, Windows and even on the
Raspi's ARM processor.
Due to my licensing, everyone who complies with the GPLv3 is of course
free to 'rip my code apart' or fork pv, but I think there's not so much
interest for that - maybe after some time. And I like being upstream -
the debacle with hugin's python interface which has never made it far
beyond linux and broke with every new release is a warning to me: I'd
rather be responsible for my own code, remain upstream, and fork out
'release' versions which might be packaged with hugin, if the hugin crew
thinks that's a good idea. Packagers might also simply provide a
'flavour' of hugin which includes pv, and let the user choose which she
picks.
How far is pv from being a replacement to Hugin, and do you see it
going there?
Not there (yet). Hugin has way more tweaking options to create great
looking panos. Translations for example are not supported by pv (yet?),
and neither are masks.
That is correct. Really, pv is a panorama *viewer*, and so far the
stitching and blending capabilities are 'nice to have' extra features.
They are also a playground for my new technology, my library 'vspline'
which does all the 'heavy lifting' in the background - and for it's
application to image processing. I use pv as a showcase of how image
processing applications can profit from vspline, and as a handy test bed
to work on my image processing ideas. I hope that some of my development
work turns out to be attractive to other people so that they may *want*
to use vspline or some of pv's code - for example for blending and
stitching. I'm making an offer.
Having an application out which exhibits desirable features may help
popularize the underlying technology. It's interesting stuff, and it's
sad that so far it's largely ignored - I put a lot of effort into it,
and vspline is now quite mature and stable. Releasing it through debian
makes new versions 'trickle down' quite slowly, that's why I enclude
full vspline source code in pv's repo - vspline is header-only.
Next to that: The Hugin assistant makes things way more easy than
currently in pv. Of course: also getting the most out of Hugin, as in
pv, requires some in-depth knowledge.
Also: pv's goal is to also improve your already created images (or
panoramas).
And to *display* them adequately. With smooth zooms and pans, QTVR-like
control, easy snapshotting, slideshows, etc. pp. - this is pv's core
functionality. Display your images and panoramas. Under a common
surface, with high quality, and an interface which 'puts nothing between
you and your images'. And with many options for experts who want to go
'deeper'.
Conversely, how different is pv from Hugin and how difficult would be
that integration work? I suspect that the use of a different GUI
Toolkit is a major obstacle, but your expertise my intuition wrong?
Which brings us to what I understand is your proposal, to distributed
pv along Hugin. The cost to Hugin are "only" more build/distribution
complexity. Or am I missing something? And it does not seem to be
such a heavy toll, based on Harry's feedback here. Do the benefits to
Hugin's users justify the extra build/distribution complexity? And are
there things that can be done to reduce that complexity, e.g. moving pv
from bitbucket to the same repo as Hugin?
I can't and won't say anything about the difference in code. I leave
that to the experts.
But indeed: I see it as a supplementary tool. At least for the time being.
It can be added to Hugin as an extra app bundle (apple) or as a tool, or
as an extra exe (on windows). Linux is of course the easiest one.
When looking at Hugin, like yuv described, Hugin is really a combination
of all kind of tools.
Enblend and enfuse need to be dragged in (or multiblend for that
matter). libpano13 is often too old and needs to be built as well. Both
on windows and mac almost everything needs to be downloaded and compiled.
For me integration is not one big monolithic binary doing everything,
but a suite consisting of nicely integrated tools via APIs.
I say it again: pv and hugin are complementary. If, eventually, it turns
out that one may benefit from the other in a more direct way (like code
sharing) that can be dealt with later.
hugin and pv code are very different: hugin uses a set of external
helper programs for many things, and is based on a C++ wrap of an old C
library, libpano. It relies on disk storage for intermediate results. pv
is 'monolithic' and keeps everything in memory (limiting the maximum
size of image/pano it can handle) - and everything is programmed afresh
from scratch in C++11, relying on vspline's multithreaded SIMD code.
Please do have a look at vspline's and pv's source code and convince
yourself that it also is well-structured and well-commented - I find
some of hugin's code base hard to access.
If you look at web technology where all kind of technologies need to be
connected, you see that APIs (or interfaces or "command line" parameters
on a local platform, if you like) are the way forward to connect and
integrate different technologies.
pv and hugin do not need to share any API. pv shows images, and PTOs.
PTO format is not exclusive to hugin, but a panotools standard. that's
all the common ground that's needed. pv even has it's own format for
synoptic views (adding, for example, display of 'cubemaps' which
hugin/panotools does not use) - but I wanted to open it up to the
'panotools universe' to make it easy for users: they already have their
panoramas in PTO, so why force them to use my PTO to ini file
translator? PTO is quite easy to parse. And everyone has images!
This also allows for developments (leaps in developments) in the
separate tools as long as the API or interfaces remains consistent.
Adding an extra option will not break anything.
I agree.
I am not a programmer (weel, an amateur at best), but in my work we
bring a lot to the cloud where you have saas, paas, iaas solutions on a
number of platforms (AWS, Microsoft, Google to name the biggest ones)
which you want to talk to each other (in a safe and secure way). Nobody
nowadays does everything in one "tool".
Why not pv also? It uses the same libraries as already necessary for
Hugin and all the tools, with one "extra": Vc, and Vc needs to be of
high enough version. Which means it can be treated like libpano.
I think pv is actually easy to build - compared to software like hugin.
Vc is a bit tricky: it's also a very good library, but like vigra it's
not so widely used, and does not have too much manpower behind it. It's
author, Matthias Kretz, has been part of formulating the upcoming C++
standard std::simd, and he is currently working on producing a good
reference implementation for this standard, and aims at implementing Vc
2.0 using std::simd. I have an experimental pv version out using
std::simd which can use his std::simd implementation, but the standard
has a few shortcomings, which hamper it's use: it omits SIMD
gather/scatter operations and also Vc's combined load/shuffle and
shuffle/store routines, which are very relevant for working with
interleaved data (like pixel arrays). I have coded around these issues,
but the resulting code is definitely slower than using Vc, which has all
these capabilites - and for smooth animations, every millisecond counts,
so I stick with Vc for now.
And with regard to integration: pv started as panorama viewer. In Hugin
you could add as setting: "Open created panorama in pv", just like we do
with another non-C, non WxWidgets, non-integrated tool being exiftool
acting on our created pano from our original images.
Opening pv from Hugin after creation gives you an immediate view on your
results.
And pv can in that case also give you immediate options to tweak your
created panorama.
Let me stress this point, too: with pv, you can directly look at the
PTO, just like at any other image. You don't have to stitch first. You
have the full set of options a panorama viewer offers to inspect the PTO
in great detail. You can set the output projection as you like, and
still zoom and pan etc. - and if you like what you see you can instantly
have 'hard copies' with the press of a single key.
My notion of 'live stitching' is an attempt to even make stitching
unnecessary - if the images fit well, the brightness is correctly
adjusted, and there is a bit of feathering, oftentimes that's perfectly
good enough - and it's instantly available. 'Live stitching' also has a
few advantages: if you have tele shots mixed in with interesting detail,
you can zoom in to the tele shot's full resolution. With stitched panos,
you only ever get the resolution the pano was stitched to. And if the
images vary in brightness, you still have the full range visible - you
can 'peek' into dark shadows or bright clouds, if your take has them -
in a stitched image, stuff gets clipped unless you stitch to HDR. Check
it out, it's great, I'm sure you'll like it. All this talk is academic,
really - Harry and I have made bundles for macOS and Windows, all you
need to to is download and try it. What are you waiting for?
Kay
--
A list of frequently asked questions is available at:
http://wiki.panotools.org/Hugin_FAQ
---
You received this message because you are subscribed to the Google Groups "hugin and other free panoramic software" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to hugin-ptx+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/hugin-ptx/0167d2e2-31a8-cff0-986e-8077df472963%40yahoo.com.