5️⃣

Midterm Project

The final project of this course is to build collision detection system.

In this midterm project, we will do the feature tracking part (test various detectors/descriptors combination).

This project is divided into 4 parts:

  1. Loading images, setting up data structures, and putting everything into a ring buffer to optimize the memory load.
  1. Integrate several keypoint detectors (Harris, FAST, BRISK, SIFT) and compare them to each other with regard to the number of keypoints and speed.
  1. Descriptor extraction and matching using Brute Force and FLANN approach.
  1. Test various algorithms and different combinations, and compare them with regard to some performance measures.
udacity/SFND_2D_Feature_Tracking
The idea of the camera course is to build a collision detection system - that's the overall goal for the Final Project. As a preparation for this, you will now build the feature tracking part and test various detector / descriptor combinations to see which ones perform best.
https://github.com/udacity/SFND_2D_Feature_Tracking

Part 1: The Data Buffer

Task MP.1

Your first task is to set up the loading procedure for the images, which is currently not optimal. In the student version of the code, we push all images into a vector inside a for-loop and with every new image, the data structure grows. Now imagine you want to process a large image sequence with several thousand images and Lidar point clouds over night - in the current implementation this would push the memory of your computer to its limit and eventually slow down the entire program. So in order to prevent this, we only want to hold a certain number of images in memory so that when a new one arrives, the oldest one is deleted from one end of the vector and the new one is added to the other end. The following figure illustrates the principle.

Part 2: Keypoint Detection

TASK MP.2

Your second task is to focus on keypoint detection. In the student version of the code you will find an existing implementation of the Shi-Tomasi detector. Please implement a selection of alternative detectors, which are HARRIS, FAST, BRISK, ORB, AKAZE, and SIFT. The following figure shows keypoints detected with the SIFT method.

The Harris detector is already familiar to you from a previous exercise and the other methods are available in the OpenCV. Also, please adjust the project code in a way that each detector can be selected by setting the string 'detectorType' to the respective name. Please note that all detectors should be added to the file 'matching2D_student.cpp'. Take a look at the header file 'matching2D.hpp' for details on the call parameters for the functions you need to implement.

Midterm Project: Camera Based 2D Feature Tracking