• No results found

Preliminaries

In document Malware variant detection (Page 143-148)

La imagen al límite de difracción obtenida con el arreglo experimental de la figura 21, tenía aberraciones de orden superior inducidas por el paso del láser por las lentes. En esta misma figura también se observa como la imagen no es un punto, sino que presenta estructura debido a las aberraciones de alto orden y a la difracción que es muy notoria por la alta coherencia de esta fuente de luz. En la imagen corregida con menor turbulencia (figura 22), se aprecia cómo se corrige el cambio de coordenadas del objeto (corrección de aberración tip-tilt), pero la imagen no logra ser puramente

puntual, demostrándonos que este sistema de óptica adaptativa no es capaz de co- rregir aberraciones de orden superior. A medida que aumentamos las revoluciones por minuto del espejo giratorio disminuimos el tiempo de coherencia y la imagen corre- gida se hace cada vez más ancha, hasta llegar al punto de darnos una imagen más “aberrada” que la imagen sin corrección. En la figura 25 el espejo gira a 1000 RPM lo que equivale a 60 microsegundos de tiempo de coherencia. A esta velocidad de giro la turbulencia es mucho más rápida que el sistema de corrección, y así, cuando el al- goritmo calcula el desplazamiento y envía la señal al espejo piezoeléctrico la imagen ya se habrá movido a otro punto, provocando el resultado observado.

Las imágenes mostradas en las figuras 29, 31 y 33 son el resultado de la suma de varias exposiciones en la cámara científica. En la figura 29 tenemos una estrella cuyo ancho es de 1.72 segundos de arco y al corregir con el sistema tip tilt el ancho se

redujo 0.49 segundos de arco y las cuentas pasaron de 100 mil a casi 140 mil dando una razón de Strehl de 0.68. Las estrellas binarias de la figura 31, nos muestran como el traslape entre las gaussianas de cada estrella es menor cuando se corrige con el sistematip-tilt. Este efecto se aprecia mejor cuando comparamos ambos perfiles en la

figura 32. Una posible estrella binaria se observa en la figura 33. Los perfiles en Y nos dejan ver que la cola izquierda de las gaussianas no cae como se esperaría, pareciera traslapada con otra gaussiana. Cuando superponemos los perfiles en la figura 34, en el pixel 10 del eje X y para el caso de la imagen corregida con el sistema tip-tilt, se

aprecia una gaussiana más pequeña que se traslapa con la principal.

Para que el sistema de óptica adaptativa corrija a una frecuencia mayor o igual a 200 Hz se deben usar estrellas guía de magnitud igual o menor a 7. Para magnitudes

mayores el tiempo de exposición de la cámara rápida deberá ser mayor a 5 milise- gundos, lo que mermará la frecuencia de corrección del sistema. La magnitud límite a la cual el sistema mejora la imagen dependerá de las condiciones deseeing de cada

noche de observación.

Las imágenes obtenidas en el OAN-SPM con el sistema corrector tip-tilt nos mues-

tran que efectivamente la máxima intensidad de cada imagen rápida en la cámara de corrección está siendo desplazada de nuevo al centro de referencia, aumentando las cuentas y disminuyendo el ancho de las estrellas. El próximo paso es probar el sistema en objetos extendidos que tengan una estrella guía con una magnitud igual o menor a 7.

El telescopio de 84 cm presentó aberraciones tales como astigmatismo debido a sus componentes ópticas. El astigmatismo era visible al momento de encontrar el foco óptimo del telescopio. Estas aberraciones, producidas por el sistema y no por la at- mósfera, provocan que eltip-tilt contribuya en menor medida a las deformaciones del

frente de onda y a su vez que la corrección con este diseño de óptica adaptativa de bajo orden sea menor de lo que se esperaría al tener sólo aberraciones producidas por la atmósfera.

Probar el sistema de corrección tip-tilt montado en una mesa óptica sobre el teles-

copio de 84 cm permitió realizar mejoras en el diseño y hacer pruebas con nuevos elementos ópticos, tales como filtros astronómicos anchos y angostos. Otro aspecto técnico que se pudo notar al observar la imagen directa con la cámara rápida, es que el movimiento de la cúpula afecta al telescopio, esto es, el telescopio no está comple- tamente aislado del edificio. Estas vibraciones del telescopio aportan una turbulencia extra a las imágenes de larga exposición.

Para que este instrumento sea usado por cualquier usuario del OAN-SPM se necesi- tará crear una interfaz gráfica y escribir un reporte técnico del funcionamiento tanto del correctortip-tilt como de dicha interfaz.

ya que éste cuenta con un sistemapush-pull de bolsas de aire en el espejo primario,

capaz de corregir aberraciones ópticas de orden superior como astigmatismo y coma que son propias del telescopio (i.e. no asociadas a la atmósfera).

Literatura citada

Born, M. y Wolf, E. (1959). Principles of optics. Cambridge University Press.

Buffington, A., Crawford, F., Muller, R., y Orth, C. (1977). First observatory results with an image-sharpening telescope. Journal of the Optical Society of America, Vol. 67,

Issue 3, p.304.

Christou, J. (1991). Image quality, tip-tilt correction, and shift-and-add infrared ima- ging. IOP Science, 103, 667.

Diolaiti, E., Ragazzoni, R., y Tordi, M. (2001). Closed loop performance of a layer- oriented multi-conjugate adaptive optics system. Astronomy and Astrophysics, Vo-

lume 372, Number 2.

Esposito, S., Tozzi, A., Ferruzzi, D., Carbillet, M., Riccardi, A., Fini, L., Verinaud, C., Ac- cardo, M., Brusa, G., Gallieni, D., Biasi, R., Baffa, C., Biliotti, V., Foppiani, I., Puglisi, A., Ragazzoni, R., Ranfagni, P., Stefanini, P., Salinari, P., Seifert, W., y Storm, J. (2003).

First-light adaptive optics system for large binocular telescope. Proc. SPIE 4839,

Adaptive Optical System Technologies II.

Gilmozzi, R. y Spyromilio, J. (2007). The European extremely large telescope (E-ELT).

The Messenger, 127(11), 3.

Hardy, J., Lefebvre, J., y Koliopoulos, C. (1977). Real-time atmospheric compensation.

Journal of the Optical Society of America, Vol. 67, Issue 3, p.360.

Kolmogorov, N. (1941a).Dissipation of energy in the locally isotropic turbulence. Com-

ptes Rendus de l’Académie des Sciences de l’URSS. 32: 16–18.

Kolmogorov, N. (1941b). The local structure of turbulence in incompressible viscous fluid for very large Reynold’s numbers. Comptes Rendus de l’Académie des Sciences

de l’URSS. 30: 301–305.

Linfoot, E. y Wolf, E. (1953). Diffraction Images in Systems with an Annular Aperture.

Proc. Phys. Soc. B 66 145.

López, J., Bringas, V., Cuevas, S., Díaz, J., Eikenberry, S., Espejo, C., Estrada, R., Flores- Meza, R., Fuentes, F., Garzón, F., Hammersley, P., Montoya, J., Prieto, A., Sánchez, B., Toral, R., y Watson, A. (2006). FRIDA: integral-field spectrograph and imager for the adaptive optics system of the Gran Telescopio Canarias. Proc. SPIE 6269, Ground-

based and Airborne Instrumentation for Astronomy, 62693R.

Mávita, L. (2011). Corrector de la inclinación del frente de onda (tip/tilt) para el teles- copio de 2.1 m del Observatorio Astronómico Nacional de San Pedro Mártir (Tesis de Maestría). Centro de Investigación Científica y de Educación Superior de Ensenada.

Noll, J. (1976).Zernike polynomials and atmospheric turbulence. Journal of the Optical

Society of America, Vol. 66, Issue 3, p.20.

Ojeda, D. (1994). Propuesta de un sistema de óptica adaptiva para telescopios de 2 a 6 metros (Tesis de Maestría). Centro de Investigación Científica y de Educación

Superior de Ensenada.

Owens, J. C. (1967). Optical Refractive Index of Air: Dependence on Pressure, Tempe- rature and Composition. Applied Optics, Vol. 6, No. 1.

Penndor, R. (1955). Tables of the Refractive Index for Standard Air and the Rayleigh Scattering Coefficient for the Spectral Region between 0.2 and 20.0 μ and Their Application to Atmospheric Optics. Journal of the optical society of America, Vol. 47,

No. 2.

Rigaut, F., Salmon, D., Arsenault, R., Thomas, J., Lai, O., Rouan, D., Véran, J., Gigan, P., Crampton, D., Fletcher, M., Stilburn, J., Boyer, C., y Jagourel, P. (1998). Performance of the Canada-France-Hawaii Telescope Adaptive Optics Bonnette. Publications of

the Astronomical Society of the Pacific, 110:152–164.

Rousset, G., Lacombe, F., Puget, P., Gendron, E., Arsenault, R., Kern, P., Rabaud, D., Madec, P., Hubin, N., Zins, G., Stadler, E., Charton, J., Gigan, P., y Feautrier, P. (2000).

Status of the VLT Nasmyth adaptive optics system (NAOS). Proc. SPIE 4007, Adaptive

Optical Systems Technology.

Sandler, D., Stahl, S., Angel, J., Lloyd-Hart, M., y McCarthy, D. (1994). Adaptive optics for diffraction-limited infrared imaging with 8-m telescopes. Journal of the Optical

Society of America A Vol. 11, Issue 2, pp. 925.

Schöck, M., Els, S., Riddle, R., Skidmore, W., Travouillon, T., y Blum, R. (2009). Thirty Meter Telescope Site Testing I: Overview. Publications of the Astronomical Society of

the Pacific, 121, 384-395.

Shack, V. (1971). Production and use of a lenticular Hartmann screen. Journal of the

Optical Society of America. Ramada Inn, Tucson, Arizona. 61 (5): 656.

Tatarski˘ı, V. (1961). Wave Propagation in a Turbulent Medium. University of Michigan:

McGraw-Hill Books.

Tyson, R. (2011). Principles of adaptative optics. Taylor and Francis Group.

Valdivieso, I. (2016). Imágenes con resolución mejorada usando óptica adaptativa tip- tilt (Tesis de Maestría). Universidad Nacional Autónoma de México.

Walker, M. (1984). High quality astronomical sites around the world. IN: Workshop on

Site Testing for Future Large Telescopes, La Silla, Chile, October 4-6, 1983, Procee- dings (A84-48071 23-89). Garching, West Germany, European Southern Observatory, 1984, p. 3-21; Discussion, p. 21-23.

Wizinowich, P., Acton, D., Shelton, C., Stomski, P., Gathright, J., Ho, K., Lupton, W., Tsu- bota, K., Lai, O., Max, C., Brase, J., An, J., Avicola, K., Olivier, S., Gavel, D., Macintosh, B., Ghez, A., y Larkin, J. (2000). First Light Adaptive Optics Images from the Keck II Telescope: A New Era of High Angular Resolution Imagery. Publications of the

Astronomical Society of the Pacific, 112: 315-319.

Wizinowich, P., Mignant, D. L., Bouchez, A., Campbell, R., Chin, C., Contos, A., van Dam, M., Hartman, S., Johansson, E., Lafon, R., Lewis, H., Stomski, P., Summers, D., Brown, C., Danforth, P., Max, C., y Pennington, M. (2006).The W. M. Keck Observatory Laser Guide Star Adaptive Optics System: Overview. Publications of the Astronomical

Society of the Pacific, 118:297–309.

Zernike, F. (1934). Diffraction theory of the knife-edge test and its improved form, the phase-contrast method. Monthly Notices of the Royal Astronomical Society, Vol. 94,

Anexo A

En este anexo se muestra el algoritmo creado para llevar a cabo la corrección de las aberraciones atmosféricas tipotip-tilt. El algoritmo fue escrito en Python y es una

interfaz entre la cámara rápida (cámara de corrección) y el espejo piezoeléctrico.

from pymba import * import numpy as np import cv2 import time import matplotlib.pyplot as plt import spidev spi = spidev.SpiDev() spi.open(0,0)

spi.max_speed_hz = 20000 ### 20 KHz funciona bien spi.mode = 0

spi.bits_per_word = 8 with Vimba() as vimba:

######### Iniciamos camara ######### system = vimba.getSystem() system.runFeatureCommand("GeVDiscoveryAllOnce") c0 = vimba.getCamera(camera_ids[0]) c0.openCamera() c0.PixelFormat = ’Mono8’ c0.AcquisitionMode = ’Continuous’ c0.BinningHorizontal = 1 c0.BinningVertical = 1 #c0.Height = c0.HeightMax #c0.Width = c0.WidthMax c0.Height = 100 c0.Width = 100 c0.SyncOutSelector = ’SyncOut1’ c0.SyncOutSource = ’Exposing’

c0.TriggerSource = ’FixedRate’ c0.ExposureTimeAbs = 2000

print (’Maximo FPS = ’,c0.AcquisitionFrameRateLimit) c0.AcquisitionFrameRateAbs = c0.AcquisitionFrameRateLimit c0.Gain = 0 frame = c0.getFrame() frame.announceFrame() c0.startCapture() framecount = 0 droppedframes = []

######### Parametros fisicos del arreglo experimental ######### dist_ccd = 150 ## Dist. entre espejo tip-tilt y CCD de correccion. dist_ccd = dist_ccd*0.001 ## La pasamos a mm.

tam_pixel = 3.7 ## Tamaño del pixel.

tam_pixel = tam_pixel*0.000001 # Lo pasamos a um.

phi_rad = np.arctan(tam_pixel/dist_ccd) #Tamaño del pixel en radianes print(’El pixel mide %s radianes’ %(str(phi_rad)))

pix_grados = ((phi_rad*180)/np.pi)*2 ## Tamaño del pixel en grados. volt_grado_x = 23.27 ## Volts para inclinar espejo un grado en eje X. volt_grado_y = 17.5 ## Volts para inclinar espejo un grado en eje Y. Vx_pix = pix_grados*volt_grado_x ## Volts para inclinar espejo un pixel. Vy_pix = pix_grados*volt_grado_y ## Volts para inclinar espejo un pixel. print Vx_pix, Vy_pix, pix_grados

######### Voltajes para el DAC MAX532 #########

volt_ref = 9.75 ## Volt referencia para DAC. Error < 1 mV. d_paso = volt_ref*(1.0/4096) ## Resolucion de voltaje.

######### Tomamos 20 imagenes y calculamos centro de referencia ######### ######### Ponemos el espejo en el centro, voltaje volt_ref/2 #########

img_num = 20

data_centros = np.zeros((img_num,4)) c0.runFeatureCommand("AcquisitionStart") contador_c = 0

######### Inicializacion del DAC, volt=volt_ref/2 ######### Vx = volt_ref/2.0 ## Voltaje en eje x

Vy = volt_ref/2.0 ## Voltaje en eje y

num_paso_A = Vx/d_paso ## 0-->0V, 4096-->max_volt_ref num_paso_B = Vy/d_paso

num_paso_A = int(num_paso_A) ## Sin decimales porque son pasos discretos num_paso_B = int(num_paso_B)

a0 = num_paso_A b0 = num_paso_B

a0_bin = ’{0:012b}’.format(a0) ## Convierte num_paso a binario 12 bits. b0_bin = ’{0:012b}’.format(b0)

a0_list = list(a0_bin) ## Convierte binario a lista. b0_list = list(b0_bin)

a = [0]*8 ## Crea vector vacío de longitud 8. b = [0]*8

c = [0]*8

for i in range(0,8): ## Guarda los MSB del DACB en el vector a. a[i] = b0_list[i]

j = 0

for i in range(8,12): ## Guarda LSB de DACB en primeros 4 espacios de b. b[j] = b0_list[i]

j += 1

for i in range(0,4): ## Guarda MSB de DACA en ultimos 4 espacios de b. b[j] = a0_list[i]

j += 1 k = 0

for i in range(4,12): ## Guarda los LSB del DACA en el vector c. c[k] = a0_list[i]

k += 1

a_string = ’’.join(a) ## Convierte lista en string. b_string = ’’.join(b)

c_string = ’’.join(c)

a_int = int(a_string,2) ## Convertimos string en entero b_int = int(b_string,2)

c_int = int(c_string,2)

######### SPI RaspberryPi ######### #Most significant 8 bits for DACB# value1 = a_int

#Less significant 4 bits for DACB and Most significant bits for DACA# value2 = b_int

# Less significant 8 bits for DACA# value3 = c_int

kk = [0]*3 # Creamos un vector de ceros de 1x3. kk[0] = value1

kk[1] = value2 kk[2] = value3

enviar2 = spi.xfer2(kk) #([data],speed_hz,delay_usec,bits_per_word) ####################################################################### i = 0

while True: time.sleep(0.1)

######### DAC con voltajes en el centro volt_ref/2 ######### Vx = volt_ref/2 ## Voltaje en eje x.

Vy = volt_ref/2 ## Voltaje en eje y. num_paso_A = Vx/d_paso num_paso_B = Vy/d_paso num_paso_A = int(num_paso_A) num_paso_B = int(num_paso_B) a0 = num_paso_A b0 = num_paso_B a0_bin = ’{0:012b}’.format(a0) b0_bin = ’{0:012b}’.format(b0) a0_list = list(a0_bin) b0_list = list(b0_bin) a = [0]*8

b = [0]*8 c = [0]*8 for k in range(0,8): a[k] = b0_list[k] j = 0 for k in range(8,12): b[j] = b0_list[k] j += 1 for k in range(0,4): b[j] = a0_list[k] j += 1 h = 0 for k in range(4,12): c[h] = a0_list[k] h += 1 a_string = ’’.join(a) b_string = ’’.join(b) c_string = ’’.join(c) a_int = int(a_string,2) b_int = int(b_string,2) c_int = int(c_string,2) ###### SPI RaspberryPi ###### value1 = a_int value2 = b_int value3 = c_int kk = [0]*3 kk[0] = value1 kk[1] = value2 kk[2] = value3 enviar2 = spi.xfer2(kk) ####################################################################### frame.queueFrameCapture() frame.waitFrameCapture()

frame_data = frame.getBufferByteData() img = np.ndarray(buffer=frame_data,

dtype=np.uint8,

shape=(frame.height,frame.width,1)) blurred = cv2.GaussianBlur(img, (9, 9), 0)

thresh = cv2.threshold(blurred, 80, 255, cv2.THRESH_BINARY)[1] M = cv2.moments(thresh)

if M["m00"] ==0:

print("No hay imagen") #i = 0 cX_ref = 0 else: cX_ref = int(M["m10"]/M["m00"]) cY_ref = int(M["m01"]/M["m00"]) cX_ref = round(cX_ref) cY_ref = round(cY_ref) data_centros[i,0] = cX_ref data_centros[i,1] = cY_ref k = cv2.waitKey(1) if k == 0x1b: cv2.destroyAllWindows() break i += 1 if i == img_num: break promX_ref = 0 promY_ref = 0 for i in range(0,len(data_centros)): promX_ref = promX_ref + data_centros[i,0] promY_ref = promY_ref + data_centros[i,1]

promX_ref = promX_ref/img_num #Posicion en X del centro de referencia promY_ref = promY_ref/img_num #Posicion en Y del centro de referencia promX_ref = round(promX_ref)

promY_ref = round(promY_ref)

np.savetxt(’Referencias.txt’, X = data_centros, fmt = ’%f’) c0.runFeatureCommand("AcquisitionStop")

######### Loop calculo de desplazamiento y volt correccion ######### volt_c_X = volt_ref/2 volt_c_Y = volt_ref/2 X_desp1 = 0 Y_desp1 = 0 #num_paso_A = volt_c_X/d_paso #num_paso_B = volt_c_Y/d_paso contador = 0 elapsed = 0 tiempo = 0 c0.runFeatureCommand("AcquisitionStart") while True: start = time.clock() frame.queueFrameCapture() frame.waitFrameCapture() frame_data = frame.getBufferByteData() img = np.ndarray(buffer=frame_data, dtype=np.uint8, shape=(frame.height,frame.width,1)) blurred = cv2.GaussianBlur(img, (9,9), 0)

thresh1 = cv2.threshold(blurred, 80, 255, cv2.THRESH_BINARY)[1] M = cv2.moments(thresh1)

if M["m00"] ==0:

print("No hay imagen") else: cX1 = int(M["m10"]/M["m00"]) cY1 = int(M["m01"]/M["m00"]) k = cv2.waitKey(1) if k == 0x1b: cv2.destroyAllWindows()

break

cX1 = round(cX1) cY1 = round(cY1)

#Desplazamiento en pixeles en X respecto a referencia# X_desp1 = cX1 - promX_ref

X_desp1 = int(X_desp1)

#Voltaje de correccion en Y#

volt_c_X = volt_c_X + (X_desp1*Vx_pix) if 0<=volt_c_X<=volt_ref:

num_paso_A = volt_c_X/d_paso num_paso_A = int(num_paso_A) a0 = num_paso_A

else:

print("Volt_X fuera de limite: ",volt_c_X)

#Desplazamiento en pixeles en Y respecto a referencia# Y_desp1 = cY1 - promY_ref

Y_desp1 = int(Y_desp1)

#Voltaje de correccion en Y#

volt_c_Y = volt_c_Y + (Y_desp1*Vy_pix) print("Volt Y: ",volt_c_Y)

print("Volt X: ",volt_c_X) if 0<=volt_c_Y<=volt_ref:

num_paso_B = volt_c_Y/d_paso ## 0 corresponde a 0V y 4096 al maximo voltaje de referencia

num_paso_B = int(num_paso_B) ## Redondeamos para no tener decimales porque son pasos discretos b0 = num_paso_B

else:

print("Volt_Y fuera de limite: ",volt_c_Y) num_paso_A = int(num_paso_A) num_paso_B = int(num_paso_B) a0 = num_paso_A b0 = num_paso_B a0_bin = ’{0:012b}’.format(a0) b0_bin = ’{0:012b}’.format(b0)

a0_list = list(a0_bin) b0_list = list(b0_bin) a = [0]*8 b = [0]*8 c = [0]*8 for i in range(0,8): a[i] = b0_list[i] j = 0 for i in range(8,12): b[j] = b0_list[i] j += 1 for i in range(0,4): b[j] = a0_list[i] j += 1 k = 0 for i in range(4,12): c[k] = a0_list[i] k += 1 a_string = ’’.join(a) b_string = ’’.join(b) c_string = ’’.join(c) a_int = int(a_string,2) b_int = int(b_string,2) c_int = int(c_string,2) value1 = a_int value2 = b_int value3 = c_int kk = [0]*3 kk[0] = value1 kk[1] = value2 kk[2] = value3 enviar2 = spi.xfer2(kk) stop = time.clock()

tiempo = stop-start c0.runFeatureCommand("AcquisitionStop") c0.endCapture() c0.revokeAllFrames() c0.closeCamera() spi.close()

Anexo B

El controlador del piezoelectrico corrige la histéresis natural que estos materiales presentan. En las figuras 37 y 38 se observan los resultados obtenidos al caracterizar la histéresis del espejotip-tilt en ambos ejes.

También se caracterizó la fidelidad del espejo para volver al mismo punto, movien- do el reflejo de un láser a puntos aleatorios en un CCD y repitiéndolo 100 veces. Los resultados se muestran en la figura 40.

Figura 37.Histéresis de los piezoeléctricos del espejotip-tilt en el eje X. Se registró el desplazamiento

de un láser por un CCD moviendo el espejo en la dirección X y después en la dirección -X. El voltaje (representado en el eje horizontal) va desde el mínimo (0 V) hasta el máximo (5 V) que se puede enviar desde la computadora.

Figura 38.Histéresis de los piezoeléctricos del espejotip-tilten el eje Y. Se usó el mismo procedimiento

Figura 39.El espejo se mueve a puntos aleatorios a una frecuencia de 100 Hz. El proceso se repitió 100 veces. En cada punto se muestra el voltaje aplicado al espejo (enviado desde la computadora) y el error en pixeles al posicionarse 100 veces en el mismo punto.

Anexo C

Figura 40.Diagrama electrónico del sistema computadora de control - convertidor D/A. Se necesita un inversor de voltaje ya que el convertidor D/A necesita un voltaje de referencia negativo.

Anexo D

Figura 41. Campo de estrellas de aproximadamente 250 segundos de arco en el eje horizontal y 370

segundos de arco en el eje vertical. Los número rojos indican la razón de Strehl obtenida para esa estrella al corregir la imagen con el sistematip-tilt y los números negros representan la razón de Strehl de cada

In document Malware variant detection (Page 143-148)