First-Frame Effect Correction Algorithm (7/16/01)
Note: the following information is intended for the IRAC instrument team
only. If you are not such a person, you should not be reading this. No
guarantees are made as to the applicability of this information to the
real IRAC.
IRAC suffers from a problem called the "first frame effect". Specifically,
there seems to be a bias level offset which varies to a large extent on the
recent read history of the array. A detailed description of this can be
found in
Bill Glaccum's report. This effect can be quite large, especially for
channel 3, where it may reach as many as 300 DN. As a result, it must be
corrected for in order to allow accurate determination of the true
background.
The first frame effect correction seems to depend most strongly on the
amount of time that has passed since the last read of the array. However,
it is not a simple or even montonic function of time. Therefore, we will
correct it using an empirical lookup table approach. The algorithm will
work as follows:
- When correcting a single DCE, when the module is run it queries the
ending time of the previous DCE made with this array. The module can
either make the query itself, or receive it as a command line entry from a
third entity such as the cal server. The ending time can be derived from
the difference between AINTBEG of the current DCE and ATIMEEND of the
previous DCE. This approach currently may fail due to a firmware bug, but
is anticipated to be fixed in a later revision. Alternately, if both DCEs have not yet actually been
downlinked then this value could be approximated by differencing AINTBEG
of the current DCE and the predicted end of the previous DCE based on it's
commanded start time and commanded frame time, which presumably exist in
the SODB.
- Once the delta time has been determined, the module will compute the
correction to be made from a lookup table. This lookup table will be
provided by the instrument team and will consist of a column of times
along with corresponding offsets. For times not explicitly included in the table the
value should be interpolated from the table. There may be multiple tables
per array, corresponding to different combinations of fowler number and
wait time.
- To apply the correction (which may be negative), the offset should be added to every pixel in
the image. In adddition to "value offset" mode, the module should also
allow an optional "image offset" mode, in which the correction factor is used to
scale an input image (also provided by the IT), which is then added to the
DCE being processed. In principle the module could always do the latter,
using a flat input image, but using a constant might save in file-reading
overhead.
This module should be applied to all data. It should appear immediately
after the muxbleed correction.