Skip to content
dancek edited this page Aug 10, 2012 · 3 revisions

Theory

30fps .pcd could be saved in a directory and read as kinfu input. This might only work for full-frame captures. In that case, see if "missing points" can be somehow represented in .pcd.

For a recording directory with pcd for each frame, use something like this to separate each bone

#!/bin/sh

for i in `seq $bonecount`
do
  mkdir 'limb'$i
  for f in *.pcd
  do
    # assuming rows of (x,y,z,rgb,bone)
    # TODO: header!
    sed '/^[#A-Z]/d' $f | awk '$5 == '$i' {print $1,$2,$3}' > limb$i/$f
  done
done

Other points to consider if this seems not to work:

  • What kind of coordinates should be used?
  • Is the plaintext .pcd ok, or is the mmapped version needed?

Results

This was done and it works, though the results leave a lot to be hoped for.

  • kinfu_app requires full frames (ie. "missing points" must still be marked)
  • kinfu_app can read .pcd directories
  • the playback is very slow with plaintext .pcd, but ok with binary / binary compressed
  • plaintext .pcd takes ~10MB per frame, binary ~6MB, compressed <2MB (and single-limb compressed is tiny)
  • i.e. in the recording/processing phase disk I/O is a real issue (and disk space for storage)
  • splitting by limb to separate directories takes ~10 seconds per frame
  • 80% of this is conversion from plaintext to binary compressed file format

Clone this wiki locally