yes.
> - cpfind only ever matches image pairs. Other CPGs, like autopano-sift-
> c, seem to take the feature points of all images together and run one
> matching step on the lot. If I understand the process correctly, the
> pairwise approach is more likely to join images which aren't so well-
> matched, but with lots of images and without constraints like linear
> matching the pairwise approach is very time-consuming. Is there a
> chance that the 'match all feature points in one go' approach could be
> implemented in cpfind?
I have implemented a simple version of that, but its not yet commited,
as the results are worse than that of the pairwise matching. I'll look
into commiting that change.
> - other CPGs have a 'maxmatches' feature that limits the number of CPs
> returned. In cpfind the only way to influence the number of CPs
> gnerated seems to be via the sieve parameters. Wouldn't it be possible
> to employ a mechanism similar to cpclean to the end result to kick out
> the 'worst' few points if there are more than the desired number?
Yes, that might be possible, but one the simple approach will loose the
well distributed characteristic. Maybe some more advanced heuristrics
might be found for keeping that, but I haven't thought about that yet.
> - the documentation is thin when it comes to explaining the sieving
> mechanism. I think 'buckets' and 'sieves' are technical terms straight
> out of the matching algorithms, but aren't so easy to understand for
> someone who merely wants to use cpfind. I'd like to know more about
> the 'buckets' involved. I think what happens is that the image is
> subdivided into sections and each section is treated so that it
> doesn't get too many CPs, or has at least some even if they aren't so
> good, resulting in a more even spread than if the whole image was
> looked at.
Its something similar to that. There are two thinning filters:
Sieve 1:
filters the interest points (based on location and interest point
strength). This minimizes the computation expense in the descriptor
computation and matching steps. Uses sieve1width by sieve1height
buckets/sections over the whole image. Only sieve1size interest points
are kept in each bucket.
Sieve 2:
thins the successfully matched points. The rectangular region covered by
the matches is divided into sieve2width and sieve2height sections. Note
that not the full image area is used here, but the area where matches
have been found.
Each bucket gets --sieve2size matches (if enough are available)
> If that is so, wouldn't it be a good idea to look at the
> aspect ratio of the images to calculate appropriate bucket numbers?
> This may seem of little use for the standard case of the images being
> 3:2 or 2:3, but I often have images of greatly varying aspect ratio
> and a mechanism where I can just say I want, say, roughly 24 buckets
> spread so that they all cover as-near-as-possible square areas would
> be helpful. This question is particularly relevant for use of cpfind
> with woa, where I intend to make cpfind the default CPG, now that the
> --fullscale issue is settled.
That might be a nice feature, so one specify the number of buckets for
the larger dimension and computing the number of buckets for the smaller
dimension based on the aspect ratio.
> - in woa, I use pre-warped images and feed them to the CPG. The iamge
> pairs cpfind gets to see are therefore quite similar geometrically.
> What ransac mode should I use? So far I have set hfov to 30 and
> projection to rectilinear for all my prewarped images - after all I
> have already warped them to be geometrically compatible and I dont
> want them to be reprojected in any way - so the mode chosen would be
> 'hom'. Would I maybe be better off with 'rpy'?
Both should work. If you just want to allow shift and rotations 'rpy',
together with a small fov (<10) would be best. the homography will also
allow shearing and mirroring, which is probably not needed for your case.
cpfind (and SIFT and related algorithms in general) are however not
ideal for the refinement of matching points, as it expects precisely
repeatable interest point detection. A direct, intensity based matching
is preferrable for that case, for example Least square matching.
http://www.photogrammetry.ethz.ch/general/persons/AG_pub/ALSM_AWGruen.pdf
This typically yields points with an accuracy of 1/10th of a pixel.
The drawback is that is requires good initial approximations (~2 pixel
accurate) of the relative orientation of the images. It would be a good
refinement technique for inclusion into cpfind and the hugin control
points tab.
ciao
Pablo