Body Posture Recognition
What is BPR ? BPR :
is a multi platform, open source project for multi views learning and perception library out of the CameraNet project
- is a layer on top of OpenCV that delivers specific functions for posture learning and recognition
is multi sensors (Camera, Files, NetSource, FPGA) multi channels (Vision, Depth, Motion, Description) environment
- fuses multiviews sensors with weak real time constraints or fuses channels (voxellise...) with hard real time constrains before further processing.
- uses 2D and 3D Descriptors / Machine Learning for classification, regression of body parts using (ANN, random forest...)
- Applied on the human posture recognition and applicable on any rigid or flexible body shape.
- Facilitates recognition and learning using user custom databases.
Latest source code is available on request.
A preliminary development version of BPR is available for demonstration.
It is a BSD-licensed project.
- git clone read only :
git clone git://github.com/wassfila/BPR.git
Environment and Data Structures
All File formats are ment to be reader friendly using theYAML serialisation for easy verification, upgrade, retro compatibility and reverse engineering if needed. And for heavy data files a MixedFormat is used that keeps the advantages of text and binary.
- Environment uses the .env configuration file
- The cameras intrinsic, extrinsic parameters and additional info is found on a .cam file
All videos channels ("Colors", "BKG", "Depth", "DepthColors") are sequences of .png files with a name that looks like Image0001.png
Data is kept on a VectorsTable structure that saves onto a .vt format, for example in Machine Learning, we use a vt for Training data and a vt for Response Labels. It also exports on a .csv format (and maybe soon on an Attribute relitive file format .arff). The .vt has a use case TypeName that could be but not limited to "LabelResp", "Desc2DTrain", "DepthTrain", "Desc3DTrain", "Parts3DResp"...
3D voxellisation data is held by a VoxelSpace structure that saves onto a .vtx format.TypeName can be "Voxels" or "VoxelsParts".
The Descriptors uses the .sign format, it's used by a Detector class to extract features from raw data (image or Voxels to a VectorTable).
The reference points animation of a body are kept on a .yjt files. The "Joints" channel contain a sequence of reference points positions.
- Dataflow processing
- LAAS Real and Virtual Datasets : Coming soon
HumanEva : please follow the link for details and registration request from its owner.
Source Code Architecture
BPR Project Dependencies
EIGEN (for projection and geometry processing,SSE accelerated),
YAML-CPP (can export its nodes, complementary to the OpenCV parser)
Future dependencies or interesting libraries that could or should be used
BPR², is a sister project for rendering virtual environment with the same configuration as BPR env File
FLANN (already mapped with OpenCV, but latest release functions needed),
Protocol Buffer (for the serialisation and comminication that has to be kept simple and efficient for real time purposes)
Phyton (for library macros calling and quick generation of simple testing apps)
Cmake (Should be compiled and tested on x86 x64 Win and Linux)