On Monday, August 8, 2022 at 11:32:07 AM UTC-4 Florian Königstein wrote:

> Hi John,
>
>  Optimization ran fast for me,
>

What is "fast" and which hugin did you use?

It runs "fast"  (17 to 36 seconds) using any build of pano13 with sparse 
lev-mar.  But I still want it to be faster and I want much bigger examples 
(even though I don't currently have any) to also be fast.

With one exception, it runs "slow" (85 to 212 seconds) in any build without 
sparse lev-mar.  That is exactly as I'd expect and I'm not much interested 
in those.

The exception I asked about was:
2021.0.0.52df0f76c700 built by Thomas 
I'm pretty sure that does not have sparse lev-mar.  It optimizes in 21 
seconds producing garbage results (large average, 158 worst case).  The 
worst CP is not a poorly chosen CP.  All the other versions have worst CP 
30 to 38.
My question was why that build is so fast and bad.

The fact that the average can be below 3 and the worst 30 means I want to 
be able to do that well regularly.  So I have the second issue of why 
fastPTO does slightly worse.  It should simply be faster, not a tradeoff of 
much faster for slightly worse.  But that is too complicated and detailed 
for me to want to ask here.  I'll need to figure it out myself.  But why 
the official hugin build is so much faster and worse than it should be 
seemed like somethings others might weigh in on.

First I assume:
> ** You took the images in a "standard way", i.e. by rotating the camera 
> around a tripod or panoramic head.
>

No.  I did not set up my tripod for that one.  I hand held as carefully as 
I could and came pretty close.  So I certainly needed to optimize the six 
basic parameters of camera position as well as one lens parameter.
 

> ** You just want so see how the optimizer works when you select nearly all 
> variables to be optimized.
>

 I avoided opening the FOV can of worms.  The correct FOV is known and 
using incorrect FOV as a coverup for other issues is one of my frequent 
tools, but not a valid tool either for this panorama or for this 
performance test.

Some other parameters are in there mainly for "maybe they help" in addition 
to performance testing purposes.

The problem is that you select both rotation and translation to be 
> optimized. Normally, you should only optimize for yaw, pitch and roll, but 
> not for trannslations - if you rotated the cammera but didn't perform 
> bigger translations.
> Instead if you kept the orientation of the camera the same and translated 
> it for the different photos, then you should optimize for translations, but 
> not for yaw, pitch and roll.
>

I certainly needed all six of those.  Otherwise, the panorama is garbage.  
I did my best to hand hold the camera varying only Yaw and Pitch, not Roll, 
TrX, TrY, and TrZ.  But I didn't do that well enough.  Tr value are tiny 
compared to the physical distance to nearest CP but they still matter.

I haven't yet taken any mural shots, so varying translation without also 
Yaw is not in any of my examples. 

>
> The reason is the following:
> Suppose you have a FOV that is not big (like you have). Imagine first you 
> rotate the camera a bit horizontally. Then you rotate it back to the 
> original position and trannslate it a bit horizontally. If the amout of 
> rotation and translation have an appropriate ratio, then the control points 
> will move in a similar way (not much difference) in the image both by 
> rotation and by translation. So the optimizer cannot decide whether you 
> rotated or translated the camera.
>

There is enough  difference.  If the real world location of the CPs in an 
image are relatively co planar (with each other) then optimization should 
be able to distinguish rotation from translation.

I have refined my ideas (but not yet written code) for handling the case 
that the real world CPs are not actually co planar.  I think I will then do 
vastly better than 3 average and 30 worst case in this example.  But before 
coding that, I want a somewhat better understanding, and maybe do a cleaner 
re-coding, of what is already there.

In some cases you can determine both rotation and translation of the 
> camera, but these cases are usually not relevant for panorama photography: 
> Assume for simplicity you have an ideal (pinhole) camera (no lens 
> distortion). Assume you have 5 (or better 8) points in 3D space that will 
> get control points in the photos. You take two photos of these points by 
> both rotating and translating the camera between these photos. Then there 
> are mathematical algorithms with that you can determine both the relative 
> rotation and the relative translation of the camera. But there are at least 
> two cases in that the algorithms fail or yield bad results (big errors):
> 1. There is no or little translation in the camera position between the 
> two photos
>

That is the area in which my current ideas are least solid:  Hugin is 
already good for where all the cameras have little of no translation.  The 
tricky  case (but I won't know untill I code an test this) is a CP that is 
only seen by cameras that have little translation relative to each other, 
but significant translation relative to the chosen origin for the panorama.

2. All the points in 3D space are on a plane (e.g. on the wall of a house 
> or on the flat ground plane)
>

I'm not understanding your point.  First, that case doesn't need to be 
fixed.  Hugin does it well enough already.  I'm trying to create only an 
alternative for when that isn't true.  But, unlike the case of all cameras 
being in the same place, the new method would also work fine for planar 
CPs.  I can't see any reason that ought to be a problem.

Maybe you are thinking about the case that the chosen origin for the 
panorama is not among  the camera locations (neither matches a single 
camera as one normally would) nor has cameras generally "around" it.  That 
is a very hard (and pointless) panorama anyway, and maybe the planar CPs 
make it harder.


But since you are commenting, I'll ask your opinion on a related part of 
where I'm going with all this (since you seem to understand the case of 
very many images):
I think I can get a big performance boost by using the tendency to have 
multiple images per lens.  So my question is whether, in the useful cases 
of very many images, there are several images per lens.

I mean a "lens" in the sense of a set of parameters, so at the optimization 
level, a group of images within which every lens parameter is either linked 
to be equal or constant and happens to be equal.

My code idea would speed things up significantly when one set of lens 
parameters (whether fixed or subject to optimization) applies to multiple 
images.  It would only very slightly slow down optimization if every image 
has its own lens parameters.

Since I bought by 105mm non-zoom lens.  It has been used for almost all my 
panoramas.  If I were an actually competent hugin user, I would separately 
determine its parameters and use them for all such panoramas.  So far I 
just let each panorama solve whatever lens parameter(s) seem to help, but 
subject to one lens for all images.

-- 
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/a20cdf76-0859-4fa9-9669-3d15f4bf9155n%40googlegroups.com.

Reply via email to