-
Notifications
You must be signed in to change notification settings - Fork 151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Difference between experimental and backport APIs #36
Comments
Hi, I wrote code for tracking and mapping using your experimental branch APIs and the code works perfectly for the synthetic data which you read using loadAhanda. However, when I try to run it on my video I get black screens. I obtain the camera matrix for my camera with OpenCVs camera calibration. Since I did not have camera poses for my video, I pre-compute them for the first 20 frames using Bundle Adjustment implemented with Google's Ceres Solver (point cloud visualization looks good so the camera pose estimates and camera matrix are most likely correct). This gives me a 3x3 rotation matrix R and and 3x1 translation matrix T such that the mapping from the world coordinate x to camera coordinate x_cam is given by: Are you making any other assumptions about the input? My videos are not of entire rooms but of objects placed on a table and the camera is about 1-2 feet from the object. For this reason I set the 1/near = 0.03 and 1/far = 0.015 but the output inverse depthmap only contains 0.015. I have tried smaller values for 1/far but the output is always a matrix of 1/far values. I also saw that you are rescaling the image pixel values to lie between 0+1/255 and 1+1/255. I did not understand this by I tried it nevertheless. However I still get black screens. I can share my main .cpp file with you if you can take a look. It would be great if you can help me debug. Thanks, |
Hi Tanmay, Hi Anuranbaka, BR |
Hi Xiaoshui, My best hypothesis so far is that the synthetic image sequence on which the code works fine is marked by significant motion of camera between consecutive frames. On our videos however due to high frame rate 10-20 consecutive frames are probably not that different. So to DTAM it probably looks like there is just 1 frame and it fails to produce a depthmap. All successive failures/ black screens are probably because this initial depthmap wasn't created. Over this week I am going to try and verify this hypothesis. I will post updates here and I request you to do the same so that we can all benefit from it. If this indeed turns out to be the case then one possible solution would be to compute camera poses for 50-100 frames using SfM and use all of those to initialize DTAM instead of using just first 10 or 20. By the way what implementation of PTAM are you using? Does it work straight out of the box or did you have to tweak the code to get it to work? To answer your first question - The images are most likely synthetically generated using OpenGL or something similar. The camera parameters were therefore specified and images are rendered using those camera parameters rather than the other way round. -Tanmay |
Hi Tanmay,
Thanks for your information and wish us success. BR |
I noticed that in convertAhandaPovRayToStandard function the rotation matrix is read as: While R.row(0) and R.row(2) look correct I don't understand why R.row(1) is not Mat(R.row(0).cross(R.row(2))).t()? It also seems wrong because R.row(1) and R.row(2) may not be orthogonal the way they are being set. |
Hi Tanmay and Paul, Thanks |
I actually abandoned OpenDTAM and instead am now using LSD-SLAM to get the Thanks, On Thu, Sep 10, 2015 at 5:53 PM, Xiaoshui Huang [email protected]
|
Hi all, been busy pushing for the ICRA deadline, so been a bit out of it. I'll try to briefly answer these questions. |
As a side note, I think in general the best way for people to use OpenDTAM is probably to use the weighted Huber denoising and possibly cost volume projection parts --which are really the core of the mapping part of DTAM and highly optimized in this code-- with someone else's tracking. DTAM tracking is robust, but inaccurate and hard to start. |
Hi Tanmay @BigRedT , Thanks, |
Hi Johnny, @johnny871227 Unfortunately the paper (of which dense depth estimation was a part) wasn't accepted in Siggraph and I started working on a different project in the meantime. Shoot me an email with details of what exactly you want to know and I might be able to provide you with more information. Appologies for the late reply. |
Hi Tanmay, @BigRedT . I sent you an email to your gmail account. In case you have not received it, I'll just copy it here. Thanks, |
Hi @johnny871227, I replied to you. But since its a very general question I will also answer here for the benefit of others who might be interested and to facilitate further discussion on this. I have worked with my own implementation and not the one provided here. It is a variant of the DTAM approach with some simplifications. My observations are the following:
My particular implementation also had other parameters which controlled the granularity and range of depth discretization, coupling weight, and spatially varying weights for cost volume term and smoothness term. This required a significant amount of parameter tuning. I hope this was useful! |
Hi @XiaoshuiHuang, @johnny871227, @anuranbaka , I have uploaded my paper on arxiv in case anybody is interested in the modifications that I made to DTAM: A video with results can be found here: Feedback is welcome! -Tanmay |
Hi @BigRedT , thanks for the paper! Cheers, |
Hi,
Thanks for the contribution!
It would be great if you (or anybody in the community) could provide a summary of the major differences between the APIs in the 2 branches. For instance some of the commits in the experimental branch have been marked as unstable and while backport looks much cleaner, no one's touched it for an year. Also do you have a version that does both tracking and mapping? Since testprog does not use Tracking its hard to know the status on the Tracking part.
I also have a blog post on DTAM which might be of interest to this community:
http://ahumaninmachinesworld.blogspot.com/2015/07/dtam-dense-tracking-and-mapping.html
Thanks,
Tanmay
The text was updated successfully, but these errors were encountered: