Circular
Circular is a novel app designed to competitively motivate engineers, mathletes and anyone else to better improve their freehand sketching for the sake of fame, glory and a sense of self-satisfaction. Our app allows users to take an image of their hand drawn shapes and receive automatically generated feedback on the ideality of their submission and ways to improve.
HOW YOU BUILT:
Development was done using Kotlin as the primary language due to its type safety and ease of development when paired with Android Studio. Some key challenges that we came across were dealing with asynchronous tasks when sending pictures to the backend as well as learning how to use Android’s camera api to access the phone’s camera hardware. These were resolved through intensive documentation reading.
We used a variety of python packages, centred around OpenCV and Matplotlib. The shape detection algorithm relies on various Hough transforms and image preprocessing techniques to translate the image into a space where the users’ desired shapes are revealed as prominent local maxima. To evaluate the score of a circle, the user’s drawing is translated to an exact curve through LOWESS regression, where the score is dependent on its L1 norm to the desired circle in polar coordinates. Parallel lines are scored by the angle between gradients, determined by linear regression.
OUR STORY:
With our team being composed of engineers and math savants, drawing the perfect freehand circle is somewhat the holy grail of flexing on friends. This in addition to the fact that one of our members is petrified of failing his upcoming freehand sketching assignment, inspiration sprung forth.
In developing Circular, a lot of self-teaching was required as members wrangled with Android Studio, Kotlin and OpenCV for the first time. We learned of the struggles with transferring an app to a real phone, learning how to use Google Cloud functionality, debugging code deployed to the cloud.
Most importantly, we learned of the power of git commit --amend to halve the Git tree when dealing with Google Cloud. If only we learned that before the last couple hours.
FUTURE WORK:
Features that we would like to see in the future are an improved global leader board that will detect cheating. To do this, we would have competitive video submissions so fraudulent or non-freehand shapes can not be submitted.
A personal statistics page with unlockable achievements would also help keep aspiring drawers motivated.
In our current solution, we have circles and parallel lines, and to add to this we would like to detect ellipses, right angles and parallel curves. Not only would this challenge the user that has already mastered the first 2 shapes but this would be very useful in assessing freehand engineering drawings that use all of these shapes.
Built With
- api
- async
- googlecloudfunctions
- kotlin
- python


Log in or sign up for Devpost to join the conversation.