In-place (Scale/rot/trans-penalizing) curve matching score [closed]
I'm new to computer vision, although experienced in graphics development in general.
I have a simple application, which I wish to present a stroke (an arbitrary, but probably quite simple 2D curved path) on the screen to the user, and ask the user to replicate it, again with a single stroke. I would like to measure the accuracy with which the user replicates the stroke.
My first attempt at replicating this functionality using cv::matchShapes to compare a vector of the source curve points with a vector of the drawn curve correctly scores shape similarity well, but is actually too robust. I want users to copy the stroke in place, not draw it at an arbitrary position/scale on screen.
To be clear,
- Drawing the stroke in either direction should be supported (although presumably this can be added even if the underlying algorithm does not support by testing twice.)
- The metric should NOT be invariant to translation, rotation, scale, that is the user must draw the shape in place.
- The stroke may or may not be closed. We know in advance whether the template is closed. If the tempate is closed (such as an ellipse) then we would _prefer_ the user to be able to start and end their stroke at any point on the ellipse, but this is not an absolute requirement.
I realize this is the opposite of most computer vision, when you're trying to robustly match arbitrary input. In this case, I want to score correctness of input to a very precise target. Can anybody please suggest a better approach?
Thanks for your time.