SurfaceMan / surface_match

fast and robust point pair feature
BSD 2-Clause "Simplified" License
38 stars 7 forks source link

Why are my matches skewed? #10

Open Yfanmeng opened 9 months ago

Yfanmeng commented 9 months ago

Hi author, thanks for the excellent code, but I have a problem when testing with my own data, my matches always deviate from my target object. No matter how much I change the parameters, the results are still not improved (default sparsePoseRefinement and densePoseRefinement are set to true),where should I go to solve this kind of problem? Looking forward to your answer!

Here are my parameter settings: detector.trainModel(model, 0.025f); detector.matchScene(scene, pose, score, 0.025f, 0.25f, 0.1f, ppf::MatchParam{1, 10, true, false, 0.5, 0, true, true, 50, 0.3}, &result); 1 In the figure, the white point cloud is the target point cloud and the red point cloud is the result of matching. You can see that the two are off and not perfectly aligned, but if I just set the sparsePoseRefinement to true and the sensePoseRefinement to false, yet I get a good match.

SurfaceMan commented 9 months ago

1.it's better to create model form CAD model(if you can got it) 2.if most components of model are plane, icp registration may mismatch with scene plane which edge based matching may better 3.you can try to cut part of model(remove some plane part)

Yfanmeng commented 9 months ago

1.it's better to create model form CAD model(if you can got it) 2.if most components of model are plane, icp registration may mismatch with scene plane which edge based matching may better 3.you can try to cut part of model(remove some plane part)

Thank you for your reply, I will try to add edge conditions to match.

XiaXingLuo commented 4 months ago

1.it's better to create model form CAD model(if you can got it) 2.if most components of model are plane, icp registration may mismatch with scene plane which edge based matching may better 3.you can try to cut part of model(remove some plane part)

Thank you for your reply, I will try to add edge conditions to match.

Hello! Have you succeed in matching with restricted edge conditions? Could you share it with us. Thank you!

Yfanmeng commented 4 months ago

1.it's better to create model form CAD model(if you can got it) 2.if most components of model are plane, icp registration may mismatch with scene plane which edge based matching may better 3.you can try to cut part of model(remove some plane part)

Thank you for your reply, I will try to add edge conditions to match.

Hello! Have you succeed in matching with restricted edge conditions? Could you share it with us. Thank you!

Hello! Sorry, the later work on edge constraints hasn't been done yet, due to personal reasons, I'm now busy with the work related to point cloud segmentation. But later on, we will continue to work on the problem of edge restriction, you can refer to other matching schemes in Github about matching based on edge conditions.

XiaXingLuo commented 4 months ago

1.it's better to create model form CAD model(if you can got it) 2.if most components of model are plane, icp registration may mismatch with scene plane which edge based matching may better 3.you can try to cut part of model(remove some plane part)

Thank you for your reply, I will try to add edge conditions to match.

Hello! Have you succeed in matching with restricted edge conditions? Could you share it with us. Thank you!

Hello! Sorry, the later work on edge constraints hasn't been done yet, due to personal reasons, I'm now busy with the work related to point cloud segmentation. But later on, we will continue to work on the problem of edge restriction, you can refer to other matching schemes in Github about matching based on edge conditions.

Yeah! I try to find other matching schemes in github about matching based on edge conditions. But all most of them are about 2D match. In my data, edges have common overlaps if project it to plane. More worse, the model is symmetrical, it likes a cube.

XiaXingLuo commented 4 months ago

1.it's better to create model form CAD model(if you can got it) 2.if most components of model are plane, icp registration may mismatch with scene plane which edge based matching may better 3.you can try to cut part of model(remove some plane part)

Hi! Your grate code helps me a lot, the code is highly readable and easy to understand. The problems about model sampling and plane interference you mentioned, I have no ideal to solve, but I find another project using ppf theory has good result, when I use the data having many planes, the shape of model looks like a cube. Maybe the project can give you some inspire, such as model sampling, voting. I hope your project can get improved. The code repository is at https://github.com/hengguan/ppf_matcher.