Open Udayraj123 opened 7 months ago
I'd like to give this a shot!
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
@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
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?
@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?
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 -
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) -
Here's a sample you can try this out with(will need to create a small template.json) -
Original | Shifted |
---|---|
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
I would Like to work on the solution for this if it is still open and not being worked on already
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!
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
Traverse each bubble point just like in the current algorithm
Instead of calculating the mean pixel value for a bubble, use a different algorithm to accurately detect a cross or a tick mark (open to ideas)
The algorithm should be able to differentiate between a slightly shifted bubble boundary(checkbox walls) vs a tick mark (no false positives)
Return a fixed value for that detected bubble so that it works with existing algorithm too.
Additional context