In conclusion

1) Describe your final project. What have you accomplished over the course of the semester?

The goal of my final project was to create an IPD (inter-pupillary distance) calculator, i.e a program that detects and calculates the distance in millimeters between the two pupils of the subject / research participant. This is done through circle detection via Hough Circles, and some camera calibration (pixels to mm) through mouse input. I have accomplished this goal for the most part, with some non-major consistency issues.

Other accomplishments were learning how to use the OpenCV library (and coding libraries in general), and the language Python. I came into this project with negligible knowledge of python and its syntax/rules, and ending the semester I feel to have a much better grasp on the language. Finally, this was the first project that forced me to use and learn the command line, due to the nature of python.


2) Describe your overall feelings about the project. Are you happy, content, frustrated, etc with the results?

I am content with the results, though frustrated with some inconsistency. Some methods I used and small algorithms I wrote work for some images and don’t work / work somewhat inaccurately for other images. Overall I am glad to have taken this opportunity to participate in research and feel that I have learned a lot, not only about Python/OpenCV but about the Virtual Reality field in general.
One particularly satisfying thing is overcoming my fears of not finishing the project. When I started it, everything seemed so intimidating as I wasn’t familiar with a lot of the tools I was using, so it was an uphill struggle.

3) What were some of the largest hurdles you encountered over the semester and how did you approach these challenges.

As mentioned in answer 2 and in many of my blog posts, the biggest hurdle I encountered was inconsistent results. A temporary – although admittedly not great -solution I have used is to alter parameters in my methods used by image basis as needed.

Other big hurdles were finding and understanding documentation and applying them to my project. Most OpenCV resources available were for C++, and the ones I found for Python were often for Python 2 rather than 3. Similarly I often encountered issues adjusting my code as a lot of online assistance I found was in Python 2.

One scary hurdle involved having to urgently factory-reset my computer a few weeks ago after an onslaught of viruses and this forced me to reinstall OpenCV, numpy, PyCharm, and some other stuff. Fortunately, I had all my code backed up so none of that was lost.

4) If you had more time, what would you do next on your project?
I would keep working on trying to make it more consistent and trying out other methods to detect circles. Since I had issues with blob detection and chessboard pattern detection, I would spend more time trying to figure out why these wouldn’t work for me and how to get them to work. I would clean up the code to make it more efficient, make it more user-friendly, generalize the program more, potentially add a webcam feature, and if I wanted to go above and beyond if I had more time I would try to create a GUI for the project.