Programming Homework

P6: Feature Matching

Goal: Learn to implement feature matching of several local feature descriptors

    • Understand two keypoint matching methods: template matching and feature descriptor matching.

    • Implement the OpenCV feature matching method for 5 keypoint descriptors: SIFT, SURF, ORB, BRISK, FREAK.


Program and test images

    • Search the sample code of "Chapter 9 Describing and Matching Interest Points" by yourself.

    • The tests images of the book chapter, Notre-Dame Cathedral, are provided for you to download: image1, image2.

    • Write programs that can read test images and run the two feature matching methods by OpenCV.

    • You have to test your program by your images. You should take photos of an object with different scales and viewpoints.

Web Report

    • Create a web page with descriptions, explanation and pictures for your programs.

    • Requirements of the report page:

      • For each program code, you have to write 4 parts: (1) goal of this code, (2) theory and principle of the code, (3) code segment explanation, and (4) result comparison or analysis.

      • Theory explanation

        • (1) template matching,

        • (2) knn matching,

        • (3) radius matching,

        • (4) cross check,

        • (5) ratio test.

      • Code explanation

        • You have to explain at least two important OpenCV methods: cv::matchTemplate function and cv::BFMatcher class. Note that the cv::BFMatcher class has three match functions: match(), knnMatch() and radiusMatch().

        • You have to explain the most important code segments in your program.

      • Experiments

        • Use the Notre-Dame images and your images to run your programs.

        • Change parameters of algorithm's functions to get different result images.

        • Compare and discuss the result images, and explain why the change of parameters can produce different results.

    • Submit your web address by Google Classroom.