aboutsummaryrefslogtreecommitdiff
path: root/pkg/proto/doc/imalign.hlp
blob: bf666b6cd0888e1824bfe57e7d0651184a1e59ea (plain) (blame)
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
.help imalign Feb90 proto
.ih
NAME
imalign -- register a list of images 
.ih
USAGE
imalign images coords
.ih
PARAMETERS
.ls images
The list of images to be shifted and trimmed.  This list should
normally contain the \fIreference\fR to include its borders in the
calculation of the trim section as well as to preserve the image
alignment following trimming.
.le
.ls coords
A text file containing the coordinates of the registration objects to
be centered in each image, one object per line with the x and y
coordinates in columns one and two respectively.  These coordinates
should be measured in the frame of the reference image.
.le
.ls reference
The reference image to which the \fIimages\fR will be aligned.  Note
that \fIreference\fR is a query parameter to IMALIGN, but a hidden
parameter to IMCENTROID.
.le
.ls shifts = ""
A text file containing the initial estimate for each image of the
shift in each axis relative to the \fIreference\fR image.  These
estimates are used to modify the coordinates of the registration
objects prior to centering.  The format of the file is one image per
line with the (fractional) x and y shifts in columns one and two
respectively.  The sense of the shifts is such that:
\fIXshift=Xref-Xin\fR and \fBYshift=Yref-Yin\fR.  If \fIshifts\fR
is null, a coarse centering pass will be made to attempt to determine
the initial shifts.
.le
.ls prefix = "rg"
The output images will have root names that are prefixed by this
string.  If \fIprefix\fR is null, the input \fIimages\fR will be
overwritten.
.le
.ls shiftimages = yes
If \fIshiftimages\fR is yes, the IMSHIFT task will be used to align the
images.  If \fIshiftimages\fR is no, the images will not be aligned but
only centered.
.le
.ls trimimages = yes
If \fItrimimages\fR is yes, the output images will be trimmed to
include only the region over which they all overlap.  The
trim section that is actually used may differ slightly from that
reported by IMCENTROID.  A correction may be applied to compensate for
the boundary extension "contamination" due to multi-pixel (e.g.,
\fIinterp_type\fR = poly5) interpolation near the edges of the images.
.le
.ls verbose = yes
Print the centers, shifts, and trim section?
.le
.ls boxsize = 7
The size in pixels of the box to use for the final centering, during
which all the sources in \fIcoords\fR are recentered in each image
using the initial estimate of the relative shift for each image.
Care should be taken to choose an appropriate value for this parameter,
since it is highly data dependent.
.le
.ls bigbox = 11
The size in pixels of the box to use for coarse centering.  The coarse
pass through the centering algorithm is made with the box centered at
the nominal position of the first source in the coordinate list.
Coarse centering is performed only if \fIshifts\fR is null.
Care should be taken to choose an appropriate value for this parameter,
since it is highly data dependent.  Large value should be suspect until
the final results are checked to see that the centering did not converge
on the wrong coordinates, although the usual result for an inappropriate
\fIbigbox\fR size is that the algorithm fails to converge and the task
aborts.
.le
.ls negative = no
Are the features negative?
.le
.ls background = INDEF
The absolute reference level for the marginal centroid calculation.
If \fIbackground\fR is INDEF, this is set to the mean value (between the
thresholds) of the individual sources.
.le
.ls lower = INDEF
The lower threshold for the data.  Individual pixels less than this
value will be given zero weight in the centroids.
.le
.ls upper = INDEF
The upper threshold for the data.  Individual pixels greater than this
value will be given zero weight in the centroids.
.le
.ls niterate = 2
The maximum number of centering iterations to perform.  The centering
will halt when this limit is reached or when the desired \fItolerance\fR
is achieved.
.le
.ls tolerance = 0
The tolerance for convergence of the centering algorithm.  This is the
integral shift of the centering box from one iteration to the next.
.le
.ls interp_type = "spline3"
The interpolation function type for the IMSHIFT task.  See the help
page for IMSHIFT for more information.
.le
.ls boundary_type = "constant"
The boundary extension type for the IMSHIFT task.  See the help page
for IMSHIFT for more information.
.le
.ls constant = 0.
The constant to be used if \fIboundary_type\fR is "constant".  See the
help page for IMSHIFT for more information.
.le
.ih
DESCRIPTION
IMALIGN measures the X and Y axis shifts between a list of images,
\fIimages\fR and a reference image, \fIreference\fR, that is, the
shifts that should be added to the input image coordinates to convert
them into the reference coordinates.  By default it will apply the
measured shifts and then trim the \fIimages\fR to consistent borders.
The task is meant to address the class of two dimensional image
registration problems in which the images have the same pixel scale,
are shifted relative to each other by simple translations and contain
enough high signal/noise, point-like sources in common to form good
average positions.  The basic operation of the task is to find centers
for the list of registration objects or features in the coordinate
frame of each image and then to subtract the corresponding centers
found in the reference image.  The shifts of the registration objects
are averaged for each image.

IMALIGN is a simple script front end for IMCENTROID, IMSHIFT, and
IMCOPY (which is used to perform the trimming).  Other scripts
can be constructed for similar purposes.  You can type:  `help
imalign option=source' to view the script.

A list of the X and Y coordinates of the registration objects should be
provided in the parameter \fIcoords\fR.  The registration objects do not
all have to be common to each frame, rather only that subset of the
objects that is contained within the bounds of a given image will be
centered.  Only the objects that are common to both the given image and
the reference will be used to calculate the shifts.  The coordinates
should be measured in the frame of the \fIreference\fR.  If coarse
centering is to be done, which is to say, if no \fIshifts\fR file is
provided, then the first registration source should be separated from
other sources by at least the maximum expected relative shift.

An initial estimate of the shifts between each of the \fIimages\fR and
the \fIreference\fR is required for the centering algorithm (a marginal
centroid) to work.  This estimate can be explicitly supplied in a file
\fIshifts\fR (\fIXshift=Xref-Xin\fR and \fIYshift=Yref-Yin\fR) or can
be generated from the images by measuring the relative shift of the
first source listed in \fIcoords\fR for each image.  This coarse
centering pass requires that the first source be detached from other
sources and from the border of each image by a distance that is at
least the maximum shift between the \fIreference\fR and an image.  This
source should be point-like and have a high signal to noise ratio.  The
value of the \fIbigbox\fR parameter should be chosen to include the
location of the source in each of the images to be aligned while
excluding other sources.  Large values of \fIbigbox\fR should be held
suspect until the final convergence of the centering algorithm is
verified, although given a small value for the \fItolerance\fR, the
quality of the final centers is independent of the estimate for the
initial shifts.  Better convergence may also be obtained by increasing
the \fIniterate\fR parameter, although the default value of three
should work for most cases.  \fINiterate\fR should be kept small to
avoid runaway.

The \fIboxsize\fR parameter controls the size of the centering box for
the fine centering passes and should be chosen so as to exclude sky
background and other sources while including the wings of the point
spread function.  The sense of the shifts that are calculated is
consistent with the file supplied to the \fIshifts\fR parameter and
with that used with the IMSHIFT task.

If \fIshiftimages\fR is yes the images will actually be shifted using
the IMSHIFT task.  Note that if \fIinterp_type\fR is "nearest" the
effect on the images is the same as if the shifts were rounded to
integral values.  In this case, the pixels will be shifted without
interpolation.  This can be used for data in which it is more important
to preserve the pixel values than it is to achieve perfect
registration.

If \fItrimimages\fR is yes, the output images will be trimmed to
include only the region over which they all overlap.  The trim section
that is actually used may differ slightly from that reported by
IMCENTROID.  A one or two pixel correction may be applied to each edge
to compensate for the boundary extension "contamination" due to
multi-pixel (e.g., \fIinterp_type\fR = poly5) interpolation near the
edges of the images.

IMALIGN may be used with a set of \fIimages\fR which vary in size.
This can result in vignetting of the calculated overlap region because
of the nature of the IMSHIFT task to preserve the size of an input
image.  To visualize this, imagine a large reference image and a single
small image to be aligned to it, both containing the same registration
object which is at the center of each image.  IMALIGN will cause the
small image to be shifted such that the object is positioned at the same
pixel location as in the reference.  In performing the shift, a large
fraction of the area of the small image may be shifted outside of its
own borders, whereas the physical overlap of the large and small images
includes ALL of the pixels of the small image.  In the case of such
vignetting, IMALIGN will print a warning message and refuse to proceed
with the trimming although the vignetting will occur whether or not the
images are trimmed.  Note that the vignetting will not occur if the
small image is used as the \fIreference\fR.

The vignetting message may also be printed if the \fIimages\fR are all
the same size but the \fIreference\fR is not included in the list.
This will occur if the sense of the measured shifts in a coordinate are
all positive or all negative since in this case the border of the
\fIreference\fR would have provided one of the limits to the trim
section.  The reality of this vignetting depends on your point of view.

Trimming will also not be performed if the entire overlap region vanishes.

Note that many of these difficulties are due to the intrinsically fuzzy
nature of the process of image registration.  This all leads to a few
"rules of thumb":

.nf
    o	Include the \fIreference\fR as one of the \fIimages\fR

    o	Use the smallest image as the \fIreference\fR

    o	Choose the \fIreference\fR such that the \fIimages\fR are
	scattered to either side in the shifts in each axis

    o	Align images that are the same size, OR

    o	Pad dissimilar sized images with blanks to
	the largest size and disable trimming
.fi
.ih
CENTERING ALGORITHM
The algorithm is a "marginal" centroid in which the fit for each axis
is performed separately upon a vector created by collapsing the
centering box perpendicular to that axis.  The centroid is calculated
with respect to the level specified by \fIbackground\fR.  If
\fIbackground\fR is INDEF, the reference level for each source in each
image is the local mean for those pixels that lie between the
\fIlower\fR and \fIupper\fR thresholds.  The thresholds are set to the
local data minimum or maximum if \fIlower\fR or \fIupper\fR,
respectively, are INDEF.  If \fInegative\fR is yes, than the marginal
vector will be inverted before being passed to the centroid algorithm.

The maximum number of centering iterations and the tolerance for
convergence are controlled by \fIniterate\fR and \fItolerance\fR.  Note
that the tolerance is an integer value that represents the maximum
movement of the centering box between two successive iterations.  The
default value of 0 requires that the centroid lie within the center
pixel of the centering box which is \fIboxsize\fR in extent (note that
\fIboxsize\fR must be an odd number).  This should normally be the case
for bright, circularly symmetric point sources in images with a flat
sky background.  If the registration sources are not circular symmetric
try increasing the tolerance gingerly.  A sky level that varies across
the image should be removed before processing.  The centering and
calculation of the shifts may be performed with \fIshiftimages\fR = no
(or directly with IMCENTROID) and the calculated shifts applied to the
images directly with IMSHIFT.
.ih
EXAMPLES
1. Align three images to the first using the list of registration star
coordinates in the file "x1.coords".

.nf
    cl> imalign x1,x2,x3 x1.coords refer=x1
.fi

2. Align a list of images contained in the file "imlist", overwriting the
original images with the shifted and trimmed images:

.nf
    cl> imalign @imlist x1.coords refer=x1 prefix=""
.fi

3. Align the images leaving the output images the same size as the input
images:

.nf
    cl> imalign @imlist x1.coords refer=x1 trimimages-
.fi

4. Perform the centering but not the shifts:

.nf
    cl> imalign @imlist x1.coords refer=x1 shiftimages-
.fi

5. Perform the centering, don't calculate the shifts at all (i.e., don't
supply a reference image):

.nf
    pr> imalign @imlist x1.coords shiftimages-
.fi

6. Take previously measured shifts and apply them directly:

.nf
    pr> imshift @imlist shiftfile=x1.shifts
.fi
.ih
BUGS
The images being shifted must be in the current directory.

The coarse centering portion of the algorithm can be fooled if the
first source on the list is not well separated from other sources, or
if the first source has a low signal to noise ratio, or if there is a
complicated shape to the background.

The task can produce output images that do not contain the entire
overlap region.  This can only occur if the images are of varying sizes.
This behavior is caused by the action of the IMSHIFT task to preserve the
size of an input image, thus implicitly "trimming" the image.  A work
around is to use IMCOPY to place the images into subsections of blank
images that are the size (in each dimension) of the largest image(s)
and use IMALIGN with \fItrimimages\fR set to no.  The borders of the output
images can be trimmed manually.  This is discussed above in more detail.

If \fIimages\fR does not contain the \fIreference\fR and \fItrimimages\fR
is set to yes then the set of shifted and trimmed images may no longer
be aligned to the reference.  This occurs because any place holder
pixels at the bottom and left edges of the images will be trimmed off.
This is also discussed above.
.ih
SEE ALSO
imcentroid, center, imshift, geomap, geotran
.endhelp