OpenDroneMap / OpenDroneMap/ODM

matcher_type=bruteforce does not appear to disable GPS-based pair filtering in some cases

Open
#1,908 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Python
Stars
6.5k
Forks
1.3k
Avg merge
5d 6h
Merged PRs (30d)
4

Description

How did you install ODM?

Docker, version 24.0.2
ODM version fixed to 3.5.6


What is the problem?

When using matcher_type=bruteforce, I expected ODM to match all image pairs regardless of GPS distance. However, when GPS information is present in the EXIF of the images (27 images), the number of matched pairs is significantly reduced (198 pairs ) compared to a run with no GPS data at all (351 pairs), even though image overlap remains ~80%.

This suggests that GPS-based filtering may still be active under matcher_type=bruteforce, contrary to what the name implies.


What should be the expected behavior?

All image pairs should be matched regardless of GPS information when matcher_type=bruteforce is set.


How can we reproduce this?

I can't share any data as it is proprietary


Specific Parameters Used Outside of Default
--3d-tiles \
--skip-orthophoto \
--matcher-type "bruteforce" \
--matcher-neighbors 0 \
--crop 0 \
--min-num-features 25000 \
--feature-quality "high" \
--pc-las \
--pc-ept \
--pc-filter 0 \
--pc-quality "high" \
--pc-skip-geometric

Use Case Specificity

This might be related to my slightly unusual use case:

  • I’m not using ODM with standard low-altitude drone imagery.
  • My dataset consists of high-resolution images taken at higher altitudes (Not the typical drone altitude), with GPS positions that are farther apart, yet with ~80% image overlap.
  • This may lead the internal matching heuristics to wrongly discard many valid pairs based on GPS distance.

Questions
  • Is there any known GPS-based filtering that remains active even when matcher_type=bruteforce?
  • Is there a parameter I may have missed to fully disable GPS-based filtering?
  • If this is expected behaviour, could it be documented more explicitly?

Thank you for the great work on ODM!
Happy to provide the logs if it helps.

Best,
Guillaume Lamine

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the ODM matching pipeline handling --matcher-type bruteforce, --matcher-neighbors 0, and image GPS metadata. Compare the pair-selection behavior for the reported GPS and no-GPS cases, using the supplied parameters where possible. Done means confirming whether GPS filtering remains active and adding a regression test or documenting the expected behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python
Domain
cli, computer-vision
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.