Add FlannIndex abstract interface and implement NanoFlannIndex subclass (#1744)

* Add FlannIndex abstract interface and implement NanoFlannIndex subclass

* Refactored: made NanoFlann a new NN type instead of inheriting FlannIndex. Added tests. Vendoring nanoflann.h directly in the repo. RegistrationVis now use NANOFLANN_INDEX_KDTREE_SINGLE (instead of FLANN_INDEX_KDTREE_SINGLE) flann index for 2d points matching.

* cleanup comments, added FlannIndex doxygen

* Fixing windows tests

* updating flaky test

* Simplified interface, added flann kdtree single approach selectable by parameters.

* RegVis: symmetry of nanoflann for two branches of guess feature matching

* cv::BFMatcher baseline

* Small cmake optimization FLANN_KDTREE_MEM_OPT only defined for FlannIndex

* Refactored where FLANN_KDTREE_MEM_OPT is defined

* fixed file name already exist

* cleanup

* fixup build

---------

Co-authored-by: matlabbe <[email protected]>
This commit is contained in:
Muhammad
2026-08-16 09:51:39 -07:00
committed by GitHub
co-authored by matlabbe
parent df52523a0c
commit f647014f54
28 changed files with 7537 additions and 179 deletions
+22 -2
View File
@@ -11902,7 +11902,7 @@ generate the number of words requested.</string>
<item row="9" column="2">
<widget class="QLabel" name="label_451">
<property name="text">
<string>Factor used when rebuilding the incremental FLANN index. Set 1 to disable.</string>
<string>Rebuild the incremental FLANN index once the ratio (factor-1)/factor of its features has been removed, e.g. half of them for a factor of 2. Rebuilding frees the memory of the removed features and speeds up the searches. Features are mostly removed when memory management is enabled. Set to 1 to never rebuild, which also uses less memory as the features don't have to be referenced one by one.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
@@ -11930,7 +11930,7 @@ Lower the ratio -&gt; higher the precision.</string>
<item row="8" column="2">
<widget class="QLabel" name="label_260">
<property name="text">
<string>When using a FLANN-based nearest neighbor strategy, add/remove points to its index without always rebuilding the index (the index is built only when the dictionary increases of the factor below in size).</string>
<string>When using a FLANN-based nearest neighbor strategy, add/remove points to its index without always rebuilding the index (the index is only rebuilt when too many of its features have been removed, see the factor below).</string>
</property>
<property name="wordWrap">
<bool>true</bool>
@@ -11980,6 +11980,16 @@ Lower the ratio -&gt; higher the precision.</string>
<string>Brute Force GPU</string>
</property>
</item>
<item>
<property name="text">
<string>NanoFLANN KdTree</string>
</property>
</item>
<item>
<property name="text">
<string>FLANN KdTree Single</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
@@ -23538,6 +23548,16 @@ With &lt;0, the length is estimated once for each unique marker, then re-used fo
<string>GMS</string>
</property>
</item>
<item>
<property name="text">
<string>NanoFLANN KdTree</string>
</property>
</item>
<item>
<property name="text">
<string>FLANN KdTree Single</string>
</property>
</item>
</widget>
</item>
<item row="0" column="1">