Closed IlyaKrotov closed 4 years ago
I did it in docker btw
There are only 503 frames in the video, and that's the message it shows when the reader ran out of frames.
Yes, but why it failed? I didn't explicitly put number of frames anywhere
So what actually happens is that ImageFileReader::loadIntoCache
fails to read the 505th frame (because there are only 504 frames in the Teddy sequence) and prints a message saying that there's been an error whilst trying to do the read. However, the program itself continues without a problem - it's basically just a warning message that has the word "error" in it. Arguably a different message would worry people less.
And as to not having put the number of frames anywhere, it just keeps trying to read frames until it runs out of frames to read.
Thank you!
Could you also explain two last numbers in calib.txt?
So what actually happens is that
ImageFileReader::loadIntoCache
fails to read the 505th frame (because there are only 504 frames in the Teddy sequence) and prints a message saying that there's been an error whilst trying to do the read. However, the program itself continues without a problem - it's basically just a warning message that has the word "error" in it. Arguably a different message would worry people less.
That is a problem in case of cli version, because you are unable to save a result.
If I remember right, the last two numbers in calib.txt
are the parameters for ITMDisparityCalib
, which specify how to compute a depth image from either a disparity image or another depth image.
There are two types of transformation used, called KINECT
and AFFINE
. The comments in ITMDisparityCalib.h
explain the difference between them. If you take a look at ITMCalibIO::readDisparityCalib
, you'll see that by default (and notably for the Teddy sequence), the transformation type is KINECT
. As it says in the above-mentioned comment, the two values c_1
and c_2
are then used to transform disparity values into depth values using the formula 8c_2f_x / (c_1 - d)
.
In the code, the actual transformation is performed in the view builder - see ITMViewBuilder_Shared.h
, and in particular the function convertDisparityToDepth
for the KINECT
case (for AFFINE
, the corresponding function is convertDepthAffineToFloat
). If you look at the places that call those functions, you'll get a better idea of how everything ties together.
Hope that helps!
depth image from either a disparity image or another depth image.
i don't understand the principle of "compute a depth image from either a disparity image or another depth image", do you have any materials to explain the two parameters?
Hi @IlyaKrotov @victorprad, Can you please share the Dockerfile for InfiniTAM ?
Hello! Thank you for your awesome lib. I've compiled it without any problems, but I wasn't able to run it on my sequences. Then I tried your Teddy and it failed with the same problem.
frame 501: time 4.27, avg 4.54 frame 502: time 3.64, avg 4.54 frame 503: time 3.60, avg 4.54 error reading file 'Teddy/Frames/0504.ppm' error reading file 'Teddy/Frames/0504.pgm'
I tried to fix it, but it wasn't work. Do you have any ideas about it?