Freiburg Vision Test (‘FrACT’)

Even while updates are in testing, a completely new version w/o Flash is developed. →Preview.

This is the free, multi-platform Freiburg Visual Acuity Test + Contrast Test + Vernier Test + Grating Test. You can run the tests below within your browser (for security, “result→clipboard” is then disabled) or download as a stand-alone program.

Response keys: For 4 directions (tumbling E or Landolt set to “4 choices” in SETTINGS) the cursor keys are fine, for 8 directions the response keys are geographically arranged on a numeric keypad. To abort a test run, press the key ‘5’ twice or <escape>. For reliable results please observe the checklist. Your feedback is welcome and has frequently lead to improvements and extensions. FrACT was employed in well over 200 papers (“Who used FrACT” below).

If the on-line version of FrACT right below is blocked by your browser: consider enabling Flash
on this page. The downloadable stand-alone versions work independent of a browser.

Content on this page requires a newer version of Adobe Flash Player.

What is it?

“FrACT” is a widely used visual test battery in form of a free computer program. It uses psychometric methods combined with anti-aliasing and dithering to provide automated, self-paced measurement of visual acuity (Bach 1996), contrast sensitivity and vernier acuity. The progression of optotype sizes is determined by the “Best PEST” strategy (Lieberman & Pentland, see General Pertinent Sources below). FrACT complies with the European Norm for acuity testing (EN ISO 8596) and is endorsed by the DOG. It is employed all over the world in vision labs, by optometrists, ophthalmologists and in clinical trials (→Who used FrACT in over 100 publications) and has been verified in independent laboratories (→Descriptions & Validations).
– Optotypes include Landolt ring, tumbling E, Sloan letters, and faces.
– Results can be displayed as logMAR, Snellen fraction, or decimal acuity; full details can be exported for data processing.

At the high end, acuities beyond 2.0decimal or >40/20Snellen corresponding to less than –0.3logMAR are accessible.
[Yes: while 20/20 is considered “normal”, actually normal acuity is nearly twice as much! If Snellen had chosen the population average as the “normal” value, half of the population would have a value below normal…]

Where can I get it?

Where can I learn more?

For an overview see this English introduction or eine deutsche Einführung. Detailed information on the program is available in “Bach M (1996) The “Freiburg Visual Acuity Test” – Automatic measurement of the visual acuity. Optometry & Vision Sci 73:49-53” [PDF], more background on acuity testing can be found in this German paper. There is a built-in help file, and a detailed discussion of the various settings here: “FrACT3_Manual.pdf”. Finally, →here (General Pertinent Sources) is a literature list.

Where to use?

Participants’ screening in research settings

Routine patient examination

Clinical studies where acuity or contrast sensitivity is an outcome variable
(aided by export options for reporting)

To entertain your waiting patients

What equipment do I need?

Just about any state-of-the-art computer (be it running the Macintosh operating system, Linux or Windows).
For remote input see the response box below in Usage Details.
If you are using an LCD and want to measure contrast thresholds, be sure the display is not of the 6-bit type (as it is was in many laptops; more in Usage Details); for acuity those would be fine. Make certain that the best possible color depth is chosen. Older versions of FrACT remain available and run just fine on older equipment.

What does it cost?

Nothing; but feedback is warmly appreciated. And please cite it when you’ve used it in scientific settings.

How do I cite it?

If you used FrACT for your research, please cite it. The “generic” publication is:

Usage Details

If you ran a previous version, all selections in “SETTINGS” may automatically be defaulted in order to update internal structures (depends on the exact versions).

How to calibrate?

Enter the width of the calibration bar & the observation distance in the “SETTINGS” interface. Be sure to have enough distance from the screen, so pixel resolution does not limit acuity. Also ponder about every entry in the SETTINGS interface and set them appropriately; the defaults can not be optimal for every situation. The Checklist is a must-read, in the “FrACT3_Manual.pdf” all settings are explained in more detail than you probably wished…

For the Contrast Test, you also need to go to “SETTINGS>Luminance Linearisation” to linearise luminance (“gamma correction”) before testing. But see below for a cautionary note on the difficulties of contrast testing.

All selections in SETTINGS are automatically saved.

Starting the test

Apart from using the obvious buttons a test run can also conveniently be started from the numerical keypad (digit 5). Enter the position of the appearing Landolt-C's gap via the numerical digit keys. These are spatially mapped to the 8 possible gap positions in an obvious way (“8”=top, “9”=top right, etc.). The digit key “5”, pressed twice, aborts an ongoing test run (and inhibits display of the premature result).

Response box

Working with patients you may want to enter results yourself. In lengthy vision experiments, subjects are used to enter responses themselves.

For direct response entry by the subject, these keypads are useful. They come in various versions. Most have only a short cable, for remote entry you will want to add a USB extension cable.

This one even sports fancy labels.

4 or 8 gap positions?

The Tumbling E has possible 4 orientations, the Landolt-C allows 4 or 8. Depending on your application, you may wish to use only the 4 primary gap positions or to supplement it with the four oblique directions; FrACT allows both. Briefly: 4 directions are less easily confused, but guessing probability is higher making more trials necessary; 8 positions allow more rapid determination of visual acuity(less trials) as the guessing probability is lower. Final outcome should be identical, but the number of runs must be adequately chosen; see next item.

Number of trials?

Default: 24 trials with 8 gap orientation choices, 30 trials with 4 gap orientations (because the guessing rate is higher). For ‘real’ scientific applications choose 8/30, or, better, repeat each condition (e.g. each eye at 18 trials, ideally in an ABBA scheme) and take the mean. Why are all these numbers divisible by 6? Because every 6th trial is a “bonus trial”, where the optotype is presented at 3 times its current threshold estimate. This keeps your subjects happy, especially since the last trial is thus always a ‘success’.

Keeping different Settings

Often one wants different sets of SETTINGS, e.g., for training vs. assessment, for near vs. far vision, for different age ranges, with vs. w/o crowding etc. Rather than change the settings each time (with the danger to forget something), be informed that the SETTINGS state is stored per FrACT file. Thus, if you duplicate (appropriately renaming it) or put a copy in a different location, each will have their ‘personal’ SETTINGS; to switch between different sets of SETTINGS, just quit/exit and start the other version.

Results Export

The test result is presented on the screen. Additionally, the result can be transferred to the clipboard (in a simple, final-result-only or full-history fashion); so just switching to a spreadsheet program running in the background allows pasting the result. As of version 3.6, TCP/IP-based result transmission is also available, using a standard URL-request GET call.

What is special about the Contrast Test?

Experience taught me that contrast testing is technically much more demanding than acuity testing.

Stray light falling on the screen must be avoided

Be sure to linearise luminance (“gamma correction”) before you test contrast (go to “SETTINGS>Luminance Linearisation”); the best approach is to employ a screen calibrator (I'm using the Spyder), to calibrate the screen/computer with a gamma of 1.0, and set it thus in “SETTINGS>Luminance Linearisation” with the “gamma=1” button.

Unlike in acuity testing, the time taken to inspect the optotype plays a sizable role.

Normal contrast vision is better than normal screen luminance resolution (256 steps are not enough, especially after linearising (“gamma correction”). Like in the “old version”, which runs only on the Macintosh platform, this is now addressed via dithering [Bach M (1997) Anti-aliasing and dithering in the “Freiburg Visual Acuity Test’. Spatial Vision 11:85–89].
However (as of ≈2011): most portable computers do not even have an 8-bit screen depth, they only have a 6-bit screen depth and overcome this by dithering themselves. This “double dithering” is quite counterproductive. So be sure you have an 8-bit screen, be it LCD, CRT, or OLED.

Mirroring

In narrow environments the standard 4 m distance may be difficult to achieve. In such conditions, high-quality front surface mirrors can be employed. In SETTINGS, you can switch from “normal display” (default) to mirroring horizontally, vertically or to 180° rotation.

Key

Action

5

start the test as defined in SETTINGS

a

start Acuity

l

start acuity Letters

c

start Contrast

v

start Vernier

e

start Tumbling E

b

aBout

h

Help

u

SETTINGS

q or x

Quit = eXit

k

“Kindergarten” (don't)

55 or <esc>

abort running test

Shortcuts

I am lazy and prefer to start actions without mousing, thus I added a number of shortcuts:

Who used FrACT?

Hundreds of studies have employed FrACT. Only occasionally do I find the time to systematically analyse the papers whether FrACT was actually used, so the list is incomplete. I'd appreciate a reprint (PDF) if you profited from FrACT.

Kornmeier J, Wörner R, Bach M (2016) Can I trust in what I see? EEG evidence for a cognitive evaluation of perceptual constructs: Can I trust in what I see? Psychophysiology 53:1507–1523. doi: 10.1111/psyp.12702

Molloy CS, Stokes S, Makrides M, et al (2016) Long-term effect of high-dose supplementation with DHA on visual function at school age in children born at <33 wk gestational age: results from a follow-up of a randomized controlled trial. American Journal of Clinical Nutrition 103:268–275. doi: 10.3945/ajcn.115.114710

· renamed "FrACT3_preferences_history.sol" to "FrACT3_preferences_trialHistory.sol", same for the class
· changed type of "precision" in the rStrN* class to int
· "whichTestOn5" now defaults to acuity in the internal case construct
· removed the (by now) obsolete "T" option

• added grating test as requested by Jens (work in progress, not yet in the manual)
• added timestamps (milliseconds since 1970) to the full history
• [3.7.m special version for Paik with long Verniers (40x longer)]

• corrected Michelson→Weber contrast calculation: the previous Weber value had been c·W%-times too high (e.g. 1.01% instead of 1.0%, 11% instead of 10%, etc.). Thanks to Prof. von Handorff and his students for spotting this.
• This is the last version that runs on Mac OS/PowerPC.

2010-07-29

3.6.2

• added tumbling E
• added optional on-line trial info
• added persistent history (copied to clipboard with "z")
• modernized writing to the clipboard
• centered parameter-input in the SETTINGS frame
• solved problem of not being able to enter "5" into the subjectID field

2010-03-21

3.6beta

• Quit button now labelled "Exit" in Windows
• added TCP/IP based results transmission
• deleted the flawed and effectless manipulation of presented direction depending on response correctness • added face recognition paradigm (experimental)
• improved Alert class from <http://fatal-exception.co.uk/blog/?p=69#more-69>
• for FrACT letters the history is now correctly exported, with the letters. Checked LandoltC and SloanC size, they are identical, as should be.

2009-11-11

3.5.5

Quite a number of tiny improvements:
• added screen dimension to main screen info
• added "force Snellen denominator to 20 ft" on request
• added option for colour Landolt Cs on request
• set uncalibrated values bold & red in the SETTINGS screen to make them more obvious
• set focus to stage (now it responds to keyboard shortcuts after returning from SETTINGS etc.)
• now possible to start with numkey-5 irrespective of numlock setting

All numerical preferences now range-checked
corrected the logic in the response key evaluation (didn't stop after first match). Added acuity based on Sloan letters. Rewrote response code to use key-value pairs.

Complete re-write of FrACT, now called FrACT3. Reason for re-write was that I wanted to improve the contrast dithering. This entailed updating to the (totally underwhelming) Adobe's Flash CS3 development system. This required changes in nearly every line of code. A major chore, which markedly improved the program internally, while not showing the changes externally. There is also a new icon, thanks to Inga.
A comparison in 54 eyes found that acuity results differed between FrACT2 and FrACT3 by ≈0.01 logMAR, thus below noise limit. Contrast testing is improved, the vernier test is being evaluated.

• added 2 new sounds: (1) run done, and (2) incorrect response. Now I prefer the purely auditory feedback to the visual one. Give it a try!
• switch to Flash CS 3 with only few nasty side effects
•
internal changes to the PEST procedure: code “beautification” without changes in the basic logic

2007-06-02

2.0.3

• added a "which test on pressing ‘5’" option, changed contrast-Ø default to 30'
• finally found how to abort using <esc>

2007-05-23

202a

• There was a problem with the final contrast value in the “export to clipboard” record (thanks to Hendrik Jungnickel!)
• Added sanity check for acuity formats. If all are switched off, decimal is switched on

negative optotype contrast now works again (had been lost when making the program more robust with respect to non-sensible preference values, probably back around version 1.2)

2006-11-30

1.9

the smallest gap size had been reduced to 0.5 pixel. Tests now showed that this does not result in reliable optotype quality, and has been reset to 1.0

2006-11-15

1.8a

• Extended warning when the highest possible VA is below 2.0
• Vernier result now honours the preferred decimal point character
• Rewrite of the contrast routines (help from Hendrik Jungnickel gratefully acknowledged):
Correct setting of contrast and readback honouring gamma correction, back luminance clamped to 50%; “results2clipboard” now works with contrast;
• contrast now also allows a position shift, added by request

A brief history of FrACT

In 1985 I programmed the first version, using a custom-built Z80 CP/M computer with a graphics board based on the NEC 7220 graphics chip, using serious digital differential algorithms (Newman & Sproull, 1979) just to draw the Landolt C. It became more than a curio after incorporation of the Best PEST threshold algorithm (Lieberman & Pentland, 1982) and was routinely employed in my lab to screen subjects’ acuities before experiments. The port to the Macintosh in 1992, translating from Pascal to C++, facilitated the use of anti-aliasing (Bach, 1997), which immediately made the measurements more precise (by allowing intermediate pixel values) and enabled a higher acuity limit at practical distances (a few meters). After adding gamma correction for better quantitative definition, in 1996 the first Internet version was made available. The rich feedback spurred many bug fixes and feature expansions, paving the way from a ‘hobby’ to a professional program, now validated in independent laboratories. The pressure of requests finally motivated me in 2002 to port the program to an operating system-agnostic environment, for which Macromedia’s (now Adobe’s) Flash was chosen. Consequently the program now runs in near identical fashion on the Macintosh, Linux and Windows operating systems.
• Newman WM & Sproull RF (1979) New York: McGraw-Hill, Inc.
• Lieberman HR & Pentland AP (1982) Microcomputer-based estimation of psychophysical thresholds: The Best PEST. Behaviour Research Methods & Instrumentation 14:21–25
• Bach M (1997) Anti-aliasing and dithering in the Freiburg Visual Acuity Test. Spatial Vision 11:85–89

Good programming practice

While FrACT initially began as a “hobby project” (see History above), its widespread application made more rigorous quality control necessary.

Quantitative correctness of the optotype geometry. This is easily measured and verified over the full range.

Quantitative correctness of the threshold outcome. This was done by controlled comparisons to chart testing in my lab and in independent laboratories.

Robustness with respect to subject input. In testing mode, FrACT acts as a “state machine”, and the numerical keys 0–9 accessible to the subject can switch between well-defined states only.

Robustness with respect to operator input. The Settings dialog has been augmented with plausibility checking of the input values. E. g. when a numerical entry has incorrect number formatting, the parameter value is reset to its default.

Low-level programming details can only be mentioned in passing here

descriptive long variable names (rather than going overboard with comments)

systematic modularization

Source control. Issues and their solutions are meticulously tracked with git; for a brief exerpt see History above.

As is well known, any interesting computer program cannot be shown to be entirely correct, and usually isn’t. Thus the ongoing validation by independent and critical users is most important for the verification of FrACT. Thank you! All pertinent comments welcome.

Bugs

At this time, I am not aware of any bugs proper in FrACT. Please tell me if you find problems.