I just committed a simple, but I think useful projection. I call it
architectural. Try it with an indoor pano. Top half is miller (which
is almost conformal), bottom is lambert equal area. It presumes the
space around you (in the bottom half of the pano) is less important
than the space above the horizon.
--dmg
Thanks to Bruno and Tom who were took the time to teach me how the projection
is computed.
Now, regarding hugin. Some time ago I modified libpano to report the projections
available to hugin. The idea was that hugin does not need to hard code the
projections, but rather can query them from libpano. This meant that
you just need to recompile, install libpano and the new projections
are available.
Isn't that the case any more? The function that reports all data about
a projection is
query_feature, I think.
--dmg
In principle, that is used, however, there are some problems with the
heuristics used to do the FOV computations and the fast preview. I'd
have to do a deeper check if that could be abstracted out of hugin and
placed into libpano as well.
ciao
Pablo
The equisolid and orthographic, and stereographic projections came from
the work Helmut Dersch was doing with the Motion Panoramas
http://webuser.hs-furtwangen.de/~dersch/ project he was working on.
I did NOT manage to convert the equations without error into a format
for libpano13.
Panotools can create stereographic, but I don't have test images of the
other formats to verify correct implementation.
I have been holding onto this code for almost a year. It seamed like
the right time to commit it. With this resent changes there will be
someone familiar with the code to spot the problem and fix. I hope. :)
Equisolid, orthographic, and stereographic are all kinds of fisheye
projection. Some fisheye lenes optics are better suited using one of
these projections.
Mirror should help creating panos from mirror balls
http://wiki.panotools.org/Spherical_mirror_panorama
--
Jim Watters
Yahoo ID: j1vvy ymsgr:sendIM?j1vvy
jwatters @ photocreations . ca
http://photocreations.ca
hugin now quits with
hugin: queryfeature.c:429: panoProjectionFeaturesQuery: Assertion `0'
failed.
Aborted
I look at queryfeature.c before line 429 is the
panoProjectionFeaturesQuery function and I don't see your new
projections there.
Yuv
around line 400, after
case PANO_FORMAT_FISHEYE_FF:
add:
case PANO_FORMAT_ORTHOGRAPHIC:
case PANO_FORMAT_EQUISOLID:
sorry, I have no SVN access to contribute this fix.
Yuv
and: around line 95, PanoType14 and Panotype15 should read Orthographic
and Equisolid, not Architectural...
Yuv
Thanks, all works fine.
In Hugin (I will committ to SVN soon) all the new projections are
available and render well. The options in the stitcher tab may require
some fine tuning (e.g. the calculation of optimal size) and the fast
preview is quirky with Panini (try dragging). With Orthographic and
Equisolid it has difficulty at the extreme (360°).
Is queryfeature.c documented?
while waiting for hugin to build I looked at it and noticed that some
projections are mentioned in "LensType" while others, particularly the
new ones, are not. And then there are those commented out, whose
numbering is not consistent with "PanoType".
Do I understand correctly that LensType is the input projection and
PanoType the output projection?
And: queryfeature.c mentions the anti-aliasing filters. How difficult
would it be to access them from hugin?
Yuv
atomic commits are a good practice indeed and your advice is very
valuable for future commits.
> Why don't we roll back your changes and introduce one change at a time?
for this specific case I am against a rollback. I've built everything in
Ubuntu and what I have tested works well and I did not find any serious
regression / broken things. I am looking for how to test the mirror
input projection, but I am afraid it will have to wait to next week as I
am away from the mirror itself.
> We could also use a branch for those features that are not totally tested
> (the input projections).
branches are a great tool, and so are tags. IMO tags are the tool to use
to mark points in time when SVN is more robust and stable than
experimental. New features can and should be added with little testing
to trunk to encourage experimentation. A branch would have made sense
for this case during the months in which the code for Jim's recent
commit was piling up. But at some point, branches needs to get back to
trunk. The sooner the better.
my 2 cents
Yuv
>> We could also use a branch for those features that are not totally tested
>> (the input projections).
Yuval> branches are a great tool, and so are tags. IMO tags are the tool to use
Yuval> to mark points in time when SVN is more robust and stable than
Yuval> experimental. New features can and should be added with little testing
Yuval> to trunk to encourage experimentation. A branch would have made sense
Yuval> for this case during the months in which the code for Jim's recent
Yuval> commit was piling up. But at some point, branches needs to get back to
Yuval> trunk. The sooner the better.
Ok, let us leave it as is.
--dmg
For anyone using a source control system, I would strongly
recommend reading this:
http://www.cmcrossroads.com/bradapp/acme/branching/
It has some excellent (and source control system
agnostic) overview of various strategies.
BugBear