| ## Introduction
Glaucoma is an eye disease in which the optic nerve is damaged in a characteristic pattern.
This can permanently damage vision in the affected eye(s) and lead to blindness if left untreated.
Early detection and regular monitoring are essential to
achieve optimal care for glaucoma patients. One important tool
is the visual field (VF) exam, a functional test that is part of the
standard of care for diagnosis and evaluation of glaucoma. It is performed
regularly in the management of glaucoma. While the VF
exam is sensitive to detect and monitor the disease, it is, unfortunately,
subjective, time-consuming and often unreliable. To offset
these limitations, Fourier domain optical coherence tomography
(OCT) has recently been introduced to provide important structural
information about the posterior segment of the eye. This structural
evaluation by OCT has been shown to be objective, efficient, and
reliable. The known anatomic correspondence is that the top part of VF
corresponds to the bottom part of the eye, as scanned by OCT, and vice versa.
In this problem you will be asked to predict VF test result based on OCT macular thickness map.
## Visual Field Map
The VF test maps the patient’s central and peripheral visual function
based on his or her response (e.g., pressing a button) to seeing
a flashing light of varying intensities presented at predetermined
locations. The most common VF test has 54 test locations within
the central 24 degrees of the field of view.
At the conclusion of the exam, the patient’s responses
are analyzed statistically and compared to a normative
database to generate a detailed map (conventionally presented in
units of decibels) noting the areas of VF defect. Locations labeled
with negative values correspond to areas where the patient performed
below the expected norm. The exponential magnitude of
these negative values reflects how far below the norm the patient
performed at the corresponding location. Similarly, VF
locations labeled with positive values correspond to locations where
the patient performed above the expected norm. Each eye is tested
separately, yielding two VF maps for each patient. Only the central
subset of the VF test locations which overlaps with the portion of
the macula captured by the OCT is utilized in our problem. This subset
of VF points, in relationship to the entire 54 locations,
is encircled in green as shown in the figure below. After
excluding the blind spot (blue areas shown in figure), each of these VF
maps contains a total of 34 data points. For convenience, the points are numbered with integers 0 to 33.
## OCT Macular Thickness Map
OCT is an emerging imaging modality based on the principles of
low-coherence interferometry. With spectrometer detection
method and a Fourier transform algorithm, Fourier domain OCT
can perform 26,000 A-scans in the macula in one second. Each map
generated consists of a 6 mm x 6 mm grid centered on
the fovea, with spacing of 0.25–0.5 mm within the grid, and a depth
resolution of 5 μm.
In general, each map consists of a set of points scanned and macula thickness values
at these points.
The figures below show several examples of OCT macular thickness maps. Of those 3 figures, only the leftmost one
corresponds to a healthy patient. The middle OCT is thin for the bottom part of the eye, thus top VF values are expected
to be negative. The rightmost OCT seems to be thin for the whole eye, however you can see that the top part is still thicker
then the bottom one, so this case is similar to the previous one and again only top VF values are expected to be negative.
Some sort of heights normalization may be useful to deal with cases like the last one.
## Task
Your task is to return your best guess for the VF exam result based on the given OCT macular thickness map.
## Implementation
You should implement one method `getVisualFieldMap`, which takes 3 double[]-s
as arguments: **x**, **y** and **h**. They describe the given OCT thickness map. For each i, **x**[i] and **y**[i]
are the coordinates of the point where a scan is done and **h**[i] is the thickness value obtained at this point. Both X and Y coordinates range 0.0 to 6.0 or
-3.0 to 3.0 (depending on a particular test case). The heights are guaranteed to be between -300.0 and 700.0. Too big or too small (including negative) heights
are imaging artifacts (because the eye is curved and the scan is flat, errors can happen at the border).
Your program must return a double[] containing exactly 34 values, where the i-th element is the predicted VF
value at location numbered i. Each returned value must be between -50.0 and 50.0, inclusive.
## Testing and scoring
Your score for a single test case is calculated as follows. If your program doesn't return a double[] containing exactly 34
values in -50..50, the score will be 0. Otherwise let MAE be the mean absolute error between your return
and correct answer. The score will be calculated as 1000.0 - 10.0 * MAE.
Your overall score will simply be the sum of scores on each single test case.
The test data consists of 145 OCT/VF pairs. 56 of them are provided to you for download.
The example tests are chosen uniformly, at random, from these pairs. The folder OCT contains inputs. Each file is in TSV format,
where each line contains 3 tab-separated doubles: x, y and h. The folder VF contains expected answers. Each line of each file contains a single VF value.
The values are listed in the same order as VF locations are numbered.
45 pairs are used for submission tests and remaining 44 pairs are used for system tests. The split of data into training/submission/system tests was made by an expert
in glaucoma. The goal was to present approximately the same ratio of healthy patients and of patients with different kinds of defects within each of these 3 groups.
## Previous research
The described problem was already studied by some scientists. Below you can find links to 3 articles directly related to this problem. You can use this information
to develop/improve your algorithm.
- Coupled parametric model for estimation of visual field tests based on OCT macular thickness maps, and vice versa, in glaucoma care. Tsai A, Caprioli J, Shen LQ.
Med Image Anal. 2012 Jan;16(1):101-13. Epub 2011 May 31. Download.
- Predicting visual function from the measurements of retinal nerve fiber layer structure. Zhu H, Crabb DP, Schlottmann PG, Lemij HG, Reus NJ, Healey PR, Mitchell P, Ho T, Garway-Heath DF. Invest Ophthalmol Vis Sci. 2010 Nov;51(11):5657-66. Epub 2010 May 26.
Download.
- Structure and function in glaucoma: The relationship between a functional visual field map and an anatomic retinal map. Strouthidis NG, Vinciotti V, Tucker AJ, Gardiner SK, Crabb DP, Garway-Heath DF. Invest Ophthalmol Vis Sci. 2006 Dec;47(12):5356-62. Download.
## Additional information
In order to receive the prize money, you will need to fully document the derivation of all parameters internal to your algorithm. If these parameters were obtained from the training data set, you will also need to provide the program used to generate these training parameters. There is no restriction on the programming language used to generate these training parameters. Note that all this data should not be submitted anywhere during the coding phase. Instead, if you win a prize, a TopCoder representative will contact you directly in order to collect this data. |