dorot = 0 k_sx = 1168 k_sy = 918 k_s = strtrim(k_sx, 2)+'x'+strtrim(k_sy, 2) g_sx = 1152 g_sy = 912 g_s = strtrim(g_sx, 2)+'x'+strtrim(g_sy, 2) num = 199 close, 1, 2, 3, 4 IF dorot THEN BEGIN openr, 1, 'filt_k_'+k_s p = assoc(1, intarr(k_sx, k_sy)) ;;; first only the rotation of Continuum ;;; REPEAT 100 TIMES: ;;; I WILL NEVER EVER AGAIN FORGET TO USE INTERPOLATE OR CUBIC WITH ROT!!! openw, 2, 'align_k_tmp' FOR i=0, num-1 DO BEGIN tmp = rot(p(i), 1.16139, 1, 0, 0, /piv, cubic=-.6) writeu, 2, tmp(19:*, 0:k_sy-19-1) ENDFOR close, 2 close, 1 ENDIF openr, 1, 'align_k_tmp' k = assoc(1, intarr(k_sx-19, k_sy-19)) openr, 2, 'filt_g_'+g_s g = assoc(2, intarr(g_sx, g_sy)) sx = 1024 sy = 880 s_s = strtrim(sx, 2)+'x'+strtrim(sy, 2)+'x'+strtrim(num, 2) spawn, 'touch align_g_'+s_s+' align_k_'+s_s openu, 3, 'align_g_'+s_s gg = assoc(3, intarr(sx, sy)) openu, 4, 'align_k_'+s_s kk = assoc(4, intarr(sx, sy)) ;;; aligned manually gx0 = 122 gy0 = 12 kx0 = 5 ky0 = 7 box = 7 gg(0) = g(gx0:gx0+1023, gy0:gy0+879, 0) tmp = frac_shift(k(0), 0, 0.242) kk(0) = tmp(kx0:kx0+sx-1, ky0:ky0+sy-1) show, gg(0), 1, sc=.5 show, kk(0), 2, sc=.5 show, gg(0)+kk(0), 3, sc=.5 FOR i=1, 198 DO BEGIN ;;; compute reference rs = (i-4) > 0 re = i-1 ref = intarr(sx, sy) FOR j=rs, re DO ref = ref+gg(j) FOR j=rs, re DO ref = ref+kk(j) wset, 3 tvscl, rescale(ref, sc=.5) ;;; find optimal g, including subpixelshift. sh = shc(smooth(ref, box, /edge), $ smooth(g(gx0:gx0+sx-1, gy0:gy0+sy-1, i), box, /edge), /int, /filt) print, 'g:', sh gx = gx0-sh(0) gy = gy0-sh(1) gxf = nint(gx) gyf = nint(gy) tmp = frac_shift(g(i), gxf-gx, gyf-gy) gg(i) = tmp(gxf:gxf+sx-1, gyf:gyf+sy-1) wset, 1 tvscl, rescale(gg(i), sc=.5) xyouts, 10, 10, /dev, i ref = ref+gg(i) ;;; same for k; subpixel not needed - is handeled by remap_image. sh = shc(smooth(ref, box, /edge), $ smooth(k(kx0:kx0+sx-1, ky0:ky0+sy-1, i), box, /edge), /filt) print, 'k:', sh kx = kx0-sh(0) ky = ky0-sh(1) k1 = k(kx:kx+sx-1, ky:ky+sy-1, i) k1 = remap_image(gg(i), k1, 32, 24, range=3, smooth=7) kk(i) = k1 wset, 2 tvscl, rescale(k1, sc=.5) xyouts, 10, 10, /dev, i ENDFOR close, 1 close, 2 close, 3 close, 4 stop tt = lonarr(199) openr, 1, 'times_'+strtrim(num, 2) readu, 1, tt close, 1 hr = tt/3600 mn = (tt MOD 3600)/60 sc = tt MOD 60 tt = nnumber(hr, 2)+":"+nnumber(mn, 2)+":"+nnumber(sc, 2) sx2 = sx/2/16*16 sy2 = sy/2/16*16 mov = intarr(sx2, sy2, num) openr, 1, 'align_g_'+s_s g = assoc(1, intarr(sx, sy)) FOR i=0, num-1 DO mov(*, *, i) = rebin(g(0:2*sx2-1, 0:2*sy2-1, i), sx2, sy2) close, 1 mm1 = scale_array(mov) show, mm1(*, *, 0), /cent FOR i=0, num-1 DO BEGIN tv, mm1(*, *, i) clock, tt(i), /dev, siz=75, pos=[8, 8] mm1(*, *, i) = tvrd() ENDFOR write_mpeg, '../MPEG/AR9669_19oct01_g_small.mpg', mm1, $ tmp='/data/pit/tmp/mpgtmp/' openr, 1, 'align_k_'+s_s g = assoc(1, intarr(sx, sy)) FOR i=0, num-1 DO mov(*, *, i) = rebin(g(0:2*sx2-1, 0:2*sy2-1, i), sx2, sy2) close, 1 mm1 = scale_array(mov) show, mm1(*, *, 0), /cent FOR i=0, num-1 DO BEGIN tv, mm1(*, *, i) clock, tt(i), /dev, siz=75, pos=[8, 8] mm1(*, *, i) = tvrd() ENDFOR write_mpeg, '../MPEG/AR9669_19oct01_k_small.mpg', mm1, $ tmp='/data/pit/tmp/mpgtmp/' END