Udayraj123 / OMRChecker

Evaluate OMR sheets fast and accurately using a scanner 🖨 or your phone 🤳.
MIT License
752 stars 311 forks source link

[Feature] Support for detecting tick marks or cross marks #167

Open Udayraj123 opened 7 months ago

Udayraj123 commented 7 months ago

Is your feature request related to a problem? Please describe. It'll be good to have support for tick marks/cross marks instead of just fully circled bubbles.

Describe the solution you'd like

Additional context

alt-shreya commented 7 months ago

I'd like to give this a shot!

Udayraj123 commented 7 months ago

Hello @alt-shreya, feel free to propose a basic solution/approach. Then I will assign the issue to you :) You may also discuss it on discord if needed

alt-shreya commented 7 months ago

@Udayraj123 I went through the resources you had linked, and found the StackOverflow discussion very interesting. Building upon the approach highlighted by nathancy, a cross could be detected in the same way that an X is detected in handwriting recognition (2 diagonal lines of similar length and an intersection point), and a starting point to detecting tick marks could be to detect two lines inside the contour, in which the length of one line is shorter than the other

Udayraj123 commented 7 months ago

Hey @alt-shreya, thanks for taking forward the discussion.

cross could be detected in the same way that an X is detected in handwriting recognition Are you thinking of exploring using an ML algorithm for this?

to detect two lines inside the contour, in which the length of one line is shorter than the other Okay, but anything on distinguishing it from bubble boundary? If the box gets shifted left or right a little bit, the contour approach will probably get disturbed. Can you try something on the shape approximation as done in the Stackoverflow discussion?

alt-shreya commented 7 months ago

@Udayraj123

Are you thinking of exploring using an ML algorithm for this?

yes

If the box gets shifted left or right a little bit, the contour approach will probably get disturbed.

Could you give me an example of when it might shift?

Udayraj123 commented 7 months ago

Could you give me an example of when it might shift?

I don't have images with tick marks handy, but I think the following will suffice. So the shifting problem exists for any OMR sheets(even without tick marks). Usually happens in the bottom and bottom-right sections due to scanning/printing skews.

Here's a few examples for the general shifting problem - From template alignment, notice the boxes are slightly shifted around -

image

Try to imagine tick marks instead of the bubbles in above image. For filled bubbles we use the mean value for the whole box which usually works, so we ignore any slight shifts in the image in current approach.

But this mean value approach also fails sometimes for in cases like this (false positive) -

image
Udayraj123 commented 7 months ago

Here's a sample you can try this out with(will need to create a small template.json) -

Original Shifted
image image

I've manually added a slight shift in the images.

Note that you will need a larger bubbleDimension in the template since the tick marks are overflowing the expected box. Let me know if you need help with creating the initial template.json

chirag4862 commented 1 week ago

I would Like to work on the solution for this if it is still open and not being worked on already

Udayraj123 commented 1 week ago

Hey @chirag4862, this issue is labelled as intermediate and can be picked up after getting familiar with OMRChecker through any other issues first as this will take some time Let's get you familiar with submitting your first sample!