Open Indirect Opthalmoscope (OIO)
Authors: Ayush Yadav, Ebin Philip, Dhruv Joshi
Acknowledgements: Tristan Swedish, Devesh Jain
Built at the Srujana Center for Innovation, LV Prasad Eye Institute, Hyderabad, India
OIO (or "OWL", because OIO looks like one) is an ultra low-cost, open hardware device to image the retina (also called imaging the fundus of the eye). Having the ability to image the retina easily and with low cost is invaluable in the early detection of potentially vision-threatening diseases, such as diabetic retinopathy.
Read more about our device at our website.
LICENSE AND DISCLAIMER
This software is covered by the MIT License (see license.txt).
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Software Versions used
- OpenCV (cv2) 184.108.40.206
- Python 2.7.11+
- GCC 5.3.2
Details about assembly and parts is given on our hackaday page. Our software is designed and tested on a raspberry PI v2B and 3B, with M12 mount rPI cameras (through DSI cable). The OS on the raspberry PI we use is Wheezy.
All dependencies can be installed by running
install.sh, sudo password would be required if some dependencies are not present. We recommend installing the software on a fresh dedicated rPI.
Deploying the application
The repository must be cloned into the 'home' folder of Raspberry Pi, i.e.,
/home/pi/ or just the
~ path, all environment variables are set with respect to this!
The name of the user should be pi (which is the default on new rPI OS installations).
Under the hood
The GUI is run as a fullscreen webapp served with Flask. Our system's backbone is Python. The folder structure is as follows (All individual folders have their own readme):
experimental_modules contains work in progress python modules.
images contains the images taken using the device. Images are stored in a folder named with the MR Number, and image names are of the format
MR_no_i_j.jpg where i and j are integers. i indicates session no and j indicates pic number within that session.
templates contains all html for the webapp
fundus_mod3.py has the main functionality, and integrates the GUI and imaging. This code polls for a button press and captures two images in quick succession (illuminating by two separate LEDs controlled by GPIO). The images are processed and then saved.
name stores the image number of the image last clicked and stores on the device (temporary hack!)
Fundus_cam.py stores the class which allows for the creation of object controlling the Picamera.
simplehttp.sh creates a python simplehttp server on port 8000 to allow for transfer of files from the device.