We're exploring the ability of a marine survey platform we built to provide "baseline" datasets that can be compared with later small high-res collections to evaluate habitat change. In that vein, we've been working to co-register large area survey imagery with handheld camera imagery of a small portion of the survey area from a very different viewing distance (and time, and resolution, and lighting, etc). Both sets have good overlap, and align well independently. The high-res set has >90% overlap.
We tried many techniques and parameters (resampling, color correction, guided image matching, manual tie points, injecting camera position/orientation) with the full overlap region for both sets of images (400 high-res close-in images and 100 images with about 10x lower resolution), and failed to get any matches (valid or invalid) between image sets.
As a last ditch effort we zoomed in on a small area with 10 and 11 images respectively and were able to get a couple dozen valid matches across the two cameras. Interestingly, for the full-res close-in images, guided image matching produced no cross-set matches, while for 50% scale resampled high-res images, guided matching produced more cross-set matches than unguided.
We're trying to understand how/if we can scale up to the full shared region and preserve the ability to generate cross-camera matches, and why we were able to get these matches. One theory is that our "matching budget" is being used up by within-set matches, and if we minimize within-set overlap we may be able to increase our cross-set matches. (within-set = matches for the same camera, and cross-set = matches between low-res long-range camera and high-res close-range camera).
Wondering if anyone, and especially Alexey or other metashape devs has insights into what parameters control our ability to find matches ACROSS camera groups vs within them. On a related note, I'm hoping to develop a couple python scripts that report within-camera-group vs across-camera-group valid and invalid tie points. Not sure if the API fully supports that, but if anyone else is working with similar problems I'd love to start a discussion.