andyzeng / 3dmatch-toolbox

3DMatch - a 3D ConvNet-based local geometric descriptor for aligning 3D meshes and point clouds.
http://3dmatch.cs.princeton.edu/
BSD 2-Clause "Simplified" License
843 stars 188 forks source link

about the overlapping computation #16

Closed zjhthu closed 6 years ago

zjhthu commented 6 years ago

I find there are inconsistencies in overlap computation of ground truth and prediction. In getGtInfoLog.m, the nearst distance is computed through [nnIdx,nnSqrDist] = multiQueryKNNSearchImpl(fragment1PointCloud,fragment2Points',1);. While in register2Fragments.m, the nearst disantce of pc1 in pc2 is computed through [nnIdx,sqrDists] = multiQueryKNNSearchImpl(pointCloud(fragment2Points'),fragment1Points',1);. The computation in register2Fragments.m might be the correct usage of multiQueryKNNSearchImpl.

Besides, the distance thresholds in these two files are also different, which are 0.006*5=0.03 and 0.05. These issuses might have a slight impact on the evaluation results.

andyzeng commented 6 years ago

You’re correct in pointing out the differences -- however, they do not need to be consistent. The distance threshold and use of KNN compute in register2Fragments.m are all just heuristics as part of the algorithm for detecting loop closures, which operates on top of 3DMatch. You are free to change these heuristics to whatever works better for your own descriptor or search algorithm, although we kept them the same throughout our comparisons in experiments. For evaluation purposes on our benchmark, the code in getGtInfoLog.m for computing pseudo ground truth should not be modified.

zjhthu commented 6 years ago

I see, thanks for your reply.