Public Lab Research note


GSoC proposal: Automated feature detection and matching #300 https://github.com/publiclab/image-sequencer/issues/300

by puneetbindal8989 | April 01, 2019 15:10 01 Apr 15:10 | #18927 | #18927

(This template is for students applying to summer code programs with Public Lab. Use this link to start writing a post: https://publiclab.org/post?n=899&tags=soc,soc-2019,soc-2019-proposals You can delete this line once you've started filling it out.)


About me __

Tell us about yourself!

Name : Puneet Bindal

Github: https://github.com/rockstar777

GCI Mentor 2018 Public Lab

Student year: 3rd year student

Field of study: Computer Science Engineering, B.Tech_

Affiliation Indian Institute of Information Technology, Vadodara

Location: Gandhinagar, Gujrat

Project description __

Here, you don't have to have a complete proposal when you begin. Just tell us some of your ideas and we'll help you refine it into a full proposal gradually!

Abstract/summary (<20 words): [__](#Abstract/summary+(<20+words):+__:))

Enhancement for Image-Sequencer, A module that detects the object features of an image and match them with another image.

Problem __

What problem(s) does your project solve?

Computer Vision problem

issue no. #300 image-sequencer _https://github.com/publiclab/image-sequencer/issues/300

Approach __

To solve this issue my approach is to get around the best js libraries.


We have 3 opensource most used libraries for computer vision i.e :-

1. Opencvjs

2. Jsfeat

3. Trackingjs


To find the best library lets find the difference:-

Opencv.js has only feature for object detection using HAAR Cascades. The tracking.js library(Light weight library ~ 7Kb ) provides the BRIEF (Binary Robust Independent Elementary Features) descriptors and its JSFeat extension---ORB (Oriented FAST and Rotated BRIEF).Which means that even if you rotate an object, the algorithm can still detect it. Moreover, the JSFeat library provide an example using the image pyramid, which is scale invariant too.


Implementation __

Let's divide the whole big project into subparts:

1. Implement the js code using the library.

2. create the module in image sequencer

3. implement test codes in modules

4. Add step features

Discussion for Subparts:

1. Implementation of js code using the library :-

Feature detection(Fast Corner Detection) :-

// threshold on difference between intensity of the central pixel
// and pixels of a circle around this pixel
var threshold = 20;
jsfeat.fast_corners.set_threshold(threshold);

var corners = [], border = 3;

// you should use preallocated keypoint_t array
for(var i = 0; i < img.cols*img.rows, ++i) {
    corners[i] = new jsfeat.keypoint_t(0,0,0,0);
}

// perform detection
// returns the amount of detected corners
var count = jsfeat.fast_corners.detect(img:matrix_t, corners:Array, border = 3);

image description

Feature Matching(orb descripter):-

var corners = []; // jsfeat.keypoint_t Array

var cols = 32; // 32 Bytes / 256 BIT descriptor
var rows = num_corners; // descriptors stored per row
var descriptors = new jsfeat.matrix_t(cols, rows, jsfeat.U8_t | jsfeat.C1_t);

jsfeat.orb.describe(img_u8:matrix_t, corners:Array, num_corners, descriptors:matrix_t);

image description

2. Create the module in image sequencer :-

image description

3. implement test codes in modules

image description

4. Add step features:-

1. Increase-decrease threshold value

2. Increase-decrease blur value

3. Increase-decrease descriptor length

4. match image with another image with given descriptor length


Timeline/milestones __

Break your project up into small projects -- one per week!

See this page for guidance on breaking your plan up into small, self-contained parts: https://publiclab.org/notes/warren/01-18-2018/software-outreach-modularity-is-great-for-collaboration

27th May to 23rd June: First Phase Evaluation (4 week duration)

Week 1 - Implementation of fast corner and orb descriptor, and producing a demo in HTML file to become user friendly with the libraries and also get through image-sequencer modules. Mentor discussion.

Week 2 and Week 3 - Implementation of module in image sequencer with minimal features. PR review at the end of each week.

Week 4 - Implementation of test module. PR review at the end of the week.

24th June to 28th June: Evaluations

29th July to 21st July:

Week 1 - Optimization and Debugging of Code. Pr review and mentor discussion at the end of the week.

Week 2 and Week 3 - Adding more features to the module. PR review at the end of the each week.

22nd July to 26th July: Evaluations

27th July to 25th August:**

Week 1 and Week 2 - Testing, Optimization and Debugging of Code. PR review at the end of the each week.

Week 3 and Week 4 - Commenting and making module code more user friendly, so that new developers who find it interesting and wanna work and improve it, can do it easily.

Mentor discussions. Final PR. Try to solve more issues associated with this module or library we will use in here.


Needs __

Guidance of my Mentor will the best for me. And most documents are available online, so no needs :).


First-time contribution __

I had my first contribution at the time of GCI 2018 which was proved to be a good experience for me.


Experience __

Languages: Ruby, Js, Java, Golang, Python, C, C++

Tools and framework: nodejs

Github link: __https://github.com/rockstar777

Won 1st prize in Projex event in my institute for the project Air Writer.

GCI Mentor 2018 Public Lab

Selected for a course in IIMA, Ahm for Entrepreneurship program, where we have started a startup called Edusherpas.

hackerrank profile: https://www.hackerrank.com/puneetbindal8989

KVPY 2014 first round qualifier


Teamwork __

I had worked on projects on github on private as well as public repo with my colleagues on different projects.


Passion __

What about our projects, and Public Lab, interests you? What are you passionate about? Open science, environmental justice?

Image-Sequencer more interests me as it is based on image processing and computer vision. I described my self as hardworking, determined, curious, and a daily learner. I have more particular interest in machine learning stuffs.


Audience __

Whom do you want your work to help? We especially appreciate proposals which make technologies and techniques more welcoming and friendly to those who've often been excluded.

My project will directly help all users (students, researchers, etc.) working in all kinds of fields that relate to studying, examining and experimenting with images.


Commitment __

Do you understand this is a serious commitment, equivalent to a full-time summer job? Tell us how you'll structure your schedule from day to day!

I do understand that this requires serious commitment, I will concentrate my summer days to Public Lab and will make a optimized and efficient module.

My work schedule will be as follows:-

For week days:-

Code, Eat, Sleep, Repeat

For Weekend days:-

Code, Eat, a movie or play badminton, Sleep

Thank you!!


2 Comments

Hi thanks for writing the proposal. We expect dates to be written in the proposal. So, please mention the dates with the week number. Also, please see other proposals to get a glimpse of how to enhance your proposal. Please upload your proposal at the Google Summer of Code website at the earliest. Please ignore this comment if already done.

Thanks lot, I will do asap.


Reply to this comment...


Login to comment.