1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
# CCDRED Data Structures and Definitions
# The CCD structure: This structure is used to communicate processing
# parameters between the package procedures. It contains pointers to
# data, calibration image IMIO pointers, scaling parameters, and the
# correction flags. The corrections flags indicate which processing
# operations are to be performed. The subsection parameters do not
# include a step size. A step size is assumed. If arbitrary subsampling
# is desired this would be the next generalization.
define LEN_CCD 75 # Length of CCD structure
# CCD data coordinates
define CCD_C1 Memi[$1] # CCD starting column
define CCD_C2 Memi[$1+1] # CCD ending column
define CCD_L1 Memi[$1+2] # CCD starting line
define CCD_L2 Memi[$1+3] # CCD ending line
# Input data
define IN_IM Memi[$1+4] # Input image pointer
define IN_C1 Memi[$1+5] # Input data starting column
define IN_C2 Memi[$1+6] # Input data ending column
define IN_L1 Memi[$1+7] # Input data starting line
define IN_L2 Memi[$1+8] # Input data ending line
define IN_NSEC Memi[$1+71] # Number of input pieces
define IN_SEC Memi[$1+72] # Pointer to sections (c1,c2,l1,l2)xn
# Output data
define OUT_IM Memi[$1+9] # Output image pointer
define OUT_C1 Memi[$1+10] # Output data starting column
define OUT_C2 Memi[$1+11] # Output data ending column
define OUT_L1 Memi[$1+12] # Output data starting line
define OUT_L2 Memi[$1+13] # Output data ending line
define OUT_SEC Memi[$1+73] # Pointer to sections (c1,c2,l1,l2)xn
# Zero level data
define ZERO_IM Memi[$1+14] # Zero level image pointer
define ZERO_C1 Memi[$1+15] # Zero level data starting column
define ZERO_C2 Memi[$1+16] # Zero level data ending column
define ZERO_L1 Memi[$1+17] # Zero level data starting line
define ZERO_L2 Memi[$1+18] # Zero level data ending line
# Dark count data
define DARK_IM Memi[$1+19] # Dark count image pointer
define DARK_C1 Memi[$1+20] # Dark count data starting column
define DARK_C2 Memi[$1+21] # Dark count data ending column
define DARK_L1 Memi[$1+22] # Dark count data starting line
define DARK_L2 Memi[$1+23] # Dark count data ending line
# Flat field data
define FLAT_IM Memi[$1+24] # Flat field image pointer
define FLAT_C1 Memi[$1+25] # Flat field data starting column
define FLAT_C2 Memi[$1+26] # Flat field data ending column
define FLAT_L1 Memi[$1+27] # Flat field data starting line
define FLAT_L2 Memi[$1+28] # Flat field data ending line
# Illumination data
define ILLUM_IM Memi[$1+29] # Illumination image pointer
define ILLUM_C1 Memi[$1+30] # Illumination data starting column
define ILLUM_C2 Memi[$1+31] # Illumination data ending column
define ILLUM_L1 Memi[$1+32] # Illumination data starting line
define ILLUM_L2 Memi[$1+33] # Illumination data ending line
# Fringe data
define FRINGE_IM Memi[$1+34] # Fringe image pointer
define FRINGE_C1 Memi[$1+35] # Fringe data starting column
define FRINGE_C2 Memi[$1+36] # Fringe data ending column
define FRINGE_L1 Memi[$1+37] # Fringe data starting line
define FRINGE_L2 Memi[$1+38] # Fringe data ending line
# Trim section
define TRIM_C1 Memi[$1+39] # Trim starting column
define TRIM_C2 Memi[$1+40] # Trim ending column
define TRIM_L1 Memi[$1+41] # Trim starting line
define TRIM_L2 Memi[$1+42] # Trim ending line
# Bias section
define BIAS_C1 Memi[$1+43] # Bias starting column
define BIAS_C2 Memi[$1+44] # Bias ending column
define BIAS_L1 Memi[$1+45] # Bias starting line
define BIAS_L2 Memi[$1+46] # Bias ending line
define BIAS_SEC Memi[$1+74] # Multiple bias sections
define READAXIS Memi[$1+47] # Read out axis (1=cols, 2=lines)
define CALCTYPE Memi[$1+48] # Calculation data type
define NBADCOLS Memi[$1+49] # Number of column interpolation regions
define BADCOLS Memi[$1+50] # Pointer to col interpolation regions
define NBADLINES Memi[$1+51] # Number of line interpolation regions
define BADLINES Memi[$1+52] # Pointer to line interpolation regions
define OVERSCAN_VEC Memi[$1+53] # Pointer to overscan vector
define DARKSCALE Memr[P2R($1+54)] # Dark count scale factor
define FRINGESCALE Memr[P2R($1+55)] # Fringe scale factor
define FLATSCALE Memr[P2R($1+56)] # Flat field scale factor
define ILLUMSCALE Memr[P2R($1+57)] # Illumination scale factor
define MINREPLACE Memr[P2R($1+58)] # Minimum replacement value
define MEAN Memr[P2R($1+59)] # Mean of output image
define COR Memi[$1+60] # Overall correction flag
define CORS Memi[$1+61+($2-1)] # Individual correction flags
# Individual components of input, output, and bias section pieces.
define IN_SC1 Memi[IN_SEC($1)+4*$2-4]
define IN_SC2 Memi[IN_SEC($1)+4*$2-3]
define IN_SL1 Memi[IN_SEC($1)+4*$2-2]
define IN_SL2 Memi[IN_SEC($1)+4*$2-1]
define OUT_SC1 Memi[OUT_SEC($1)+4*$2-4]
define OUT_SC2 Memi[OUT_SEC($1)+4*$2-3]
define OUT_SL1 Memi[OUT_SEC($1)+4*$2-2]
define OUT_SL2 Memi[OUT_SEC($1)+4*$2-1]
define BIAS_SC1 Memi[BIAS_SEC($1)+4*$2-4]
define BIAS_SC2 Memi[BIAS_SEC($1)+4*$2-3]
define BIAS_SL1 Memi[BIAS_SEC($1)+4*$2-2]
define BIAS_SL2 Memi[BIAS_SEC($1)+4*$2-1]
# The correction array contains the following elements with array indices
# given by the macro definitions.
define NCORS 10 # Number of corrections
define FIXPIX 1 # Fix bad pixels
define TRIM 2 # Trim image
define OVERSCAN 3 # Apply overscan correction
define ZEROCOR 4 # Apply zero level correction
define DARKCOR 5 # Apply dark count correction
define FLATCOR 6 # Apply flat field correction
define ILLUMCOR 7 # Apply illumination correction
define FRINGECOR 8 # Apply fringe correction
define FINDMEAN 9 # Find the mean of the output image
define MINREP 10 # Check and replace minimum value
# The following definitions identify the correction values in the correction
# array. They are defined in terms of bit fields so that it is possible to
# add corrections to form unique combination corrections. Some of
# these combinations are implemented as compound operations for efficiency.
define O 001B # overscan
define Z 002B # zero level
define D 004B # dark count
define F 010B # flat field
define I 020B # Illumination
define Q 040B # Fringe
# The following correction combinations are recognized.
define ZO 003B # zero level + overscan
define DO 005B # dark count + overscan
define DZ 006B # dark count + zero level
define DZO 007B # dark count + zero level + overscan
define FO 011B # flat field + overscan
define FZ 012B # flat field + zero level
define FZO 013B # flat field + zero level + overscan
define FD 014B # flat field + dark count
define FDO 015B # flat field + dark count + overscan
define FDZ 016B # flat field + dark count + zero level
define FDZO 017B # flat field + dark count + zero level + overscan
define QI 060B # fringe + illumination
|