PRO stabil_q,llx,lly,pore,scam ; ;procedure para corregir una serie de imagenes tomadas en La Palma, de ;los shift de la imagen producidos por defectos de tracking. ;Each image is aligned with respect to the frame "refima". (This is ;the difference regarding 'stabil_p.pro' where the shifts are cumulative ;and with respect to the 1st image) ; ;Las entradas se dan mediante editor: numero de la imagen inicial, ;numero de la imagen final, dimension de las imagenes, numero de la imagen ;de referencia, delimitacion de la caja para correlar y paths para lectura ;y deposito de imagenes. ; ; ;Este programa es una version del gr.pro solo para shift. ; ;Editado el 12 de Junio de 1995. Introducida la correccion opcional de trend ;en la caja de correlacion el 22 de Febrero de 1994. ; ;Editado por Michal 20 Nov 95 para alinear los subfields de poros: ; ; llx,lly = lower-left corner of stabilized subfield ; pore = pore 'p5' or 'p6' (STRING!!) ; scam = camera 'a' or 'b' (STRING!!) ;--------------------------------------------------------------------------- ; SERIES 23 OF 30Jun95 - REALIGNMENT OF SUBFIELDS P5 and P6 ;definicion de parametros de entrada ninit=1 ;numero de la imagen inicial de la subserie. nfin=291 ;numero de la imagen final de la subserie. n=224 ;dimension x of source image m=224 ;dimension y " " wx=192 ;dimension x of stabilized subfield wy=192 ;dimension y " " ;delimitacion de la caja para correlar con ALIGN_CROSS. Dimensiones ;de la caja = mejor potencias de 2 refima=149 ;reference frame number itrend=0 ;correccion opcional de trend en caja de correlacion= 0 , 1 n1=llx+32-17 ;coordenada x menor de la caja n2=llx+32+127-17 ;coordenada x mayor de la caja m1=lly+32+8 ;coordenada y menor de la caja m2=lly+32+127+8 ;coordenada y mayor de la caja nn=80 ;dimension x de la subcaja a desplazar en la correlacion mm=80 ;dimension y de la subcaja a desplazar en la correlacion ;definicion de los paths st1a=string('im'+scam+'/'+scam+'_'+pore+'.') ;prefijo imagenes entrada st1b=string('im'+scam+'/'+scam+'x_'+pore+'.') ;prefijo imagenes salida ;---------------------------------------------------------------------------- ;prepara arrays para depositar los shifts (x,y), ;asi como las matrices imagen. nnn=nfin-ninit+1 x = fltarr(nnn) y = fltarr(nnn) iimage = intarr(n,m,/nozero) ;lee la imagen de referencia dcn=strtrim(refima,2) print,'Leyendo la imagen de referencia:' print,st1a+dcn openr,unit,st1a+dcn,/get_lun readu,unit,iimage free_lun,unit ima=float(iimage) ima=ima(n1:n2,m1:m2) if itrend eq 1 then ima=ima-sfit(ima,2);corrige de trend ref=ima ;ciclo de lectura de imagenes sucesivas, correccion de shift ;y deposito de la imagen resultante FOR i = ninit,nfin DO BEGIN dcn=strtrim(i,2) print,'Leyendo nueva imagen:' print,st1a+dcn openr,unit,st1a+dcn,/get_lun readu,unit,iimage free_lun,unit image=float(iimage) ii=i-ninit ima=image(n1:n2,m1:m2) if itrend eq 1 then ima=ima-sfit(ima,2);corrige de trend dxy = ALIGN_CROSS(ref,ima,nn,mm) ;proced.lib.OSLO. Uti- ;liza correlacion por Fourier. Da como resultado ;el desplazamiento que hay que darle a 'image' ;para que se superponga a 'ref'. x(ii) = dxy(0) ;shift en x y(ii) = dxy(1) ;shift en y ;corrige de shift image = SHIFT(image,nint(x(ii)),nint(y(ii)));rutina IDL. Solo ;trabaja con shifts = numero entero de pixels (o sea ;que no interpola). Convenio de signos: ;desplaz.dcha = +, desplaz.izq. = -. ;deposita el resultado print,' Escribiendo la imagen resultante' print,st1b+dcn openw,unit,st1b+dcn,/get_lun writeu,unit,nint(image(llx:llx+wx-1,lly:lly+wy-1)) ;subfield free_lun,unit ENDFOR SAVE,x,y,filename='gr_data'+pore+scam+'b' END