AIBluefisher / DAGSfM

Distributed and Graph-based Structure from Motion. This project includes the official implementation of our Pattern Recognition 2020 paper: Graph-Based Parallel Large Scale Structure from Motion.
https://aibluefisher.github.io/GraphSfM/
BSD 3-Clause "New" or "Revised" License
402 stars 86 forks source link

after Merging Clusters ,coordinate error? #51

Closed coder12333444 closed 3 years ago

coder12333444 commented 3 years ago

@AIBluefisher sorry to bother you! I use DAGSFM run my data , final result is not correct, but the result of the partition is correct. I did not optimize the camera intrinsics during reconstruction, and I use gps constraint ,so each partition result align gps-coordinate . You can see that Figure 1 is the result of partition 3, the coordinate system and Thecamera intrinsics are correct, but the final merged result is shown in Figure 2. The coordinates seem to be normalized and the final camera intrinsics have optimized. May I need to modify the result parameters of the merged version to ensure that my final result is correct? figure 1 is correct : g1 figure 2 merge final result is error: g2

AIBluefisher commented 3 years ago

hi,the intrinsics are optimized after merging the local sfm results, see line 532-534 in https://github.com/AIBluefisher/DAGSfM/blob/dev/src/controllers/distributed_mapper_controller.cpp. You can set all options to false to keep them being fixed.

coder12333444 commented 3 years ago

@AIBluefisher thanks ,I have solved it, and at the same time I found that your program replaces colmap trakcs with the union find algorithm,awesome job,what do you think can be improved in the follow-up of your DAGSFM??????????????????????????

AIBluefisher commented 3 years ago

Well, there could be plenty of work I would like to do. The track building module is actually not added to the pipeline, but I have been managing to use it to filter/correct wrong feature matches. Besides, the robustness and efficiency of the local incremental SfM could be further improved. Also, the bundle adjustment refinement could be accelerated by developing a distributed algorithm. The distributed module should also be refactored to support more features, like fault tolerance and load balancing.