GSoC Proposal Stereo Vision

=BeagleBone Stereo Vision=

Currently as there is no library available to add stereo camera/computer vision(CV) support to Beaglebone, Therefore this project is for building a efficient library for the Beaglebone and make project on "Distance Measurement" and "Object detection" easier on BeagleBone

Student: Rishabh jain Mentors: Kumar Abhishek (Abhishek_), Zubeen Tolani (ZeekHuge) Code: https://github.com/rishabhj126/BeagleBone-Stereo-vision Wiki:

Status
This project is Just a Proposal yet.

About you
IRC: Rishu Github: Rishabh School: Cluster Innovation Center, University of Delhi Country: India Primary language English and Hindi Typical work hours 8AM-5PM UTC+5:30

About your project
Project name: BeagleBone Stereo Vision Support

Description
BeagleBone of of the efficient and open source micro-controller is capable of many task. One of it maybe the Computer Vision for the efficient and wide range use it includes object detection, Distance measurement and 3D mapping too. The Project focus on utilizing two cameras to rectify and creating disparity map and also creating a 3D mapping ability to help creating and rectifying 3D models

Stereo Vision
Stereo vision is one of the basic human quality that we use everywhere to pick up a pen, to drive a vehicle, for watching 3D movies and a lot more but the thing is how make a machine capture and understand the stereo vision qualities to determine the depth and manipulate things accordingly.

To make machine able to use this ability we have to perform certain tasks such as image processing and computing using the disperity

generally it make code look bulkier and also not optimized for our micro controllers.

OpenCV
OpenCV (Open Source Computer Vision Library: http://opencv.org) is an open-source BSD-licensed library that includes several hundreds of computer vision algorithms.

Main Goals
Main Goal of this project includes creating and compiling libraries for Computer Vision and using them via simple functions and methods calling and creating a integrated calibration tool to calibrate our setup.

List of goals specified for this project:


 * 1) Create a base model of stereo vision
 * 2) Calibrating the setup to give required dimensions
 * 3) Capturing images and create required disparity map
 * 4) solving disparity and analyse data
 * 5) creating a 3D-mapping tool to create a 3D map by rotating camera
 * 6) Add driver support for cameras
 * 7) Object detection
 * 8) Measure distance and speed of objects
 * 9) Create documentation for the project

Timeline
Before first week First Two Weeks: Milestone #1 Week 3-4: Milestone #2 FIRST EVALUATION Week 5-6: Milestone #3 Week 7-8: Milestone #4 SECOND EVALUATION Week 9-10: Milestone #5 Week 11-12: Milestone #6 FINAL EVALUATION
 * create project repository on GitHub
 * prepare BeagleBone for development
 * collect required documentation
 * prepare development environment
 * making a model implementing basic stereo vision
 * integrating basic drivers for cameras to get used with Beaglebone
 * testing some cameras for functionality
 * rectify errors(if any)
 * create a calibrate function for calibrating the camera setup
 * try to Calibrate cameras with different distance between them
 * rectify errors(if any)
 * using OpenCV library and generating 3D disparity map without moving camera
 * creating different data sets for object at different positions and rectify our algorithm
 * create a 3D map by rotating camera 360 degree
 * rectify errors(if any)
 * Adding object detection, distance measurement and speed calculation
 * rectify errors(if any)
 * complete documentation and testing
 * finalize work and remove errors and bugs
 * Buffer

Strech goals
 * Add support for more cameras
 * develop a user interface.

Experience and approach
I have previous experience with Arduino and other embedded HW. I know Linux and and also done work on OpenCV for creating 3D map using Computer CPU. I am able to quickly grasp new concepts.

Contingency
In case of problems I will be consulting OpenCV reference guide, and Linux documentation. I will check for solutions and examples in existing code. If I need help, I will try to find it on BeagleBone IRC and ML. I am able to describe my problems in detail and ask specific questions.

Benefit
This project will bring a big benefit to BeagleBoard community as Other distance measurement devices do not provide accurate data and also have a specific factor that causes error in them for example- ultrasonic sensor shows deviation in different medium and environments and IR sensor shows deviation in different lighting conditions. So, I want to minimize that errors. Using it in projects like Autonomous Drones and flight modules and also Self-driving Cars that can use this to detect object and prevent crashing.

Quote from IRC explaining the project:
 * ── March 15, 2018 ──
 * 19:11 Rishu I want a mentor for my project
 * 19:11 Rishu I have an different idea proposal
 * 19:12 Abhishek_ What's your proposal?
 * 19:14 Rishu I want to add stereo camera library for distance measurement
 * 19:15 Rishu What do you say sir Abhishek_
 * 19:16 Rishu I have already done work with stereo cameras using PC and have done quite a work with arduino
 * 19:25 Rishu Abhishek_: i am really interested in electronics and coding and thought it would be golden chance for me to contribute to such a organisation
 * 19:26 Abhishek_ Which stereo camera are you going to use?
 * 19:27 Rishu I will use two normal cameras and and take input from them by calibrating them on a board
 * 19:31 Rishu Abhishek_: usb cameras can also be used