Ask Your Question

Stitching: how to get camera translation into bundle adjustment?

asked 2013-05-01 14:53:11 -0600

ricor gravatar image

When examining the stiching module it appears to only be setup for a rotating camera. In theory can it be modified easily for a rotating and translating camera?

I think it is in the bundle adjustment that this would need to be done because in the Brown and Lowe paper which describes the stitching module it states:

The new image is initialised with the same rotation and focal length as the image to which it best matches. Then the parameters are updated using Levenberg-Marquardt

Is this where effort should be made to make the camera rotate and translate (this is all new to me)?

Within the bundle adjustment can I just initialise the next image with the last images rotation combined with a best estimate on translation? Somehow that doesn't seem right to me as I've read about cost functions etc. Do I need to do something actually inside the bundle adjustment code?

I'm quite lost here and googling hasn't turned anything up. I'm very new to this though so perhaps I'm searching with the wrong terminology. If anybody has any suggestions at all even it is just some term to try googling it would really help.


edit retag flag offensive close merge delete


Have you tried using the stitching module for the setup? I've used it successfully for a setup with 2 cameras 5 cm apart (not a single rotating camera) .

RonM gravatar imageRonM ( 2014-09-01 07:56:32 -0600 )edit

1 answer

Sort by ยป oldest newest most voted

answered 2014-07-30 07:26:23 -0600

Duffycola gravatar image

The Stitcher class was originally designed for a camera that rotates around itself. Therefore no translation is supported.

In summary, there are a number of stages in the pipeline affected by this.

1) Initially, homographies are estimated between pairs of matching images. The intrinsic camera parameters are estimated (focal length, aspect ratio, image center), then the extrinsic parameters (rotation, translation). Here translation is assumed to be 0.

2) During bundle adjustment, the translation is ignored and not updated. I have skipped this stage for now, but it is quite an important one. You could try out a different bundle adjustment library other than OpenCV, such as SBA. There exists an OpenCV wrapper for SBA. See also this thread. I have not tried any of this, but please let me know, if you succeed.

3) The warping stage supports rotation only as well. I've noticed that the PlaneWarper has functions, which accept camera translation as well, but I am not sure whether this is actually working.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2013-05-01 14:53:11 -0600

Seen: 5,349 times

Last updated: Jul 30 '14