/* * Header (only once at the beginning of each file): */ uint32 identifier; // Is always 0x511477 (SMART). uint8 numCameras; // Is always 3. float[16] matrix0; // Rigid transformation matrix of kinect 0 (derived by our grid registration prodecure). float[16] matrix1; // Rigid transformation matrix of kinect 1 (derived by our grid registration procedure). float[16] matrix2; // Rigid transformation matrix of kinect 2 (initial by our grid registration procedure). // These matrices can be slightly different in different recordings. float[9] params0; // Intrinsic camera parameters of kinect 0 (starting cx, cy, fx, fy, ..., see libfreenect2). float[9] params1; // Intrinsic camera parameters of kinect 1 (starting cx, cy, fx, fy, ..., see libfreenect2). float[9] params2; // Intrinsic camera parameters of kinect 2 (starting cx, cy, fx, fy, ..., see libfreenect2). /* * For every image (follows directly after the header and is repeated until the file ends): * * Note: * When exporting the original recordings to these binary files, every 30th frame of camera 0 was used. In addition, * the frames from camera 1 and camera 2 that was closest in time to that of camera 0 were exported too. At the beginning * of the recording, the first few frames of camera 1 and camera 2 may repeat, since the recordings were started slightly * delayed. * * Consecutive images are taken evenly alternating from camera 0, camera 1 and camera 2. Starting with the first image of * the file, it can be assumed that three images in a row are one image each from camera 0, camera 1 and camera 2 and usually * have a maximum distance of 33ms in time. * * The given depth image has already been undistorted using the registration class in libfreenect2 * (see https://openkinect.github.io/libfreenect2/0.1/classlibfreenect2_1_1Registration.html, apply-method, parameter: * Frame *undistorted). This means that the image can be easily transformed into a 3D point cloud as the getPointXYZRGB * method of the same class does. */ uint8 cameraID; // 0, 1 or 2. float time; // Time in seconds since the first kinect starts recording. uint32 imageWidth; // Always 512 uint32 imageHeight; // Always 424 uint16[217088] depthImage; // Depth image (ordered row wise), where each pixel contains a z-value in mm.