The budget is: 150$ AUD
The time is: 3 days
The overall objective is to capture images of human faces in 3D using a stereo webcam arrangement. The component parts for this project pretty much all exist within standard open-source libraries, your task is to
1. Use the Chehra Algorithm https://sites.google.com/site/chehrahome/ to detect and track the landmarks.
2. Fin the depth noise in 3D.
3. Then change the scale facto by moving the objectives in different distance to find resolution pixel and disparity, therefore we find the best resolution (positioning of the camera)
4. Find the noise tracking error
The deliverables are:
• Installation/build instructions to install any required libraries (e.g. openCV)
• Source code and CMake files for code written along with build/install instructions
• Demonstration data saved at each significant step of the process (e.g. saved chessboard images from cameras, video streams showing face identification, saved high-res source images for 3D processing, saved point-cloud data, saved mesh data)
• Link and references to code snippets / blog posts used in the code from elsewhere on the web (I fully expect you to copy heavily from the masses of examples and blog posts out there on this topic)
• A detailed document of all steps to accomplish each task.
You will need to:
o Set up two webcams as a stereo pair under Windows on a single USB2 controller (you could use a USB2 hub for this)
o Calibrate the cameras (e.g. using standard chessboard as per OpenCV)
o Observe the environment using (relatively low-res) video
o Identify when a human face is in-frame for both cameras (openCV does this)
o Capture a high-resolution still photo from each of the cameras (likely needing to use modified uvcvideo video driver to achieve this rapidly)
o Calculate disparity map (openCV does this)
o Calculate pointcloud (openCV does this) (provided that your calibration code uses a known physical size of chessboard, this pointcloud should be in real-world units of e.g. millimeters)
o Transfer pointcloud to PCL and create a 3D surface representation of the face
o Display the 3D surface using the webcam image data to provide color for each mesh polygon (i.e. texture mapped from the webcam)
o Save the texture-mapped 3D surface in a suitable 3D mesh format that can be viewed with any suitable open-source viewer