Bubble sheet is a special form used in multiple-choice question examinations, that's corrected automatically using optical mark recognition by image processing techniques.
This project is created as senior year image processing course for correcting a specific exam, that has the following form 45 questions, each one have 4 possible choices.
- Python 3
- Opencv 3.x
- The data set, download from here.
- Papers are scanned with almost correct orientation ( may be rotated less than 45 degrees).
- Use hough circle transform to detect the two big black circles at the bottom, then fix the rotation.
- Use template matching to match the circles with cross inside it, then use them to crop the answers section.
- Try to find the contours of the whole possible choices (180 one in this case) by a set operations
- Gaussian blur the image (optional).
- Get edges via canny
- Use morphological opening to remove vertical lines as they are so common.
- Dilate the edges to complete them as full circles.
- Find all contours in the image.
- Filter the contours according to specific parameters, to get only the choices contours.
- Sort the contours and cluster them 4 for each question.
- Find which contour is the most filled one and consider it as answer. (Note: the implementation must change to take into consideration a few special cases.)