Skip to content

GSoC 2013 Ankit Agrawal Implementation of STAR and Binary Feature Detectors and Descriptors

AnkitAgrawal edited this page Jun 23, 2013 · 33 revisions

Contact and Username info:

Name : Ankit Agrawal
Email : aaaagrawal@iitb.ac.in
github : ankit-maverick
IRC nick : AnkitAgrawal
Skype : aaaagrawal
Blog : http://skimager.blogspot.com
University : Indian Institute of Technology(IIT), Bombay
Major : Electrical Engineering with Masters in Communication and Signal Processing
Current Year : Third year
Expected Graduation date : June 2015
Degree : Dual Degree(B.Tech + Masters in 5 yrs)

Proposal Title :

scikit-image : Implementation of STAR and Binary Feature Detectors and Descriptors

Personal Bio :

I am Ankit Agrawal, a third year student enrolled in a 5 year Dual Degree Program(B.Tech and Masters) in Electrical Engineering at IIT Bombay. My Masters specialization is in Communication and Signal Processing and I intend to pursue my Master's project in Computer Vision during the next two years at my university. I want to work on the idea of 'Implementation of STAR and Binary Feature Detectors and Descriptors'. The relevant coursework that I have done in the past related to this project are Linear Algebra, Probability and Stochastic Processes, Digital Signal Processing, Image Processing, Machine Learning and Computer Vision. Python is the programming language I am most confident with. I also know C++, Java, Matlab and R and have used them in various projects.

I have been using many open source softwares for my daily programming purposes and have always felt the desire to contribute back to the open source community. The last few weeks have been very satisfying to me because of the learning curve I have ascended by writing good quality test-driven code in a collaborative environment while contributing to some open source projects in Python. Becoming a part of development team of such open source projects requires time to gain trust in the code you write and the decisions you make. Google Summer of Code provides a perfect platform for someone like me to become a part of well established open source project.

Proposal Abstract :

Feature Detectors and Descriptors are at the center of many tasks in Image Processing and Computer Vision. Good Feature Detectors extract out the keypoints that are robust to image transformations like scaling, different viewpoints, change in intensity etc. Good Feature Descriptors extract a compact description of a keypoint which can be used to accurately match or correspond keypoints in multiple images and hence are widely used for tasks like Image Registration, Object Recognition and Tracking, Stereo Vision etc. This project focuses on implementing STAR(CenSurE) and Binary feature detectors and descriptors like BRIEF, ORB(Oriented BRIEF) and FREAK to extend the features module in scikit-image.

Related Project Experience :

Contributions to scikit-image :

Proposal Detailed Description :

Deliverables :

By the end of the summer, I intend to have completed the implementations of the following feature detectors and descriptors :

  • BRIEF feature point descriptor and descriptor Matcher
  • STAR(CenSurE) feature detector
  • ORB(Oriented BRIEF) feature descriptor
  • FREAK feature descriptor

Commitment and Communication :

I don't have any other commitment during summer hence I will work the normal 40 hr/week throughout the summer. I will commit at least four times a week to ensure that my code is reviewed regularly by the mentors and I can work on the received feedback immediately. I will reply to mails within 12 hrs of their reception. I will report my weekly progress on this blog.

Implementation Timeline :

Community Bonding period (27th May - 16th June):

  • Reading the papers in the reference section more thoroughly.
  • Discussing implementation details with mentors and the community.
  • Start working on implementing BRIEF descriptor to get a head-start.

Week 1, 2 (17th June - 30th June):

  • Implementing the BRIEF Descriptor and Matcher[1] in the first week.
    • Image Smoothing
    • Sampling Binary tests
    • Hamming Distance based Matching
  • Improving the implementation, adding tests and documentation in the second week.

Week 3, 4 and 5 (1st July - 21st July):

  • Adding the STAR feature detector[2] in the first two weeks.
    • Difference of Boxes
    • Line Suppression
    • Non Maximal Suppression
  • Third week for improving the implementation, adding tests and documentation.

Midterm Evaluation (22nd July - 2nd Aug):

  • Buffer period to finish off any previous incomplete work
  • Code Optimization
  • Adding Examples

Week 7 and 8 (3rd Aug - 16th Aug):

  • Implementing ORB(Oriented BRIEF) descriptor[3] in the first week.
    • Steered BRIEF
    • Greedy search to obtain rBRIEF
  • Second week for improving the implementation, adding tests and documentation.

Week 9, 10, 11 and 12(17th Aug - 13th Sep):

  • Implementing the FREAK descriptor[4] in the first three weeks.
    • Coarse to Fine Ordering of Difference of Gaussians
    • Saccadic Search
    • Rotation Estimation of Keypoint
  • Fourth week for improving the implementation, adding tests and documentation.

Endterm Evaluation Preparation (14th Sep - 23rd Sep):

  • Buffer period to finish off any previous incomplete work
  • Code Optimization
  • Adding Examples

Post GSoC:

  • Implementing FAST feature detector[9], BRISK feature detector and descriptor[10]
  • Implementing Machine Learning based Computer Vision algorithms like face detection in scikit-image
  • Implementing Descriptor Matchers[7] like FLANN, Brute Force Matcher that can be used for Image Registration, Object Recognition etc.

Reference :

(1) BRIEF: Binary Robust Independent Elementary Features

(2) CenSurE: Center Surround Extremas for Realtime Feature Detection and Matching

(3) ORB: an efficient alternative to SIFT or SURF

(4) FREAK: Fast Retina Keypoint

(5) Comparative Evaluation of Binary Features

(6) Computer Vision by Richard Szeliski, Page no. 205, Chapter 4, Feature detection and matching

(7), (8) OpenCV features2D module

(9) FAST Corner Detection

(10) BRISK: Binary Robust Invariant Scalable Keypoints

Clone this wiki locally