Hi all,

panomatic and thus cpfind use a RANSAC step for outlier removal. This used to be based on a homography, which works ok for non-wide angle images. It breaks for fisheye images, here a large error tolerance must be choosen, and this results in a rather weak outlier check for wide angle and fisheye images.

Additionally, the homography is more general than what we expect for panoramic images (it can also "mirror" images, for example), and this can result in some false matches slipping through, even when a relatively strict RANSAC threshold is choosen. Unfortunately, this can sometimes connect unrelated images together, and cpclean doesn't help as it won't remove all matches in an image pair.

I have thus implemented a new RANSAC model that can make use of the restrictions we have in panoramas, and also include prior information about lens type, HFOV and distortion etc. Basically, it tries to estimate roll,pitch and yaw for each image pair (using two control points), and checks if the remaining points are consistent, and repeats that a few times.

A new --ransacmode parameter can be used to switch between the ransac modes. By default it uses the homography and switches to the roll,pitch,yaw model if the HFOV is bigger than 65 degrees, the same value that is used to decide whether to remap to stereographic or not. For testing, the HFOV can also be estimated in the RANSAC routine, but this is quite fragile due to panotools problems with estimating HFOV on image pairs.

Some examples:
--ransacmode rpy (new)
http://www.flickr.com/photos/vonengel/5378995090/

--ransacmode auto (default mode, uses homography)
http://www.flickr.com/photos/vonengel/5378994908

Unfortunately, in some cases, the HFOV is not know very well (incomplete EXIF data, bad crop factors entered by the user etc...), so one cannot unconditionally recommend --ransacmode rpy.

It might be possible to work around that problem, but it will require some significant work, and I'm not sure if it worth it.

For the user that means:

1. User has a good estimate of the HFOV (EXIF Data or prior calibrations) -> use cpfind --ransacmode rpy
which makes cpfind virtually bullet proof to really bad mismatches.

2. Bad EXIF Data and user doesn't know about crop factors or the like -> use cpfind --ransacmode auto (the default) or cpfind --ransacmode homography, and accept some outliers.

I hesitate to default to --ransacmode rpy, as this will probably lead to quite some breakage for novice users, who enter bad crop factors.

I find 2. a bit unsatisfying as it means that we will get suboptimal results for many inexperience users (and many experienced ones too, who don't know about all the cpfind internals...).

Whats your opinion about that?

- Should we add more default presets to the control point detector preferences?

- Try to automatically add --ransacmode rpy, if the hugin could successfully read HFOV from the EXIF data?

- Try to robustly add HFOV to the RANSAC model? Maybe just trying a range of initial HFOVs would be sufficient... However, I'm not sure if I can do that with my limited time budget.

Another way to reduce the problem would be to use a camera-crop factor database, such as the one from Autopano PRO:
http://www.autopano.net/wiki-en/Cameras.txt

ciao
 Pablo

--
You received this message because you are subscribed to the Google Groups "Hugin and 
other free panoramic software" group.
A list of frequently asked questions is available at: 
http://wiki.panotools.org/Hugin_FAQ
To post to this group, send email to hugin-ptx@googlegroups.com
To unsubscribe from this group, send email to 
hugin-ptx+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/hugin-ptx

Reply via email to