= 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. == Source Code == Latest source code is available on request. A preliminary development version of BPR is available for demonstration. It is a BSD-licensed project. * [[https://github.com/wassfila/BPR|The Github project page]] * 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 the[[http://yaml.org/|YAML]] serialisation for easy verification, upgrade, retro compatibility and reverse engineering if needed. And for heavy data files a [[bpr/MixedFormat|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 [[bpr/VectorsTable|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 [[http://www.cs.waikato.ac.nz/ml/weka/arff.html|.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 [[bpr/VoxelSpace|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. {{attachment:DataFlow.jpg||align="middle"}} . Dataflow processing == Reference Datasets == * LAAS Real and Virtual Datasets : Coming soon * [[http://vision.cs.brown.edu/humaneva/|HumanEva]] : please follow the link for details and registration request from its owner. == Source Code Architecture == {{attachment:ClassesDependenciesBig.jpg}} === BPR Project Dependencies === * [[http://opencv.willowgarage.com/wiki/%20|OpenCV]], * [[http://eigen.tuxfamily.org/index.php?title=Main_Page|EIGEN]] (for projection and geometry processing,SSE accelerated), * [[http://code.google.com/p/yaml-cpp/|YAML-CPP]] (can export its nodes, complementary to the OpenCV parser) === Future dependencies or interesting libraries that could or should be used === * [[BPR_Render|BPR²]], is a sister project for rendering virtual environment with the same configuration as BPR env File * [[http://www.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN%20|FLANN]] (already mapped with OpenCV, but latest release functions needed), * [[http://code.google.com/p/protobuf/|Protocol Buffer]] (for the serialisation and comminication that has to be kept simple and efficient for real time purposes) * [[http://www.python.org/|Phyton]] (for library macros calling and quick generation of simple testing apps) * [[http://www.cmake.org/|Cmake]] (Should be compiled and tested on x86 x64 Win and Linux)