The image polar_0d_1s_9_redbias.fits will be used as the origin coordinate system. I've already determined the offsets from this origin for the other two 0d 1s images: Name: x: y: shifted image: polar_0d_1s_9_redbias.fits 0 0 polar_0d_1s_10_redbias.fits -0.5 0.1 polar_0d_1s_10_shifted.fits polar_0d_1s_11_redbias.fits -0.2 0.4 polar_0d_1s_11_shifted.fits Now, to find the offsets for the 45d set: IDL> fits_read, 'polar_0d_1s_9_redbias.fits', p0_0 IDL> fits_read, 'polar_45d_1s_14_redbias.fits', p45_0 IDL> .run shift_div_graph % Procedure was compiled while active: SHIFT_DIV_GRAPH. Returning. % Compiled module: SHIFT_DIV_GRAPH. IDL> shift_div_graph, p45_0, p0_0, pn, .5, 1.1, xrange=[0,1339], yrange=[0,1299], scale=.5 Mean, Max, Min, StdDev 0.808978 176.029 -124.021 0.296564 It looks like: polar_45d_1s_15_redbias.fits -1 1 but it could use some further refinement Let's take a look at the 90d images seems to be in the neighborhood of polar_90d_1s_19_redbias.fits 2 3 ------------------------------------------------------ IDL> fits_read, 'polar_0d_1s_mean_aligned.fits', p0 IDL> fits_read, 'polar_45d_1s_mean_aligned.fits', p45 IDL> fits_read, 'polar_90d_1s_mean_aligned.fits', p90 IDL> p45sh = shift_im_cbc(p45,-1,1) IDL> p90sh = shift_im_cbc(p90,2,3) IDL> polarization_map45, p0, p45sh, p90sh, p_angle, p_fraction, Ip, Iu % Compiled module: POLARIZATION_MAP45. % Program caused arithmetic error: Floating divide by 0 IDL> p_degs = 180D*p_angle / !DPI IDL> fits_write, 'polarization_1s_angle_map_1.fits', p_angle IDL> fits_write, 'polarization_1s_angle_map_1_deg.fits', p_degs IDL> fits_write, 'polarization_1s_fraction_map_1.fits', p_fraction IDL> polarization_fraction_maps45, p0, p45sh, p90sh, p_fract3, Iu3, Ip3