Retinal image computation software
/*************************************************************************************
These programs are free software; you can redistribute
them and/or modify
them under the terms of the GNU General Public License as
published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
*************************************************************************************/
University
of
Chicago - Visual Science
Laboratories
- Chicago, IL - USA
This
software determines the spectral power distribution of light on the
retina, taking account of the optics of the eye, including chromatic
aberration and wave aberrations.
TOPICS:
- Description
- The Program
- Warnings
- All the steps
- Manuals
- Downloads
- Links
- Contact me
- References
This software takes as
input a two-dimensional image and determines the two-dimensional
retinal image, taking into account the more important human optical
factors affecting retinal image quality (including chromatic
aberration and wave aberrations).
The input image is specified by the spectral distribution of the light
at each point.
The software also can transform CRT images specified in RGB into the
input image but this requires individual calibration of
the CRT used to display the image (spectral power distribution of each
phosphors and gamma
correction).
Retinal image quality is based on the model "Indiana Eye".
For information about the human eye model used and the theoretical
computation of the Point Spread
Function (PSF), see (Thibos &
Bradley 1999).
Alternatively have a look to Thibos's publications' :
http://research.opt.indiana.edu/Researchers/Thibos/
Professor Thibos' MATLAB code is
converted to C for faster execution. Calculation for larger images
(512x512) and smaller wavelength steps
(10 nm steps from 400 to 750 nm are used here) requires 3 minutes on a
Macintosh G5 (1.6 MGHz, single
processor).
Input images may either be given in terms of the the R, G, B components
of a
CRT display, or directly in l, s, Y chromaticity (
lsY represents
the relative L-cone to
M-cone stimulation [l=L/L+M], relative S-cone stimulation [s=S/(L+M)]
and luminance [Y=L+M] (MacLeod
&
Boynton 1979)).
The l, s, Y Chromaticity will be converted into percentage of red,
green and blue guns (This option is set by the 'CONVERT_lsY2RGB' option
in the Settings file ).
NOTE: To perform this
lsY to RGB computation, the program needs to load the Monitor's Judd
Specs.
The RGB Input image is converted into in a spectral power
distribution at each point.
The model eye allows computation of a separate Point Spread Function
(PSF) at each wavelength. The image is decomposed into a separate image
at each wavelength (with 10 nm steps from 400 to 750 nm, there are 36
images.)
There is one convolution for each wavelength (that is, 36 convolutions).
This involves 72 Direct Fast Fourier Transform (FFT) and 36 Inverse
Fast Fourier Transform, which can take a while.
After the retinal images is computed at each wavelength, standard
trichromatic representation of the retinal image may be calculated,
such as Judd(1951) X,Y,Z, or L,M,S cone excitation (based on the Smith
& Pokorny cone fundamentals (
Smith
&Pokorny, 1975)).
P.S.
Thanks to Paul
Bourke, whose very efficient 2D
FFT source code is used here.
3.
WARNINGS:
There are several
critical steps to respect while using this software.
You will have to
make sure the inputs parameters respect the
following conditions:
- The Spectral Power Distribution you are using (provided by
your monitor) must correspond to the Judd Specs matrix.
- The Zernike coefficients must match the defined pupil size.
- The input displayed image must have the same spatial resolution
as the computed PSF.
4. ALL THE STEPS:
Besides the input images, the software reads a
Settings.cfg
file, which defines about 50 options (
Comments are given in this
file for each of the 50 options).
The program also reads several intput text files: (
located in
the Params directory)
- The screen's Spectral Power
distribution (SPD).
- The Judd51 color matching functions (
,
,
).
- The Judd Specs matrix.
- The Zernike coefficients
modelling the wave aberration (Thibos et al. 2002).
- It can either load the Cones fundamentals
or compute them from Judd51
,
,
.
There are three options for the software's input : (
selected
according
to the 'CONVERT_lsY2RGB' and 'CRTorWAV' options in the Settings.cfg
file)
- Three input images may represent for each pixel, the percentage
of the monitor's guns R, G & B.
- CONVERT_lsY2RGB option set to 0.
- Three input images may be characterized by relative L-cone to
M-cone stimulation [l=L/L+M], relative S-cone stimulation [s=S/(L+M)]
and luminance [Y=L+M] (MacLeod &
Boynton 1979).
- CONVERT_lsY2RGB option set to 1.
- The input images can also be wavelength images, i.e. for a start
wavelength set to 400, a step of 10 and a final wavelength of 750, the
software will read 36 wavelength images.
- CRTorWAV option set to WAV
- The images' names will be 'Name_1.tim', 'Name_2.tim',
... 'Name_36.tim'
You'll first have to download or
create an image.
For testing purpose, we provide here two examples of stimulus files
using
calibration measurements for one of the Shevell lab's monitors:
Warning:
For the first stimulus, the 'CONVERT_lsY2RGB' parameter should be
set to 0 in the Settings.cfg file (the
stimulus is already given in terms
of RGB guns percentage), whereas for the second stimulus, it should be
set to 1 (the program must convert the lsY values onto RGB guns
percentage).
We recommend the NIH's ImageJ software to read and write such
images: http://rsb.info.nih.gov/ij/
('ImageJ' can import and save Text Images, i.e. matrices without
header, it can also split or merge RGB Images, see the README file for more details).
All input images will have to be in the RetImg/build directory.
The 'SAVE_WAV_FILES' option in the Settings.cfg file allows storing
the whole set of wavelength images obtained while converting from lsY
or RGB images.
Note:
The stimulus size (in degrees of visual angle) depends on both its size
in pixels and on the pupil size.
- A 512x512 stimulus with
a 3.0mm diameter pupil
provides an image size of: 1.956
degrees square.
- A 512x512 stimulus with
a 4.5mm diameter pupil
provides an image size of: 1.304
degrees square.
- A 512x512 stimulus with
a 6.0mm diameter pupil
provides an image size of: 0.978
degrees square.
The FFT source code used here only supports square images of size 2^n
(i.e. 256x256, 512x512 or 1024x1024 pixels).
We recommend using a 512x512 pixels stimulus as 1024x1024 uses far more
computing resources and requires a huge
amount of hard disk space to store outputs.
Mac
OS X instructions: (if you want to modify the code, we
suggest using XCode)
- Open a Terminal window (Terminal usually is in the Utilities
folder of the Application
folder)
- Download and unzip the Ret-Img.tgz
package in your Applications folder
- tar -xvzf
~/Applications/Ret-Img.tgz
- Download and unzip the above TestImages
in the build directory of the Ret-Img folder
- tar -xvzf
~/Applications/Ret-Img/build/TestImageR.tim.tgz
- tar -xvzf
~/Applications/Ret-Img/build/TestImageG.tim.tgz
- tar -xvzf
~/Applications/Ret-Img/build/TestImageB.tim.tgz
- Go to the Ret-Img/build directory
- cd
~/Applications/Ret-Img/build/
- Compile the package :
- > gcc -o Ret-Img
../main.cpp -lstdc++
- Launch the program :
- You can specify up to 9 parameters in the command line:
- > ./Ret-Img
<imageName> <imageSize> <StartWavelength>
<Steps> <EndWavelength> <PupilSize>
<FocusWavelength> <Frequency(For Sinewaves)>
<ZernikeCoefficients>
- > ./Ret-Img
TestImage 512 400 10 750 3.0 550 0 ZernikeCoefs_3.0
- Or the software will read default input parameters from the Settings.cfg file by launching the program
without arguments:
Linux/Unix
instructions:
Instructions are the same. You probably know where the terminal
is, and you surely have
gcc installed.
You can use an Integrated Development environment (IDE) such as
Kdevelop or
Anjuta or you can use
whatever text editor you want and compile with a command
line as given above.
Windows
(98/2000/XP):
Either import these .cpp and .h files into commercial
software such as Microsoft Visual c++, use some free
software which runs gcc, (such as devc++, check
here), or use
gcc with
Cygwin.
5.
MORE DETAILS:
- Readme.Software (Ret-Img)
- Check out the main Formulas
- Readme.Software
(CreateStimulus)
- For a few of the other softwares given in the Downloads section,
the command line argument -h
may
provide the arguments.
( i.e. >./FitOnSquare
-h )
If the images quality is poor, check
out the
PDF (Note
however that this file is pretty big ! ~9 MBytes).
6.
DOWNLOADS:
Retinal image
software |
Related Code
Readme |
Parameters
used in the Shevell Lab. : Readme |
Mac OS X: (Xcode)
Windows: (Dev-cpp)
Linux:
(kdevelop)
|
Mac OS X:
|
Alternate parameters:
|
7. LINKS:
8. QUESTIONS
OR SUGGESTIONS:
9.
REFERENCES:
Thibos
& Bradley, Modeling
the Refractive and Neuro-Sensor Systems of the Eye, Chapter 4 of VISUAL INSTRUMENTATION:
Optical Design and Engineering Principles In: Mouroulis, P. (Ed.),
Optical Design for Visual Instrumentation New York: McGraw-Hill (pp.
101-159), 1999.
Smith, V. C. & Pokorny, J. (1975).
Spectral sensitivity of the foveal cone photopigments between 400 and
500 nm. Vision Research, 15, 161-171.
MacLeod,
D. I. A. & Boynton, R.
M. (1979). Chromaticity diagram showing cone excitation by stimuli of
equal luminance. Journal of the Optical Society of America, 69.
1183-1185.
Thibos, L. N., Hong, X., Bradley, A. Cheng,
X. (2002). Statistical variation of aberration structure and image
quality in a normal population of healthy eyes. Journal of the Optical
Society of America A, 19(12), 2329-2348.
/***************************************************************************
-------------------
Last modification : March 10th 2005
Florent Autrusseau
email : Florent.Autrusseau@univ-nantes.fr
-------------------
***************************************************************************/