Digital Image Processing
Final Project
OMR Auto Grading System
Team: Simple Sober Guided By :
Salay Jain (20171078 / ECE) Prof. Ravi Kiran Sir
Harsh Sharma (20171157 / ECD) Aditya Aggarwal
GitHub Repository
Problem Statement
The project is based on an idea to grade an OMR sheet. Nowadays most of the competitive exams have
multiple choice questions with OMR sheet- Optical mark recognition corresponding to right options for
every question.
So our problem is matching the correct response and recorded response of the candidate and provide the
final score to the candidate.
As we can see we that we have marked wrong response by red color and right responses by green color while
un-answered responses remain untouched and counted as wrong answer.
Flow of the project :
● Feature extraction & detection.
● Homography matrix(H) using these feature and
FLANN based algorithm.
● Corresponding points using H matrix.
● Thresholding the response sheet to get binary
image.
● Using image processing algorithms in binary
image for further convenience.
● Finding marked responses and matching with
ideal answers.
● Return result.
Feature Extraction-Detection and FLANN :
We use SURF detector and FLANN to find the matching points from the template image and our response
sheet removing the noise/outliers.
Speeded up robust features (SURF) is a patented local feature detector and descriptor. For feature
description, SURF uses Wavelet responses in horizontal and vertical direction. For more distinctiveness,
SURF feature descriptor has an extended 128 dimension version.
Fast Approximate Nearest Neighbor Search (FLANN) is a library for performing fast approximate nearest
neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best
for nearest neighbor search.
Here is a example of SURF detector and FLANN to give the corresponding matching points. Now we will
use these matching points to find Homography matrix.
Homography:
With the set of corresponding points we use algorithms like 8 point algorithm to find our homography
matrix H. Also we use RANSAC to remove the outliers.
Now we find have our pixels of answer points manually in template and call it X2
X1=H*X2, where X2 is (x,y,1) i.e. 1 appended points.
Now we normalize X2 by making z=1 and thus we gets matching points related to our selected answer
points.
Here we can see that our first 10 points location in our response sheet we have got for the answer key. Now
we proceed with thresholding and pixels counting near these matched points.
Thresholding & opening :
After getting the key points (or the correspondence), we convert the input images into binary image with
threshold of 200, and latter we have use morphological operations to convert the image according to our
requirements. We have use kernel as a disk of diameter 7.
As we know, working with binary images is easier and efficient when we need to perform morphological
operation and want to know the information about a specific pixel weather it is black or not.
After binarization, we are performing morphological operations as opening to remove the unwanted
pixels(noise), and because of that the accuracy of our algorithm increases.
We can clearly see that after closing all the salt noises is removed and we get white pixels only in location
where it was marked by the candidate.
Matching Responses :
First we get answers of the ideal response sheet by using template and original image. Then we gets answers
of our own response sheet by using template and our answer sheet.Now we find the difference in these two
answers and get our result accordingly.
Results :
Some Correct outputs
Some Wrong Outputs
Some Observations :
Rotation(degree)/Tilt Angle(degree) of camera Avg Accuracy(%)
0/0 100
90/0 100
Less than 90/0 100
Greater than 90/0 100
0/(0-50) 98
0/(50-80) 92
(0-50)/(0-50) 100
Greater than 50/Greater than 50 78
Analysis of our Algorithm :
● Cheap and efficient algorithm.
● With using only one template and answer key we can check all the responses easily
● Rotations and tilts are handled by our algorithm but with reduce in accuracy for certain
rotations and tilt angles.
● The input image may require different thresholding algorithms according to the
environment in photo was taken.
● Can handle multiple correct options.
● Marked bubble/answers will only be detected if bubble is filled dark and completely.
Future work:
As we can see in the observation table, our algorithm gives less accuracy for rotation and tilt
(both at the same time) for higher angles, it is because we are using FLANN matcher to find the
key points, and FLANN matcher does not take into account any geometry information around
key-point. So, by introducing a new algorithm that takes into account the geometric
information around key points, we can expect the accuracy to be increased and after that our
algorithm will work for large angles (for both tilt and rotation at the same time) too.
Work Division
● Salay’s Work
○ Homography
○ 8-point Algorithm and RANSACC
○ Pixels neighbouring Average
● Harsh’s Work
○ SURF and FLANN
○ Thresholding and opening
○ Result Matching and final outputs
● Common Work
○ Presentation
○ Documentation
○ Creating Datasets
Most of the work was done together however for understanding some new concepts we splitted up our
works
Thank You