GSoC Proposal Stereo Vision

=BeagleBone Stereo Vision=

Goal: Currently as there is no library aptimised 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 Project name: BeagleBone Stereo Vision Support Student: Rishabh jain Possible Mentors: Kumar Abhishek (Abhishek_), Zubeen Tolani (ZeekHuge) Softwere Skill: Python,OpenCV ,PCL and packaging Hardware Skill: Connections and calibration References: OpenCV,PCL Code: https://github.com/rishabhj126/BeagleBone-Stereo-vision Wiki: https://elinux.org/GSoC_Proposal_Stereo_Vision

Status
It is a new Idea.

About Me
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

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

Computer Vision
Computer vision is an interdisciplinary field that deals with how computers can be made for gaining high-level understanding from digital images or videos. From the perspective of engineering, it seeks to automate tasks that the human visual system can do.

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.

PCL
The Point Cloud Library (PCL) is a standalone, large scale, open project for 2D/3D image and point cloud processing.

What I know?
I know the C++ ,Java ,Python, some JavaScript, all connection and done work with stereo camera using computer also done work with embedded system like Raspberry pi and Arduino. I am able to quickly grasp new concepts.

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 script 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.

Approach
I will do the project in the project from scratch by using libraries of OpenCV and PCL and optimize and improve their functions which will help in making embedded system advance and more useful.

Contingency
In case of problems I will be consulting OpenCV and PCL 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. and also to create a 3D mapping of places and also Google Project Tango can be implemented.

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