Imágenes de los archivos SDSS y HST
Transcripción
Imágenes de los archivos SDSS y HST
Imágenes de los archivos SDSS y HST L. Gutiérrez Instituto de Astronomía, UNAM Imágenes del HST Tercera Parte (cont.) y otros tópicos Imágenes de la WFPC2. Trabajando con los waiver FITS Estos son los archivos _c0f, _c1f. Consideremos la imagen ub960601m_c0f.fits La comparemos con la imagen ub960601m_c0m.fits ecl> catfits ub960601m_c0f.fits ecl> catfits ub960601m_c0m.fits ecl> catfits ub960601m_c0f.fits 0 ub960601m_c0f ub960601m_cvt.c0h 800x800x4 32F 1 TABLE ub960601m_cvt.c0h.tab 56Fx4R Imágenes de la WFPC2. Trabajando con los waiver FITS Podemos ver el contenido de la tabla con ecl> tprint ub960601m_c0f.fits[1] ecl> catfits ub960601m_c0m.fits 0 ub960601m_c0m ub960601m_c0f.fits 16 1 IMAGE SCI 1 800x800 32 2 IMAGE SCI 2 800x800 32 3 IMAGE SCI 3 800x800 32 4 IMAGE SCI 4 800x800 32 Imágenes de la WFPC2. Trabajando con los waiver FITS Para desplegarlas: ecl> disp ub960601m_c0m.fits[4] ecl> disp ub960601m_c0f.fits[0][*,*,4] Debemos recrear el archivo GEIS multigrupo. Para recrear el archivo GEIS ecl> set imtype=hhh Esto indica al IRAF que escriba los archivos en formato GEIS: ecl> strfits *c0f.fits “” xdim=yes oldiraf=yes Esto genera los archivos .hhh y hhd. Podemos desplegar los nuevos archivos GEIS: ecl> disp u39s0405r.c0h[1] Imágenes de la WFPC2. Trabajando con los waiver FITS Para generar un mosaico: ecl> wmosaic ub960601m.c0h ub960601m_c0h_mos Para desplegar el mosaico: ecl> disp ub960601m_c0h_mos.hhh 1 El WMOSAIC hace el mosaico corrigiendo por distorsión y por offset y rotación de la cámara usando los coeficientes de R. Gilmozzi y S. Ewald. Para armar el mosaico también es posible usar la tarea WFPC2_CLEAN (requiere, además, del paquete XDIMSUM). ecl> wfpc2_clean ub960601m_c0f.fits ub960601m_c0f_mos.fits Para desplegarlo: ecl> disp ub960601m_c0f_mos.fits 1 Imágenes de la WFPC2. Trabajando con los waiver FITS Usando la tarea MULTIDRIZZLE (se requiere instalar el PYRAF) es posible corregir también el ligero desplazamiento ”térmico” de los chips (aunque algunas veces no queda bien) usando los archivos más actualizados con los mapas de corrección de distorsión En este caso, habrá que actualizar los keywords IDCTAB y OFFTAB en el encabezado de las imágenes Para afinar la corrección, puede usarse la tarea WFPC2_SHIFT. ecl> wfpc2_shift nombre ccd xshift yshift Ver para el multidrizzle: http://www.stsci.edu/hst/wfpc2/analysis/WFPC2_drizzle_crsplitPC.html Imágenes de la WFPC2. Un ejemplo Con imágenes de muy bajo brillo superficial, habrá que tener cuidado con el fringing. Imágenes de la WFPC2. Un ejemplo Con imágenes de muy bajo brillo superficial, habrá que tener cuidado con el fringing. Otros tópicos de interés Para combinar un conjunto de imágenes es necesario alinearlas primero correctamente. Una tarea que simplifica el proceso es “alinea.cl”. Declarar la tarea externamente: task alinea = ”directorio_donde_esta/alinea.cl” Alineemos las imágenes fpC001332g40066.fit, fpC 001332r40066.fit y fpC001332i40066.fit Primero las despleguemos en frames diferentes del DS9. Usando el ”blink” observemos que estan desalineadas Escojamos tres estrellas bien definidas y no saturadas. Tecleemos en IRAF ”alinea” y sigamos las instrucciones Otros tópicos de interés Algo que puede ser de mucho interés es la confección de un perfil de brillo superficial. Hagamos un ejemplo: Vamos a usar la tarea ELLIPSE de IRAF. Calculemos primero el fondo del cielo y restemoslo de la imagen. Pongamos ahora los parámetros adecuados a ELLIPSE con ecl> epar ellipse Otros tópicos de interés Image Reduction and Analysis Facility PACKAGE = isophote TASK = ellipse input = input image name output = output table name (dqf = .c1h) data quality file name or extension (inellip= ) table with input ellipses for nofit mode (geompar= ) geometric parameters (pset) (control= ) algorithm control parameters (pset) (samplep= ) sampling control parameters (pset) (magpar = ) magnitude scale parameters (pset) (interac= no) interactive ? (device = stdgraph) graphics output device (icomman= ) image cursor (gcomman= ) graphics cursor (masksz = 5) pixel square mask size (`m' cursor key) (region = yes) region masking mode ? (memory = yes) memoryintensive (versus diskintensive) ? (verbose= yes) list summary at STDOUT ? (mode = al) Otros tópicos de interés Image Reduction and Analysis Facility PACKAGE = isophote TASK = geompar (x0 = 1703) initial isophote center X (y0 = 457.35) initial isophote center Y (ellip0 = 0.32) initial ellipticity (pa0 = 64.9) initial position angle (degrees) (sma0 = 100.) initial semimajor axis lenght (minsma = 3.) minimum semimajor axis lenght (maxsma = 1200.) maximum semimajor axis lenght (step = 0.05) sma step between successive ellipses (linear = no) linear sma step ? (maxrit = INDEF) maximum sma lenght for iterative mode (recente= no) allows finding routine to recenter x0y0 ? (xylearn= no) updates pset with new x0y0 ? (physica= no) physical coordinate system ? (mode = al) Otros tópicos de interés Image Reduction and Analysis Facility PACKAGE = isophote TASK = controlpar (conver = 0.05) convergency criterion (maximum harmonic amplitud (minit = 10) minimun no. of iterations at each sma (maxit = 100) maximun no. of iterations at each sma (hcenter= yes) hold center fixed ? (hellip = yes) hold ellipticity fixed ? (hpa = yes) hold position angle fixed ? (wander = INDEF) maximum wander in successive isophote centers (maxgerr= 0.5) maximum acceptable gradient relative error (olthres= 0.5) object locator's ksigma threshold (soft = no) soft stop ? (mode = al) Otros tópicos de interés Image Reduction and Analysis Facility PACKAGE = isophote TASK = samplepar (integrm= median) area integration mode (usclip = 3.) sigmaclip criterion for upper deviant points (lsclip = 3.) sigmaclip criterion for lower deviant points (nclip = 3) number of sigmaclip iterations (fflag = 0.75) acceptable fraction of flagged data points (sdevice= none) graphics device for ploting intensity samples (tsample= none) tables with intensity samples (absangl= yes) sample angles refer to image coord. system ? (harmoni= none) optional harmonic numbers to fit (mode = al) Otros tópicos de interés Image Reduction and Analysis Facility PACKAGE = isophote TASK = magpar (mag0 = 0.) magnitude of reference source (refer = 1.) intensity of reference source (zerolev= 0.) intensity of zero (bias) level (mode = al) Otros tópicos de interés Ahora en IRAF: ecl> ellipse n4531rss.fit el_n4531rss.tab ecl> tprint el_n4531rss.tab el_n4531rss.txt Ahora corregimos los INDEF de la tabla y podemos graficar: Para calcular el punto cero: t_exp = 53.907456 zp = aa kk*airmass + 2.5*alog10(t_exp*(0.396^2)) Otros tópicos de interés Ahora en IRAF: ecl> ellipse n4531rss.fit el_n4531rss.tab ecl> tprint el_n4531rss.tab el_n4531rss.txt Ahora corregimos los INDEF de la tabla y podemos graficar: Otros tópicos de interés Para inferir el nivel de confianza: Sea mu_c el brillo superficial donde al sumar una sigma la diferencia en brillo superficial sea 0.2 mag. mu_c = 2.5 log(I_c) + zp mu_c^+ = 2.5 log(I_c + sigma) +zp I_c = k*sigma mu_c mu_c^+ = 2.5 log(k/(k+1)) = 0.2 ==> log(k/(k+1)) = 0.2/2.5 = 0.08 ==> 1+1/k = 10^0.08 ==> k = 1/((10^0.08) 1 ) = 4.94 Otros tópicos de interés Algunos filtros simples: Filtro de mediana: ecl> median n1068rss.fit n1068rss_median.fit 9 9 Filtro de Laplace: ecl> laplace ngc2985_acs_f814w_sm.fits ngc2985_acs_f814w_sm_lap.fits Filtro gaussiano: ecl> gauss ngc2985_acs_f814w_sm.fits ngc2985_acs_f814w_sm_gauss.fits 8 Unsharp mask: ecl> umask.cl # Instalarlo o usarlo como una tarea externa Otros tópicos de interés Filtro de Butterworth: butterfilter.pro function butterfilter, image, cutoff=cutoff, orden=orden ; image = Es el arreglo bidimensional donde esta la imagen. ; cutoff = Es la frecuencia de corte del filtro ; Usa el algorithmo BUTTERWORTH de IDL 7.0 if (NOT keyword_set(cutoff)) then cuttoff=9 if (NOT keyword_set(orden)) then orden=1 filtro = BUTTERWORTH (SIZE(image, /dim), cutoff=cutoff) freqImage = FFT(image, 1) filtrada = FFT (freqImage * filtro, 1) return, real_part(filtrada) Otros tópicos de interés Filtro de Hanning (f_hanning.pro) function f_hanning, image tam = size(image, /dimensions) freqImage = shift(FFT(image, 1), tam(0)/2, tam(1)/2) ; Usa una mascara de Hanning para filtrar el ruido mask = HANNING(tam[0], tam[1]) maskedImage = freqImage*mask filtrada = real_part(FFT(SHIFT(maskedImage, (tam[0]/2), (tam[1]/2)), /INVERSE)) return, filtrada end Otros tópicos de interés Filtro de Butterworth (freqfilter.pro) function freqfilter, image, perc=perc, display=display, orden=orden ; autor: Leonel Gutierrez ; Este es un filtro pasabajos (lowpass) de Butterworth, de uso general ; image = Es el arreglo bidimensional donde esta la imagen. ; perc = Es el porcentaje que dejaremos pasar de las ; frecuencias referido al ; intervalo total de frecuencias en la imagen. ; La formula general es = 1 / [1 + C(R/Ro)^2n], donde ; C es 1.0 o 0.414; define la magnitud del filtro donde ; R = Ro; R es la imagen de frecuencias y Ro es la frecuencia de corte ; nominal del filtro representado en pixeles; ; n es el orden del filtro (aquí usaremos 1) Otros tópicos de interés Filtro de Butterworth (cont.) if (NOT keyword_set(perc)) then perc=10 if (NOT keyword_set(orden)) then orden=1 C = 1.0d n = orden tam = size(image, /dimensions) Ro = float(tam(0)) * perc/100.0 end freqImage = FFT(image, 1) filtro = 1.0 / ( 1.0d + C*((DIST(tam(0))/Ro)^(2*n)) ) filtrada = real_part(FFT(freqImage * filtro, 1)) return, filtrada Otros tópicos de interés Otro filtro pasabajos: Filtro coseno function filtro_coseno, imi, r1, r2 m=mean(imi) im=imim n=size(im,/dimension) tam=n(0)/2 kkkk = make_array(tam,/float,value=1.0) if(r2 gt r1) then begin kkkk[r1:*] = 0.0 kk = indgen(r2r1)*!pi/(r2r1) kkk = 0.5*cos(kk)+0.5 kkkk[r1:r21]=kkk[0:*] endif Otros tópicos de interés Otro filtro pasabajos: Filtro coseno (cont.) filtro = hace_funcion_2d(kkkk) filtro = SHIFT(filtro, tam, tam) tr=fft(im,1) tr=tr*filtro nim=real_part(fft(tr,1))+m return, nim end Otros tópicos de interés Para hacer binning por software: pro binning, ifile,ofile, binx, biny ; Hace el binning de la imagen ifile y escribe el resultado en ofile a = readfits(ifile+".fits") imsize = size(a, /dimensions) imsize(0) = imsize(0) / binx imsize(1) = imsize(1) / biny print, "Nuevo tama&o: ", imsize(0), " x ",imsize(1) b= frebin(a,imsize(0),imsize(1), /total) writefits, ofile+".fits", b end Otros tópicos de interés Para calcular el espectro de potencias de una imagen function espectro_potencias_prom, aa, apod = apod a=aamean(aa) ; resta la media n=size(a) ; print, "tamanio: ", n(1) if (keyword_set(apod)) then begin wincos = win_cos(n(1), n(1), apod) t=fft(a*wincos,1) ; calcula la TF endif else begin t=fft(a,1) ; calcula la TF endelse s=abs(t)^2. ; calcula el modulo cuadrado s = shift(s, n(1)/2, n(1)/2) ; y lo desplaza vect = findgen(n(1)*10)/(20.0) ; un vector con 20 veces el radio espectro = fltarr(n(1)*10) Otros tópicos de interés Para calcular el espectro de potencias de una imagen (cont.) for j=0,(n(1)*10 1) do begin ; para todo el vector de distancia val = 0.0 for i=0,359 do begin ; hara un barrido de 360 grados x = vect(j) * cos(i*!pi/180.0) + (n(1)/2.0) y = vect(j) * sin(i*!pi/180.0) + (n(1)/2.0) xp = round(x) & yp = round(y) ; solo valores enteros if(xp lt 0) then xp = 0 ; positivos if(yp lt 0) then yp = 0 if(xp ge n(1)) then xp = n(1) 1 ; no mas grandes que n if(yp ge n(1)) then yp = n(1) 1 val = val + s(xp,yp) ; acumula los valores que endfor ; corresponden a esa distancia Otros tópicos de interés Para calcular el espectro de potencias de una imagen (cont.) espectro(j) = val endfor return,[[vect],[espectro]] end