Skip to content

Latest commit

 

History

History
60 lines (43 loc) · 2.52 KB

1-get-an-overview.md

File metadata and controls

60 lines (43 loc) · 2.52 KB

Step 1: Get an overview

We will start by presenting an overview of the method and the contents of this project.

Algorithm overview

We will use CornerDetector to compute and return a list of detected keypoints. The main steps in the detection algorithm are:

  • Compute the image gradients using derivative of Gaussian filters.
  • Use the image gradients to compute the images A, B, C from the lectures:
    • Element-wise products of the gradients.
    • Apply windowing by convolving these with a (bigger) Gaussian.
  • Use A, B and C to compute a corner metric for the entire image:
    • λmin, Harris and Harmonic Mean.
  • Threshold the corner metric image and find local maxima:
    • Morphological operations.
    • Logical operations.

We will then try to find a circle hidden in the list of detected corner keypoints. To achieve this, we will use CircleEstimator to apply RANSAC, and extract the circle estimate based on the largest set of inliers.

Introduction to the project source files

We have chosen to distribute the code on the following files:

  • main.cpp

    Starts the lab, catches any exceptions and prints their error message on the console.

  • lab_corners.h, lab_corners.cpp

    Implements the main loop:

    • Get next frame
    • Detect corners
    • Estimate circle from corner points
    • Display results
  • corner_detector.h, corner_detector.cpp

    Implements a class that can perform corner detection on frames. You will be responsible for writing most of the code in corner_detection.cpp.

  • filters.h, filters.cpp

    Contains functions that create 1D Gaussian and 1D derivated Gaussian kernels. You will implement the derivated Gaussian kernel function.

  • circle_estimator.h, circle_estimator.cpp

    Implements a class that estimates circles from points along the circle circumference. You will be responsible for finishing the RANSAC loop.

  • circle.h, circle.cpp

    Implements a basic circle and functions for creating circles and measuring distances between circles and points.

runLabCorners()

First, take a look at the runLabCorners() function in lab_corners.cpp. Try to understand the steps taken here, and please ask one of the instructors if you are uncertain.

Then build and run the project. You should be able to see a video stream from the camera, but the program doesn't do anything interesting - yet!

Please continue to the next step to get started with the interesting stuff!