alejocb / dpptam

DPPTAM: Dense Piecewise Planar Tracking and Mapping from a Monocular Sequence
GNU General Public License v3.0
219 stars 82 forks source link

Questions about the code #4

Open amiltonwong opened 8 years ago

amiltonwong commented 8 years ago

Dear @alejocb,

I am reading the code to further understand dpptam, so there may be some questions thrown by me in this period, hope you don't mind. :)

In SemidenseTracking.h, what's the meaning/usage for the following member variables:

int *cont_frames; //? Is that the count number of frames? int last_cont_frames; //??

Thanks in advance~ Milton

alejocb commented 8 years ago

Dear Milton,

The purpose of these variables is to realize when a new frame is ready for tracking. 'last_cont_frames' is the counter of the last frame tracked and 'cont_frames' is the counter of the last frame, either if it has already been tracked or not.

I am working on reorganizing the code and naming all the variables with 'understandable' names, so it should be easier to read in a near future...

Best,

Alejo.

amiltonwong commented 8 years ago

Thanks Alejo :)

amiltonwong commented 8 years ago

Hi, @alejocb ,

From line 314 to 318 in SemiDenseTracking.cpp, https://github.com/alejocb/dpptam/blob/master/src/SemiDenseTracking.cpp#L314

Does it mean initialization of tracking will be performed in case do_initialization_tracking > 0.5? When will the value of "do_initialization_tracking" be changed by the whole process?

Thanks in advance~ Milton

alejocb commented 8 years ago

Hi Milton,

Yes, initialization of tracking (the jacobians have to be recalculated) is performed when do_initialization_tracking > 0.5.

do_initialization_tracking is set to 1 in the semidense mapping thread, when the depth of the new keyframe is calculated and then it is ready to be tracked.

Regards,

Alejo.

amiltonwong commented 8 years ago

Thanks Alejo :)

amiltonwong commented 8 years ago

Hi, @alejocb ,

I have several questions regarding to SemidenseTracking(.cpp/.h):

Q1: In data.yml, two variables are set by default, such as: local_maps_number:5 local_maps_close_number: 1 And they are also used in SemidenseTracking.cpp The variable "local_maps_number" means the tracker uses 5 local maps, but what are the meaning/usage for local_maps_close_number?

Q2: In SemidenseTracking.h, we could see : SemidenseTracking is extended from base class imagnes, but I couln't find it (implementation and declarison of class imagnes). Where's it (or this is a certain usage in C++? Please forgive I'm not an expert in C++ )?

Q3: In line 2133, https://github.com/alejocb/dpptam/blob/master/src/SemiDenseTracking.cpp#L2133 what's the meaning/usage for "check_repatead_points" variable?

Q4: https://github.com/alejocb/dpptam/blob/master/include/dpptam/SemiDenseTracking.h#L134 https://github.com/alejocb/dpptam/blob/master/include/dpptam/SemiDenseTracking.h#L88 For variable "points_map", does it mean points in the map? And the map is local map? For variable "points_map_inImage", What's the meaning of inImage, does it mean only those points related to current image? (I know that points_map is assigned to points_map_inImage in tracking initialization process)

Q5: https://github.com/alejocb/dpptam/blob/master/src/SemiDenseTracking.cpp#L393 cv::Mat points3D_cam_to_print; // Does it refer to the 3D points with respect to camera coordinate? And "cam_to_print", what does it mean?

Q6: https://github.com/alejocb/dpptam/blob/master/src/SemiDenseTracking.cpp#L419 what does "points_map[2]" refer to? Does it mean the pyramid_level == 2, which is the smallest resolution in the pyramid.

Thanks in advance~ Milton

alejocb commented 8 years ago

Hi @amiltonwong , Sorry for the late response...

Q1

local_maps_number:5 local_maps_close_number: 1

local_maps_number are the potential past keyframes to be used in tracking. local_maps_close_number are the number of past keyframes used in tracking. They are selected from 'local_maps_number'.

Q2

Class 'imagenes' is defined in superpixel.h

Q3

check_repatead_points is to be sure that the system does not track the same 3D point twice. When I fuse two keyframes I make sure that the resulting 3D points are all different.

Q4

'points_map' are the 3D points tracked 'points_map_inImage' are the 3D points tracked that lie inside of the current image.

Q5

Q6

Best regards,

Alejo.

alejocb commented 8 years ago

Q5

points3D_cam_to_print are just the 3D points that are going to be printed in the current frame for visualization.

Q6

Yes it means pyramid_level == 2, I just changed it in the code!

Best regards,

Alejo.

amiltonwong commented 8 years ago

@alejocb, thank you so much for answering such many questions. THX :)

ayumizll commented 8 years ago

Hi Alejo, Thank you for sharing your codes. Dpptam is a great job and I'm also reading it for feather learn. :) Look forward to your new release of the regrouped codes. Lili