Scotoma Scanner

Once started, a black square will begin moving round the screen. With right eye covered, and seated 26 inches from computer screen, keep still and focus left eye on the cross at the centre of the degree circles. Press CR when you see the black square, and don't press anything when you don't. The test can last 15 minutes. Any scotoma(s) found will then be displayed on the screen, along with test duration.

source code


One day I suddenly developed a blind spot, or scotoma, in my left eye, just left of the focal centre of vision. I went to my local hospital and was subjected to various tests, which included looking at a squared grid and drawing the outline of the scotoma on it (which was a bit tricky, since you can't see a scotoma). My fear was that it was the onset of 'wet' macular degeneration, which can lead to blindness. The ophthalmologist who examined my retina said that it wasn't, because there would be distortion of vision due to swelling of the retina, and other symptoms that I didn't have. He said that, looking closely at my retina, he could only see scar tissue, which could have been there for years, and which you can get by looking at an eclipse with unguarded eyes.

Afterwards, sitting in a pub waiting for the eye drops they'd given me to wear off, I wondered if there might be some way to use a computer screen to scan a scotoma. If you generated dots randomly on a screen, and pressed a key each time you saw a dot, then the ones you didn't see must fall inside a scotoma (every eye has its own natural blind spot anyway).

Results:
The scotoma dwindled slightly
in size through 2006 into 2007/8

Next day, because I wanted to be able to study my own scotoma, I started writing the program. First I started by dividing a screen into a grid, and going through it one square at a time, up and down the rows and columns. But this was slow, and also I could get to predict where the dot was likely to appear. Then I tried randomly generating dots, and this found the scotoma, but only sketched it out with a sprinkling of dots. So then I wrote a bit of code which, on finding a spot in a scotoma, would zigzag up and down away from it, first to the left, and then to the right. This was much more effective, but would regularly get lost. And so when it got lost I fell back to generating random dots, or trying to find unfilled dots by searching left-to-right within the known scotoma region, and using the zigzag method there. The end result was that I had something which would map out the scotoma quite accurately.

The main problems with the program were that it's quite difficult to keep your eye fixed on one spot on the screen, while dots appear and disappear off to the side. And it's also quite difficult, when a dot is half in, half out, of a scotoma to decide whether it's in or out. I ended up simply gazing unfocused at the dot as best I could. The results that came out were never exactly the same, but they were comparable. And the longer the test went on the better the result.

Another problem was one of how to scale the image in terms of degrees from the centre of vision. Pretty much the only way to do this is to measure the width of the screen window, and the distance of the eye from it, and find the arctangent of the resulting angle, and use this to scale pixels per degree.

The current program allows the applet parameters to set to the window size, and the x and y locations of the focus (top left is origin), and the size of the black squares put up on the white screen, and the interval at which these were displayed, and a beep sound made.

Currently, the way the test is run, you must position yourself with your eyes about 20 inches ( 50 cm ) from the screen, with your head held level and stable, with the eye not being tested either closed or covered. You fix the test eye on the centre of vision on which all lines converge, and press 'c' to start the test. The program then starts moving a black square around, beeping each time it moves it, and you have a second or two to press a key (e.g. return) to record seeing it. If you don't see it, you don't press a key. This can go on quite a long time, particularly if the squares shown are small. In this event, pressing 'c' suspends the test, and allows you to take a break. Pressing 'c' again restarts the test. While the test is running any scotoma found is not displayed. If you want to see how things are progressing, 'x' will display the scotoma as found so far, along with a pixel count for the the scotoma area. Hitting 'x' again will continue the test. There is no end to the test. But when the program finds it difficult to find new scotoma areas, it will increasingly tend to move the dot around randomly, and you will always see the dot (partly because it never tests the same dot twice).

This program could be improved in all sorts of ways. Different coloured dots on different coloured backgrounds. Blinking dots. Offscreen dots to measure 'honesty' or attention. All sorts of things. It would be handy to be able to store the result as an image file that could be printed out, but Java applets don't allow this (a Java application would).

It can only ever be a test of central field of vision. With glaucoma, peripheral vision tends to be lost, and a computer screen can't test for peripheral vision (unless you look way off to one side, or way up, or way down).

But this test is much better than trying to draw by hand the outline of something you can't actually see anyway. And it's also a test which people with scotomas can conduct at home in their own time, as often as they like. The patient gets to monitor his own condition.

A brief online search of mine turned up no 'scotoma mappers or scanners', so I'm not sure that ophthalmologists have got a tool like this in their arsenal.


Scotoma.in is an input file.

Chris Davis 17 Feb 2008