interferometría digital
TRANSCRIPT
Centro de Investigaciones en Óptica A.C.
Reporte Final de Estancia
Interferometría Digital
Presenta:
Ing. Sotero Ordoñes Nogales
Asesor:
Dr. Manuel Servín Guirado
León, Guanajuato, Junio 2016
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |1
Índice de contenido
1. Introducción ......................................................................................... 2
2. Interferometría de corrimiento de fase ................................................. 3
Ejemplo 1 (Demodulación de patrones de franjas) .................................... 4
Ejemplo 2 (Robustez a ruido) .................................................................... 6
Ejemplo 3 (Supresión de armónicos).......................................................... 8
Método de proyección de franjas ............................................................... 9
Ejemplo 4 (Rechazo de armónicos con datos experimentales) .................. 11
Ejemplo 5 (Patrones RGB) ...................................................................... 13
3. Método de Fourier .............................................................................. 14
Ejemplo 5 (MF con datos sintéticos): ....................................................... 15
Ejemplo 6 (MF con datos reales): ............................................................. 16
4. Desenvolvimiento de fase .................................................................... 17
Desenvolvimiento por integración lineal ................................................... 18
5. Normalización ..................................................................................... 22
6. Co-Faseo ............................................................................................. 25
7. Conclusiones ....................................................................................... 28
8. Referencias .......................................................................................... 28
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |2
1. Introducción El humano por múltiples razones científicas e industriales tiene la necesidad
de utilizar instrumentos para medir propiedades físicas; para comprender la natura-
leza y/o para generar nuevos productos y servicios. En la actualidad, se requiere que
los instrumentos de medida sean cada vez más precisos. De hecho, la óptica viene a
cubrir esa necesidad donde los métodos matemáticos tienen especial importancia.
En el sentido anterior, una aplicación de la óptica es la metrología topográfica
de superficies a escala microscópica. De hecho, la interferometría óptica es la herra-
mienta (en óptica) por excelencia para medir la textura de una superficie, la cual
está basada en el principio de hacer interferir dos haces: uno de referencia y otro con
los datos de la medición.
Los métodos matemáticos en interferometría óptica tienen por objetivo deter-
minar la diferencia de camino óptico contenido en la información de fase del patrón
de franjas obtenido en el experimento. En este sentido, se han desarrollado algoritmos
que permiten recuperar la información correspondiente a la medición a partir de los
interferogramas.
Un patrón de franjas es matemáticamente expresado como
���� = ���� + ���� cos ���� (1)
donde ���� es la luminosidad de fondo, ���� es el contraste de franjas, ���� es la diferencia de camino óptico y � es el vector de posición espacial. De hecho, la infor-mación requerida está contenida en la diferencia de fase, entonces, es deseable deter-
minar dichos valores a partir del modelo mencionado.
En general, el proceso para realizar alguna medición empleando interferome-
tría óptica consta de los siguientes cuatro pasos bien definidos:
1. La adquisición de datos: mediante un interferómetro, proyección de franjas, etc.; en este proceso se obtienen los interferogramas.
2. Demodulación de interferogramas: mediante post-procesamiento en alguna computadora digital o mediante un sistema puramente óptico.
3. Desenvolvimiento de fase: comúnmente el resultado del proceso de demodula-ción es el mapa de fase discontinua en módulo 2�, por lo tanto, se requiere desenvolver para que la función de fase sea continua.
4. Interpretación de datos: se convierte las unidades de fase a las unidades de la medición que se realiza.
El presente reporte tiene por tema principal la demodulación. En este sentido, se
abordan las diversas técnicas que se han desarrollado para extraer la diferencia de
fase ����, que pueden ser agrupadas en aquellas que se basan en la Transformada de
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |3
Fourier y las basadas en el planteamiento de un sistema de ecuaciones que dan origen
a la interferometría de corrimiento de fase.
El resto del presente reporte tiene la siguiente estructura: en la sección 2 se
describe la técnica de interferometría de corrimiento de fase para la demodulación de
interferogramas. El método por transformada de Fourier para demodulación es des-
crito en la sección 3. En la sección 4 se describe el proceso de desenvolvimiento de
fase. En la sección 5 se aborda el tema de normalización de patrones de franjas. En
la sección 6 se describe el método de co-faseo. Finalmente, en la sección 7 se enlistan
las conclusiones principales.
2. Interferometría de corrimiento de fase La técnica conocida como interferometría de corrimiento de fase (PSI, por sus
siglas en inglés) está basada en la idea de plantear un sistema de ecuaciones, el cual
permita determinar la diferencia de fase. Como se observa en la Eq. (1) se tienen tres
incógnitas (�, �, �), entonces se requiere de al menos tres ecuaciones tal que el sistema formado por ellas sea consistente. Para ello se aplica un término de corri-
miento de fase nominal �� (conocido) a cada ecuación, entonces, un sistema con � ecuaciones queda expresado como,
����� = ���� + ���� cos����� + ���� ; � = 1, 2, … , � (2)
Del sistema de ecuaciones anterior se determina la función de fase mediante un algo-
ritmo de tres o cuatro pasos (� = 3 o � = 4, respectivamente) o algún método simi-lar.
Con base en la formulación moderna de algoritmos para interferometría de
corrimiento de fase (PSA), la cual consiste en interpretar el método como un filtro
que al aplicarse al conjunto patrones ��������� ! permite estimar la función de fase
buscada, además es consistente con la teoría de sistemas lineales.
Considere la Transformada de Fourier de un patrón de franjas corrido en fase,
���� = "#��� + $2 %&'#�� − ��� + $2 %)&'#�� + ��� (3)
Cuyo gráfico se muestra en la Figura 1, donde el objetivo es conservar el término $ 2⁄ %&'#�� − ���. Sea ℎ�,� un filtro lineal que cumple con el criterio de cuadratura [1]. Si se aplica el filtro al conjunto de interferogramas se tiene,
��,� ∗ ℎ�,� = . /0��, − 1�!) 0��
(4)
donde ℎ�,� = ∑ /0#�, − 1�!) 0�� , en forma equivalente y por propiedades del espacio
de Fourier se tiene,
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |4
����3��� = $23����%&'#�� ( ��� (5)
Si bien el soporte de ��,� ∗ +�,� es , � 2� ( 1, únicamente se considera el resultado hasta , � � ( 1 para estimar la señal analítica, es decir,
$23����%&' � ��,� ∗ +�,�|5�!) (6)
lo anterior muestra la ecuación general para un PSA lineal [2]. Finalmente, la función
de fase buscada se determina como:
���� � Arg���,� ∗ +�,�|5�!) � � Arg�/��!) �⋯� /!) ��� (7)
donde Arg�⋅� es el argumento del número complejo. Para ejemplificar, consideremos el algoritmo de tres pasos propuesto por
Bruning et al. [3], donde el filtro es definido como,
3;<��� � =1 ( %&>?=1 ( %&�>@>A�? (8)
cuya Función de Transferencia Frecuencial (FTF) se muestra en la Figura 2, se
observa que los espectros en las posiciones (�� y 0 (intensidad de fondo) son elimi-nados. Con base en la formulación general, el algoritmo de tres pasos para �� queda determinado por,
�;B��� ≔ �����%&'D�E� � ����� ( � ��� ( %&>A� ��� � %&>A�F��� �G;B��� � Arg��;B���� (9)
Ejemplo 1 (Demodulación de patrones de franjas) En los ejemplos mostrados se emplearon los algoritmos de tres, cuatro y cinco
pasos cuyas FTF se muestran en las Figura 2-4, cuyas formulaciones matemáticas se
muestran a continuación,
�HB��� ≔ �����%&'D�E� � ����� ( I� ��� ( �F��� � I�;���; �� � �/2 �GHB��� � Arg��HB���� (10)
�KB��� ≔ �����%&'D�E� � ����� ( I2� ��� ( 2�F��� � I2�;��� � �H���; �� � �/2 �GKB��� � Arg��HB���� (11)
Figura 1: Espectro de un patrón de franjas.
Figura 2: FTF del método de tres pasos.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |5
El siguiente código en Matlab® realiza la demodulación con los algoritmos
antes mencionados.
%% crear mapa de fase sintético [X,Y] = meshgrid(1:256); phi = 0.001*((X-127).^2 + (Y-127).^2); %% Algoritmo de tres pasos w0 = 2*pi/3; I0 = 128 + 127*cos(phi + 0*w0); I1 = 128 + 127*cos(phi + 1*w0); I2 = 128 + 127*cos(phi + 2*w0); A_3s = I0 - I1 - exp(1i*w0)*I1 + exp(1i*w0)*I2; % estimar señal analítica phi_3s = angle(A_3s); % estimar función de fase fig_A3s = figure(); imagesc(phi_3s),colormap gray , axis equal , axis off , title( 'Fase estimada algoritmo de 3 pasos \omega_0=2\pi/3 ' ); %% Algoritmo de cuatro pasos w0 = pi/2; I0 = 128 + 127*cos(phi + 0*w0); I1 = 128 + 127*cos(phi + 1*w0); I2 = 128 + 127*cos(phi + 2*w0); I3 = 128 + 127*cos(phi + 4*w0); A_4s = I0 - 1i*I1 - I2 + 1i*I3; % estimar señal analítica phi_4s = angle(A_4s); % estimar función de fase fig_A4s = figure(); imagesc(phi_4s),colormap gray , axis equal , axis off , title( 'Fase estimada algoritmo de 4 pasos \omega_0=\pi/2' ); %% Algoritmo de cinco pasos w0 = pi/2; I0 = 128 + 127*cos(phi + 0*w0); I1 = 128 + 127*cos(phi + 1*w0); I2 = 128 + 127*cos(phi + 2*w0); I3 = 128 + 127*cos(phi + 4*w0); I4 = 128 + 127*cos(phi + 5*w0); A_5s = I0 - 1i*2*I1 - 2*I2 + 1i*2*I3 + I4; % estimar señal analítica phi_5s = angle(A_5s); % estimar función de fase fig_A5s = figure(); imagesc(phi_4s),colormap gray , axis equal , axis off , title( 'Fase estimada algoritmo de 5 pasos \omega_0=\pi/2' );
Figura 3: FTF del método de cuatro pasos.
Figura 4: FTF del método de cinco pasos ro-
busto a error de detuning.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |6
Los resultados obtenidos se muestran en la Figura 7, donde se observa que la
función de fase estimada con los diferentes algoritmos es equivalente. Sin embargo,
los patrones de franjas capturados presentan ruido relacionado intrínsecamente con
el experimento, además, la exactitud no está garantizada en los valores de corri-
miento de fase nominal. En los siguientes apartados se abordan los problemas antes
mencionados.
Ejemplo 2 (Robustez a ruido) Este ejercicio muestra la robustez de un algoritmo a la presencia de ruido en
los datos. Para ello consideramos el algoritmo de tres pasos descrito anteriormente y
un método de seis pasos propuesto por Bruning et al. [3] que es caracterizado como,
3LB��� = M=1 ( %&�0>A�?H
0� (12)
Realizando la convolución con los datos y tomando la Transformada Inversa de Fou-
rier del resultado se obtiene la expresión del algoritmo (cuya FTF se muestra en la
Figura 5),
�LB��� ≔�����%&'D�E�� ����� ( N� ��� ( N�F��� ( �F��� � N�;��� ( O�;��� � N�H���� O�K���;�� � 2� 6⁄ , N � �(1�F ;⁄ , O � �(1� ;⁄ (13)
Figura 5: FTF del algoritmo de seis pasos.
Figura 6: Patrón de franjas base con ruido
gaussiano de fase Q � 0 y S � 0.1.
(a)
(b)
(c)
(d)
Figura 7. Resultados del ejemplo 1, (a) patrón de franjas base, (b)-(d) las funciones de fase estima-
das con cada algoritmo: �;B���, �HB��� y �KB���, respectivamente.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |7
�GLB��� = Arg��LB���� A continuación se muestra el script de Matlab para el ejemplo en cuestión,
%% crear mapa de fase sintético [X,Y] = meshgrid(1:256); phi = 0.001*((X-127).^2 + (Y-127).^2); %% Algoritmo de seis pasos w0 = 2*pi/6; alpha = (-1)^(2/3); betha = (-1)^(1/3); I0 = 128 + 127*cos(phi + 0*w0 + (2*rand(256,256)-1) ); I1 = 128 + 127*cos(phi + 1*w0 + (2*rand(256,256)-1) ); I2 = 128 + 127*cos(phi + 2*w0 + (2*rand(256,256)-1) ); I3 = 128 + 127*cos(phi + 3*w0 + (2*rand(256,256)-1) ); I4 = 128 + 127*cos(phi + 4*w0 + (2*rand(256,256)-1) ); I5 = 128 + 127*cos(phi + 4*w0 + (2*rand(256,256)-1) ); A_6s = I0 – alpha*I1 – alpha*I2 – I2 + alpha*I3 – b etha*I3 ... + alpha*I4 + betha*I5; % estimar señal analítica phi_6s = angle(A_6s); % estimar función de fase fig_A6s = figure(); imagesc(phi_6s),colormap gray , axis equal , axis off , title( 'Fase estimada algoritmo de 6 pasos \omega_0=2\pi/6 ' );
Los resultados se muestran en la Figura 8, donde se observa que el algoritmo
de seis pasos atenúa considerablemente el ruido de fase que el método de tres pasos.
Cabe mencionar, que ambos algoritmos (tres y seis pasos) están basados en el método
de los mínimos cuadrados, entonces, las funciones de fase estimadas (Figura 8) son
la mejor solución en el sentido de mínimos cuadrados. Esto implica, que la mayor
cantidad de información redundante del algoritmo de seis pasos permite una mejor
estimación a la fase real.
Una figura de mérito empleada para indicar la robustez al ruido es la ganancia
de la relación señal a ruido (UV !⁄ ) que está determinada como, UV !⁄ ���� = |3����|F
12� W 3���3∗���X)X Y� (14)
(a)
(b)
Figura 8: Comparación de robustez a ruido dos algoritmos: tres y cuatro pasos, (a) fase recuperada
con tres pasos �;<���, (b) fase estimada con seis pasos �L<���.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |8
donde el 3∗��� es el complejo conjugado [2]. Con base en la ecuación anterior la ganancia de los algoritmos (de este ejemplo) son 3 y 6 respectivamente. Evidente-
mente la ecuación anterior nos permite determinar el valor �� tal que su UV !⁄ sea máxima.
Ejemplo 3 (Supresión de armónicos) Este ejercicio muestra la robustez de un algoritmo a la presencia de armónicos.
Se emplean el algoritmo de cuatro pasos descrito anteriormente y el siguiente:
3��� � Z1 ( %&>[FZ1 ( %&�>@>A�[;�� � � 2⁄ (15)
Tomando la transformada inversa de Fourier de los filtros anteriores aplicados a los
datos se obtienen los algoritmos,
�HB\��� ≔ �����%&'D�E�� ����� ( 2� ��� ( %&>A� ��� � �F��� � 2%&>A�F��� ( �;��� �GHB\��� � ArgZ�HB\���[
(16)
En la Figura 9 se muestra la respuesta a amónicos de los métodos en cuestión.
Se observa que el algoritmo [3] es afectado por los armónicos [-7,-3,5,9]; los cuales no
son deseados. Por su parte, el método [2] es afectado por los armónicos [-10,-7-6,-3,-
2,5,6,9,10]; entonces éste último es más robusto a armónicos.
A continuación se muestra el script de Matlab para el ejemplo en cuestión,
%% Algoritmo de cuatro pasos robusto a variaciones de fondo w0 = pi/2; % Cargar datos I0 = im2double(imread( 'I0.bmp' )); I1 = im2double(imread( 'I1.bmp' )); I2 = im2double(imread( 'I2.bmp' ));
(a)
(b)
Figura 9: Respuesta de los algoritmo a la presencia de armónicos, (a) respuesta a armónicos del
algoritmo [3] y (b) respuesta a armónicos del algoritmo propuesto en [2].
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |9
I3 = im2double(imread( 'I3.bmp' )); A_4s_a = I0 – 2*I1 – exp(1i*w0)*I1 + I2 ... + 2*exp(1i*w0)*I2 – I3; % estimar señal analítica phi_4s_a = angle(A_4s_a); % estimar función de fase fig_A4s_a = figure(); imagesc(phi_4s_a),colormap gray , axis equal , axis off , title( 'Fase estimada algoritmo de 4s_a pasos \omega_0=\pi /2' );
En la Figura 10 se muestra la estimación de los algoritmos mencionados, se
observa que la estimación �GH<]��� no contiene las componentes de baja frecuencia lo cual es debido que a las características del método y por lo tanto, las funciones de
fase estimadas (con cada algoritmo) no son equivalentes como se puede observar en
la Figura 10(d) donde se observa que los términos de pistón son distintos y se han
filtrado algunas componentes de baja frecuencia deseadas [Figura 10(c)].
En la siguiente sección se describe el método de proyección de franjas em-
pleado para la adquisición de datos experimentales. Los datos son empleados para
ejemplos experimentales mostrados más adelante.
Método de proyección de franjas Inicialmente propuesto por Rowe y Welford consiste en proyectar sobre un
objeto patrones de intensidad en forma de franjas, capturar las proyecciones sobre
un objeto, posteriormente, analizar las capturas para determinar las mediciones co-
rrespondientes, como por ejemplo la superficie tridimensional de un objeto [4]. Con
los avances tecnológicos, surge la proyección digital de franjas (DFP, por sus siglas
en inglés) en la cual los patrones son generados digitalmente. La principal ventaja de
(a)
(b)
(c)
(d)
Figura 10: Eliminación de armónicos, (a) patrón de franjas base, (b) fase estimada �GH<��� y (c) fase estimada �GH<]���.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |10
la DFP es la sencillez del arreglo experimental que consta de un proyector comercial,
una cámara CCD y una computadora para el análisis. Las técnicas de DFP se pueden
dividir por el número de capturas: de una y de múltiples capturas. Las de una captura
permiten medir objetos en movimiento (rapidez). Mientras que las de múltiples per-
miten obtener una mayor resolución.
En las técnicas que requieren múltiples capturas se pueden emplear algoritmos
de interferometría de corrimiento de fase para la demodulación de la misma. Así se
pueden emplear patrones de tipo sinusoidal, triangular o trapezoidal que son proyec-
tados en forma secuencia y son capturados por la CCD, donde no es estrictamente
necesario que la cámara y el proyector estén sincronizados temporalmente. Las de-
formaciones que experimentan los patrones, debido a la topografía del objeto, con-
tiene la información suficiente para recuperar los datos de la medición de esa topo-
grafía. Comúnmente, las dimensiones de profundidad se determinan por algún mé-
todo de triangulación.
El método de proyección de franjas presenta inconvenientes relacionados con
el proyector y con la cámara. Cuando los patrones son generados a escala de grises o
monocromáticos, la no-linealidad de la cámara es despreciable en comparación con
la del proyector [5]. Así la respuesta del sistema de proyección queda representada
por,
�^�_, `� � ���_, `��a (17)
donde ��_, `� es la intensidad proyectada, �^�_, `� es la intensidad capturada y b es el valor “gamma” del proyector usualmente mayor a 1. En la Eq. (17) se muestra
que los patrones capturados presentan armónicos, no deseados, de la misma señal.
Por otro lado, cuando se proyectan patrones RGB (un interferograma en cada canal)
surge el “crosstalk” (o diafonía cromática) que aparece como una respuesta no-lineal
para cada canal, así como el fenómeno de “aliasing” entre los canales adyacentes, es
decir,
�E ��� � �E��� � NcE�c��� (18)
Figura 11: Configuración típica para el método de proyección de franjas.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |11
�c ��� = �c��� + NEc�E��� + Ncd�d��� �d ��� = �d��� + Ncd�c��� donde �E , �c , �d son los patrones capturado e �E, �c, �d son los proyectados, respecti-vamente a cada canal. Los coeficientes NcE, Ndc, Ncd son las contribuciones del patrón del canal verde en el canal rojo, el canal azul al verde y el canal verde al azul [6].
Además, en las Eqs. (18) se observa que los valores de fase nominal son afectados
por un valor Δ��. En la Figura 11 se muestra una configuración típica para el método de pro-
yección de franjas, donde el eje óptico del proyector y la CCD se encuentran en el
mismo plano y es paralelo al plano de referencia, el cual está situado a una distancia Y de las pupilas del proyecto y de la CCD. El objeto bajo prueba es colocado en el plano de referencia hacia la CCD. Con estas consideraciones y basados en el dia-
grama; la altura del objeto es determinada como
Δf��� = ghℎ2�Y Δ� (19)
donde gh es el periodo de los patrones capturados y Δ� = �i − �d es la diferencia de fase en cada punto, tal que �i es el valor de fase en el punto " de la superficie del objeto y �d es el valor de fase ene le plano de referencia. Un proceso de calibración es requerido para determinar los valores en la Eq. (19), como por ejemplo el propuesto
por Jia et al. [7] donde se emplean varios planos de referencia con lo cual se mejora
considerablemente la resolución.
En el presente reporte se emplea el método de proyección de franjas con la
configuración mostrada en la Figura 11 en la captura de datos experimentales.
Ejemplo 4 (Rechazo de armónicos con datos experimentales) Este ejemplo es continuación del 3, ahora se emplean patrones de franjas ex-
perimentales. Los patrones de franjas capturados se muestran en la Figura 12, los
cuales son corridos en fase por un término de �� = 2�/4. La función de fase de los patrones de la Figura 12(b) es la señal portadora de
fase del objeto, como se puede observar en la Figura 12(a). Rescribiendo la Eq. (1)
con las consideraciones anteriores se obtiene,
����� = "��� + $��� cos�/��� + ���� + ���� ; � = 0, … ,3 (20)
donde /��� es la portadora y ���� es la fase del objeto. Aplicando el algoritmo de cuatro pasos de la Eq. (20) se obtiene lo siguiente,
�HBj��� ≔ �����%&Z'D �E�@k�E�[ = ����� − I� ��� − �F��� + I�;���; �� = �/2 (21)
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |12
Por lo tanto, es necesario eliminar la señal portadora. Para ello se estima el valor de
la portadora haciendo ���� = 0 [en la Eq. (20)] y resolvemos con el mismo algoritmo como sigue,
�Hj��� ≔ �����%&k�E� = ����� − I� ��� − �F��� + I�;���; �� = �/2 /��� = Arg��Hj���� (22)
Entonces, la fase del objeto estará determinada como,
�HB��� ≔ �����%&'D �E� = �HBj���%)&k�E� �GH<��� = Arg� �HB���� (23)
En el siguiente script de Matlab® se muestra el procedimiento realizado para
los dos algoritmos tratados en el Ejemplo 3.
w0 = pi/2; % Cargar datos oI0 = im2double(imread( 'piramide_obj_I0.bmp' )); oI1 = im2double(imread( 'piramide_obj_I1.bmp' )); oI2 = im2double(imread( 'piramide_obj_I2.bmp' )); oI3 = im2double(imread( 'piramide_obj_I3.bmp' )); rI0 = im2double(imread( 'piramide_ref_I0.bmp' )); rI1 = im2double(imread( 'piramide_ref_I1.bmp' )); rI2 = im2double(imread( 'piramide_ref_I2.bmp' )); rI3 = im2double(imread( 'piramide_ref_I3.bmp' )); %% Algoritmo de cuatro pasos oA_4s = oI0 - 1i*oI1 - oI2 + 1i*oI3; % estimar señal analítica cA_4s = rI0 – 1i*rI1 – rI2 + 1i*rI3; c = angle(cA_4s); % estimar señal portadora phi_4s = angle(oA_4s.*exp(-1i*c)); % estimar función de fase fig_A4s = figure(); imagesc(phi_4s),colormap gray , axis equal , axis off ,
(a)
(b)
Figura 12: Patrones de intensidad para perfilometría de una pirámide con corrimientos �� = 2�/4, (a) los patrones de franjas con el objeto y (b) los patrones de referencia.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |13
title( 'Fase estimada algoritmo de 4 pasos \omega_0=\pi/2' ); %% Algoritmo de cuatro pasos robusto a variaciones de fondo oA_4s_a = oI0 – 2*oI1 – exp(1i*w0)*oI1 + oI2 ... + 2*exp(1i*w0)*oI2 – oI3; % estimar señal analítica cA_4s_a = rI0 – 2*rI1 – exp(1i*w0)*rI1 + rI2 ... + 2*exp(1i*w0)*rI2 – rI3; c = angle(cA_4s_a); % estimar señal portadora phi_4s_a = angle(oA_4s_a.*exp(-1i*c)); % estimar función de fase fig_A4s_a = figure(); imagesc(phi_4s_a),colormap gray , axis equal , axis off , title( 'Fase estimada algoritmo de 4s_a pasos \omega_0=\pi /2' );
En la Figura 13 se muestra el resultado del script anterior, además se agrega
los mapas de fase desenvuelta de ambos algoritmos. En la Figura 13(e) se comparan
los perfiles de fase estimadas con cada algoritmo, se observa que el mapa de
fase �GHB��� tiene menor contribución de armónicos en comparación con �GHB\, este último presenta una contribución importante del segundo armónico lo cual se debe a
que el método no elimina dicho armónico [ver Figura 9(b)].
Ejemplo 5 (Patrones RGB) En este ejemplo se proyecta un patrón RGB tal como fue descrito en el apar-
tado de proyección de franjas. Cada interferograma es corrido en fase nominal por �� = 2�/3 y en este sentido se utilizó el algoritmo de tres pasos cuya FTF se muestra en la Figura 2.
El resultado se muestra en la Figura 14, donde se utilizaron dos objetos: un
casquete de esfera y una concha, el gradiente de la concha es accidentado. Se observa
que la fase estimada presenta un error significativo; debido a que señal moduladora
(a)
(b)
(c)
(d)
(e)
Figura 13: Eliminación de armónicos con datos reales, (a) fase estimada �GHB��� con el algoritmo de cuatro pasos [3], (b) fase estimada �GHB\��� con el algoritmo de Servín et al. [2], (c) fase desenvuelta �lHB��� calculada con el primer método y (d) la fase desenvuelta estimada �lHB\���con el segundo algoritmo. En (e) se compara las fases estimadas de los algoritmos.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |14
[$���] está en función del patrón de franjas como consecuencia de la respuesta fre-cuencial de los sensores de la CCD y, además, el corrimiento �� de cada canal es afectado en un término Δ� [ver Figura 14(d)]. 3. Método de Fourier
El método introducido por Takeda et al. [8], basado en la transformada de
Fourier consiste en extraer el espectro correspondiente a ����. La idea fundamental del método es la de introducir una frecuencia portadora m�, entonces, la representa-ción matemática de un patrón de franjas, con esas consideraciones, queda determi-
nada como,
���� � "��� � $��� cos����� � 2�m�_� (24)
donde la frecuencia portadora es en la dirección _. Haciendo /��� � �$��� 2⁄ �%&'�E�, podemos representar la Eq. (24) en su forma compleja,
���� � "��� � /���%&FnoAp � /∗���%)&FnoAp (25)
donde /∗���%)FnoAp denota el complejo conjugado. La transformada de Fourier de la ecuación anterior con respecto de _, está determinada por,
qp������ � ��r, `� � s�r ( m�, `� � s∗�r � m�, `� (26)
donde las letras mayúsculas indican la pertenencia al dominio de Fourier. En la
Figura 15 se muestra el espectro de un interferograma donde s�r ( m�, `� es el rango de frecuencias que se desea recuperar, es decir,
s�r ( m�, `� � qp������3�r ( m�, `� (27)
(a)
(b)
(c)
(d)
Figura 14: Demodulación de patrones RGB, (a) patrón de franjas con objetos, (b) patrón de refe-
rencia, (c) fase estimada �G;B��� y (d) perfil del patrón de referencia.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |15
donde 3�r − m�, `� es un filtro que permite extraer el intervalo espectral deseado. Posteriormente, se traslada s�r ( m�, `� al origen (r � 0). Finalmente, la función de fase busca es determinada por,
�G��� � atan wIm�/����Re�/����| (28)
donde Re�⋅�, Im�⋅� representan la parte real e imaginaria del argumento. La principal fuente de error del método por transformada de Fourier es la
pérdida de energía que ocurre durante la etapa de filtrado. En este sentido, se em-
plean ventanas de Hamming y de Han para evitar la pérdida de la energía.
La diferencia principal de demodular con transformada de Fourier (con res-
pecto de PSI) es que se requiere únicamente un patrón de franjas. Sin embargo, el
método requiere que la señal portadora “separe lo suficiente” los espectros para poder
filtrar adecuadamente. A continuación se realizan dos ejemplos con el método tra-
tado.
Ejemplo 5 (MF con datos sintéticos): Este ejemplo muestra el procedimiento para demodular un patrón de franjas
empleando el método por transformada de Fourier. Para ello, se generó un patrón
con una portadora lineal y una gaussiana centrada como mapa de fase.
A continuación se muestra el script en Matalb® escrito para este ejemplo.
%% Establecimiento de datos sintéticos N = 256; % dimensión de la imagen w_f = 15; % radio del filtro [i,j] = meshgrid(1:N); phi = 0.001*((i-0.5*N).^2+(j-0.5*N).^2); % Phi de prueba u = 0.3*pi*i; % Estimar portadora I = 128 + 127*cos(phi + u + ... 0.5*(2*rand(size(phi))-1)); % Generar patrón %% Metodo de Fourier FI = fft2(I.*exp(1i*pi* ... (i+j)).*exp(-1i*u)); % coef. FT + fftshift r = sqrt((i-0.5*N).^2 + (j-0.5*N).^2); % Diseño del filtro Filtro = double(r < w_f); I_filtrada = FI.*Filtro; % Filtrado
Figura 15: Esquema del método de Fourier para la demodulación de un patrón de franjas.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |16
A_signal = ifft2(I_filtrada).* ... % Estimar señal analítica exp(-1i*pi*(i+j)); % IFT + fftshift phi = angle(A_signal); % Estimar la fase fig_filtrado = figure(); % Graficar filtrado imagesc(0.1*Filtro+0.7*img_frecu), colormap gray , axis equal , axis off , title( 'Proceso de filtrado' ); fig_fase = figure(); % Graficar filtrado imagesc(-angle(A_signal)) colormap gray , axis equal , axis off , title( 'Mapa de fase envuelta' )
El resultado se muestra en la Figura 16, se observa que la fase recuperada
presenta un rizado en los bordes donde se produce el “salto de 2�”. Lo anterior se debe al efecto del filtro; el ancho espectral debe ser adecuado.
Ejemplo 6 (MF con datos reales): Este ejemplo muestra el procedimiento para demodular un patrón de franjas
con datos reales empleando el método por transformada de Fourier, en particular se
emplea el patrón correspondiente a la pirámide como se muestra en la Figura 17.
A continuación se muestra el script en Matalb® escrito para este ejemplo.
%% Establecimiento de datos sintéticos I = im2double(imread( 'piramide_obj_I0.bmp' )); % Patron de franjas [m,n] = size(I); w_f = 20; % radio del filtro [i,j] = meshgrid(1:n,1:m); u = 0.101*pi*i + 0.001*pi*j; % Estimar portadora I = 128 + 127*cos(phi + u + ... 0.5*(2*rand(size(phi))-1)); % Generar patrón %% Método de Fourier FI = fft2(I.*exp(1i*pi* ... (i+j)).*exp(-1i*u)); % coef. FT + fftshift
(a)
(b)
(c)
Figura 16: Proceso para demodulación de fase mediante el Método de Fourier: (a) patrón de inten-
sidad, (b) proceso de filtrado en el dominio de Fourier y (c) mapa de fase determinado.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |17
r = sqrt((i-0.5*N).^2 + (j-0.5*N).^2); % Diseño del filtro Filtro = double(r < w_f); I_filtrada = FI.*Filtro; % Filtrado A_signal = ifft2(I_filtrada).* ... % Estimar señal analítica exp(-1i*pi*(i+j)); % IFT + fftshift phi = angle(A_signal); % Estimar la fase fig_filtrado = figure(); % Graficar filtrado imagesc(0.1*Filtro+0.7*img_frecu), colormap gray , axis equal , axis off , title( 'Proceso de filtrado' ); fig_fase = figure(); % Graficar filtrado imagesc(-angle(A_signal)) colormap gray , axis equal , axis off , title( 'Mapa de fase envuelta' )
El resultado se muestra en la Figura 17, se observa que el mapa de fase recu-
perado tiene el rizado descrito anteriormente. Comparando las Figura 13(a) y Figura
17(c) se observa que la primera es mejor estimación que la segunda y esto se debe
principalmente a la cantidad de datos para cada estimación. Por ello, el método de
Fourier es utilizado para medir fenómenos u objetos en movimiento, mientras que
PSI se emplea cuando se requiere mayor precisión en la medición.
4. Desenvolvimiento de fase El procedimiento de desenvolvimiento de fase consiste en recuperar los valores
originales de la fase a partir de los valores principales (fase envuelta), es decir, se
obtiene un mapa de fase continua a partir de uno discontinuo. Formalmente el pro-
blema puede ser planteado como,
�}�_� = ~��}�_�� = �G�_� ± 2�Round w�G�_�2� | (29)
donde Round ∶ ℝ ⟶ ℤ, es la función que redondea su argumento al entero más cer-cano, �} es el mapa de fase desenvuelto, �G es la fase envuelta y ~ es el operador de
(a)
(b)
(c)
Figura 17: Proceso demodulación con el Método de Fourier con datos reales: (a) patrón de intensi-
dad, (b) proceso de filtrado en el dominio de Fourier y (c) mapa de fase determinado.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |18
envolvimiento tal que ~�_� ∈ �−�, ��. Cabe mencionar que el operador ~ es sobre-
yectivo pero no inyectivo. Por lo tanto, el desenvolvimiento de fase es un problema
matemáticamente mal planteado en el sentido de Hadamard [9]. Sin embargo, el
valor ��_� es dependiente espacial y/o temporalmente, entonces, el contexto propor-ciona la información necesariamente para poder realizar el desenvolvimiento.
Desenvolvimiento por integración lineal El método inicialmente propuesto por Itoh [10] consiste en desenvolver la fase
progresivamente. Rescribiendo la Eq. (29) como sigue,
�} = �G ± 2���_� (30)
Tomando la derivada discreta (��⋅�) de la ecuación anterior, ���}� = ���G� ± ��2���_��
�}�_� − �}�_ − 1� = �G�_� − �G�_ − 1� ± 2����_� − ��_ − 1�� (31)
donde ���_� − ��_ − 1�� ∈ ℤ por propiedades del campo. Aplicando el operador de envolvimiento,
~ ����}�_��� = ~ ����G�_�� ± ��2���_��� = ~ ����G�_��� (32)
La expresión anterior es un resultado muy importante puesto que indica que la deri-
vada de la fase desenvuelta es equivalente a la derivada de la fase envuelta. Final-
mente, la función de fase desenvuelta es determinada como sigue,
�}�_� = �G�0� + . ~ ����}�1���p) 0��
(33)
Para lo cual se asumió que el patrón de franjas cumple con el Teorema de
Nyquist. Es conocido que el método de Itoh es sensible a la presencia de ruido, sin
embargo, establece el fundamento para métodos prácticos. En este sentido, se des-
cribe una variante (del algoritmo de Itoh) con un buen desempeño en presencia de
ruido controlado. Considerando lo siguiente,
~��G�_� − �G�_ − 1�� = ~��G�_� − �}�_ − 1�� (34)
Si la respuesta espectral del ruido es suficientemente acotada, entonces,
~��G�_� − �G�_ − 1�� = �G�_� − �}�_ − 1� (35)
y el desenvolvimiento de fase queda determinado como,
�}�_� = �}�_ − 1� + � ~��G�_� − �}�_ − 1��; � ∈ �0,1� (36)
donde el parámetro � es el criterio para filtrar el ruido.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |19
El método descrito en la Eq. (36) plantea el desenvolvimiento de fase como
un problema de valor inicial y utiliza el método de Euler para integrar progresiva-
mente la fase y el término � penaliza la derivada, por ende está relacionado intrínse-camente con los datos; un valor no adecuado (menor o mayor) permitirá errores
considerables en el momento de deenvolver la fase.
Con la finalidad de implementar el método de desenvolvimiento se define el
operador de envolvimiento como sigue,
~ ∶ ℝ ⟶ ℝFn ~��� ⇝ atan2�sin � , cos �� (37)
donde ℝFn es la recta real con intervalo �−�, �� y atan2�⋅,⋅� es el arco tangente de cuatro cuadrantes definido como,
atan2�`, _� ≔
��������� atan �_� , _ > 0�2 − atan �_� , ` > 0
− �2 − atan �_� , ` < 0atan �_� ± � , _ < 0
indefinido, _ = 0, ` = 0
(38)
En general, el desenvolvimiento en 2D requiere de una ruta de integración
como lo sugiere el método de Itoh. Para ello, en el presente reporte se elige una ruta
de zigzag del grid. A continuación se muestra el código de Matlab® escrito para
realizar el desenvolvimiento de fase. Debido a la similitud de los métodos descritos
no se muestra el método de Itoh.
% Archivo unwrapLocal.m function [phi] = unwrapLocal(phia,phiw,lambda) %UNWRAPLOCAL desenvolvimiento de un pixel con el mé todo penalizado % [phi] = unwrapLocal(phia,phiw,lambda) % -phia es el valor anterior de la ruta de desenvolvimiento. % -phiw es el valor que será desenvuelto . % -lambda es el valor de penalización deriv = phiw - phia; phi = phia + lambda*atan2(sin(deriv),cos(deriv) ); end % Archivo unwrap1D.m function [usignal] = unwrap1D(wsignal,lambda) %UNWRAP1D desenvolvimiento de una señal unidimensio nal. % [usignal] = unwrap1D(wsignal,lambda) % -wsignal señal 2D con fase envuelt a. % -lambda es el valor de penalizació n.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |20
n = length(wsignal); usignal = zeros(size(wsignal)); for i=2:n usignal(i) = unwrapLocal(usignal(i-1),wsign al(i),lambda); end end % Archivo unwrap2D.m function [imgUnwrap] = unwrap2D(imgWrap,lambda) %UNWRAP2D desenvolvimiento de una señal bidimension al. % [imgUnwrap] = unwrap2D(imgWrap,lambda) % -imgWrap señal 2D con fase envuelt a. % -lambda es el valor de penalizació n. [m,n] = size(imgWrap); tmpUnwrap = convertZigZag(imgWrap,[m,n], 'vec' ); tmpUnwrap = unwrap1D(tmpUnwrap,lambda); ImgUnwrap = convertZigZag(tmpUnwrap,[m,n], 'mat' ); end % Archivo unwrap2D.m function [S] = convertZigZag(signal,dim,opcion) %CONVERTZIGZAG convertir una imagen a trayecto zigz ag y viceversa % de acuerdo con opcion % [S] = convertZigZag(signal,dim,opcion) % -signal señal a convertir 1D<->opción= 'mat ' % o 2D<->opción='vec' . % -dim arreglo bidimensional tal que dim=[m,n ]. % -opcion convertir matriz a vector: 'vec', e n caso % opuesto 'mat'. m = dim(1); n = dim(2); switch opcion case 'vec' % convertir la matriz a un vector S = zeros(m*n,1); for i=1:2:m ind = (i-1)*n; S(ind+1:ind+n) = signal(i,:); end for i=2:2:m ind = (i-1)*n; S(ind+1:ind+n) = signal(i,n:-1:1); end case 'mat' % convertir el vector a matriz (proceso inverso) S = zeros(m,n); for i=1:2:m ind = (i-1)*n; S(i,:) = signal(ind+1:ind+n); end for i=2:2:m ind = (i-1)*n; S(i,n:-1:1) = signal(ind+1:ind+n); end otherwise S = false;
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |21
end end
Los resultados se muestran en la Figura 18, la función de fase es una gaussiana
con ruido blanco de media cero y varianza 0.08. Se observa que debido al ruido el
algoritmo de Itoh falla al detectar un cambio de dirección 2� falso. En este sentido, la penalización del método de Euler filtra el ruido y la fase desenvuelta es significa-
tivamente más fiable.
Como se mencionó anteriormente, el desenvolvimiento de fase, como un pro-
ceso dependiente de la ruta, requiere que la dirección de integración esté en función
de la fiabilidad de los datos, es decir, aquellos valores cuya relación señal a ruido sea
mayor. En este sentido, el algoritmo floodFill cuya dirección está gobernada por un
mapa de calidad fue propuesto por Asundi y Wensel [11] para el desenvolvimiento
de fase. A continuación se muestra el algoritmo:
1 m���Y�I�����, � , �� 2 Si �� ∈ Ω y ¢���� = 0 entonces
3 ����� ← r1¤�"¥¦�/"����, � , ��. 4 ¢���� ← 1. 5 § ← �Γ=�p� + 1, �©�?, Γ=�p�, �©� + 1?, Γ=�p� − 1, �©�?, Γ=�p�, �©� − 1?�. 6 Mientras § no sea vacía hacer
7 �′ ← ¥�¥�§�. 8 m���Y�I����«, ��, ��. 9 Fin Mientras
10 Fin Si
11 Fin
donde �0,� son las coordenadas de la posición a desenvolver y las del desenvolvi-miento previo y el valor � es la penalización de la derivada, Ω es el grid sobre el cual está definido la fase, es decir, � ∈ Ω, Γ,¢ ∈ Ω son el mapa de fidelidad y la máscara de coordenadas: 1 si está desenvuelto o 0 en caso contrario. La variable § es una
(a)
(b)
(c)
Figura 18: Desenvolvimiento de fase, (a) mapa de fase envuelta, (b) fase desenvuelta con el método
de Itoh, (c) fase desenvuelta con el método de Euler penalizado con � = 0.4.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |22
lista ordenada en forma descendente; evidentemente en la línea 5 los valores son
ordenados. La función ¥�¥�⋅� extrae las coordenadas en Ω del primer elemento. En la Figura 19 se muestra un ejemplo de la ruta de floodFill con el mapa de fidelidad
mostrado.
En general, la ruta de desenvolvimiento generada por floodFill permite una
mejor estimación de la fase que la ruta de zigzag. En la Figura 20 se muestran seis
capturas del desenvolvimiento de la fase de la pirámide estimada con el método de
Fourier, se utilizó la señal moduladora como mapa de fidelidad.
5. Normalización El proceso de normalización de franjas tiene por objetivo eliminar la señal
moduladora. En la Figura 14 se muestra un caso práctico donde la señal moduladora
está en función tanto de las variables espaciales como temporales y que es descrito
en la Eq. (18). El método descrito en el presente trabajo fue propuesto por Quiroga
y Servín [12], se considera un patrón de franjas de la forma,
���� � "��� � $��� cos ���� (39)
donde "��� es el término de DC o intensidad de fondo, $��� es el contraste de franjas, ���� es la función de fase y � es el vector de posición espacial. Sea �¬ es un interfe-rograma tal que el término de DC fue eliminado mediante un filtro pasa-altas,
�¬��� � $��� cos ���� � 3®��� (40)
Considerando el operador espiral de fase cuya Función de Transferencia Fre-
cuencial (FTF) está determinada como,
Figura 19: Desenvolvimiento de fase con
floodFill y mapa de fidelidad.
Figura 20: Capturas del desenvolvimiento con flood-
Fill de la Figura 17(c).
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |23
¯�r, °� = r + I°|r + I°| = exp�IN�r, °�� (41)
El operador anterior es empleado para estimar la cuadratura de �¬, tal que, ℱ�¯��¬����� = ℱ��¬����¯�³�= 12 $�#�³ − ³�� exp�I��³��− #�³ + ³�� exp�−I��³��� exp�IO�³��
(42)
donde O�³� = arctan r °⁄ . Entonces, en el dominio espacial tenemos que,
¯��¬���� = exp�IO� sin ����= ℱ) ´12 $�#�³ − ³�� exp�I��³��− #�³ + ³�� exp�−I��³��� exp�IO�³��µ
(43)
Tomando la magnitud de la transformación de �¬ bajo ¯, se obtiene la cuadratura del patrón de franjas, esto es,
|¯��¬����| = |I exp�IO���� sin ����| = $���|sin ����| (44)
Finalmente, el patrón de franjas es normalizado mediante,
�0��� = cos �l��� (45)
donde la fase es determinada,
�l��� = Arg��¬��� + I|¯��¬����|� (46)
Así el patrón de franjas �¬ es normalizado y, �0��� ∈ �−1,1�. La función implementada en Matlab® del método descrito anteriormente se muestra
a continuación. Nota: el argumento I es un interferograma sin el término de DC.
% Archivo normalizar.m function [In] = normalizar(I) [m,n] = size(I); [v,u] = meshgrid(-m/2:m/2-1,-n/2:n/2-1); FI = fftshift(fft2(I)); betha = atan2(v,u); betha = betha'; S = ifft2(fftshift(FI.*exp(1i*betha))); arg = angle(I+1i*abs(S)); In =0.5*(cos(arg) + 1); end % Archivo ejemploNormalizar.m %% crear un patron de franjas con perfil gaussiano x = 1:256; y = x; [X,Y] = meshgrid(x,y);
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |24
phi = 0.001*((X-127).^2 +(Y-127).^2); b = exp(-4.*(((X-127).^2+(Y-127).^2)./1e5)); I = b.*cos(phi); %% Normalizar patrón de franjas In = normalizar(I); %% Graficar subplot(2,2,1),imagesc(I) % Interferograma colormap gray , axis equal axis off , title( 'I_\alpha(r)' ) subplot(2,2,2),plot(I(128,:), 'r-' ) % Perfil del interferograma axis([1 256 min(I(128,:)) max(I(128,:))]) title( 'I_\alpha(128,y)' ) xlabel( 'Pixeles' ), ylabel( 'Amplitud' ) subplot(2,2,3),imagesc(In) % Interferograma normalizado colormap gray , axis equal axis off , title( 'I_n(x,y)' ) subplot(2,2,3),imagesc(In) % Perfil interferograma norm subplot(2,2,4),plot(In(128,:), 'r-' ) axis([1 256 min(In(128,:)) max(In(128,:))]) title( 'I_n(128,y)' ) xlabel( 'Pixeles' ), ylabel( 'Amplitud' )
El resultado del código anterior se muestra en la Figura 21 se muestra el
resultado del proceso de normalización. Donde se observa la normalización de un
patrón sintético.
(a)
(b)
(c)
Figura 21: Normalización de un patrón de franjas sintético con el algoritmo [12], (a) patrón de
franjas con moduladora, (b) patrón de franjas normalizado, (c) comparación de los valores de
intensidad del patrón normalizado y el no-normalizado.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |25
6. Co-Faseo El método de perfilometría por co-faseo tiene por objetivo reducir la pérdida
de información debido a sombras que origina una perspectiva de proyección. En la
Figura 22 se muestra la configuración de co-faseo con dos perspectivas de proyección,
se observa que la pupila de la CCD (¶k) es ortogonal al plano ·, la distancia del punto ¸ a las pupilas de los proyectores es la misma, ¶ ¸}}}}} = ¶F¸}}}}}, el ángulo del rayo principal de las proyecciones con respecto al plano YZ es �. Cabe mencionar que la distancia ¶k¸}}}}} puede ser distinta a ¶ ¸}}}}} como se muestra en la Figura citada.
El método propuesto por Servín et al. [12] que se describe a continuación,
recordando el modelo matemático de un patrón de franjas expresado como,
���� = "��� + $��� cos����� � ��� (45)
donde "��� es la iluminación de fondo, $��� el contraste de franjas, �� el corrimiento temporal de fase y ���� la función de fase buscada. En proyección de franjas por cuestión de sensibilidad se agrega un portadora espacial tal que,
���� � "��� � $��� cos����� � /��� � ��� (46)
Además, dado que los rayos principales de la CCD y del proyector son cruzados,
entonces: en el punto de observación de la cámara se agrega una portadora espacial
relacionada con el ángulo � entre las pupilas de la CCD y el proyector, entonces, ���� � "��� � $��� cos�¹���� � /��� � ��� (47)
donde ¹ � º sin � y º es la frecuencia espacial en radianes por pixel. Con las consideraciones anteriores se define el conjunto de interferogramas
para cada perspectiva de proyección:
� ��, 1� � "��� � $��� cos�¹� ��� � / ��� � 1���; � � 1,2, … ,4 (48)
�F��, 1� � "��� � $��� cos�¹�F��� � /F��� � 1���; � � 1,2, … ,4 (49)
Figura 22: Configuración de co-faseo para perfilometría con dos perspectivas de proyección.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |26
En las Eqs. (48-49) se observa que se emplean 8 patrones de franjas. Aplicando el
método de cuatro pasos de la Eq. (10) se obtiene (respectivamente),
����%&�c'»�E�@k»�E�� = � ��, 0� + � ��, 1�%&>A + � ��, 2�%)&F>A + � ��, 3�%)&;>A (50)
����%&�c'¼�E�@k¼�E�� = �F��, 0� + �F��, 1�%&>A + �F��, 2�%)&F>A + �F��, 3�%)&;>A (51)
En las ecuaciones anteriores se observa la necesidad de eliminar la portadora. Para
ello considere el procedimiento de las Eqs. (48-52) tal que � = �F = 0. Finalmente, la señal analítica de cada proyección queda determinada como:
����%&c'»�E� = Z����%&�c'»�E�@k»�E��[%)&k»�E� (52)
����%&c'¼�E� = Z����%&�c'¼�E�@k¼�E��[%)&k¼�E� (53)
Así la fase estará determinada como:
����%&½�E� = Λ ���%)&k»�E� + ΛF���%&k¼�E� (54)
donde Λ , ΛF son las señales analíticas de la proyección 1 y dos, respectivamente. En la Eq. (54) se muestra la suma de las fases positiva y negativa. Por lo tanto, para
determinar la señal analítica Λ tal que la fase sea negativa (ver Figura 1) se requiere un algoritmo que recupere la componente negativa, para la otra señal analítica se
emplea el algoritmo de cuatro pasos mencionado anteriormente.
En la práctica es difícil conseguir un empalme de franjas (de ambas proyec-
ciones), entonces, un término de pistón distinto es agregado a las Eqs. (52-53) el cual
debe ser corregido. A continuación se muestra el script de Matlab® desarrollado.
%% Estimar la fase de la proyección 1 (fase postiva) % Cargar datos dI0 = im2double(imread( 'proy1_o_i0.png' )); % Patrones con objeto dI1 = im2double(imread( 'proy1_o_i1.png' )); dI2 = im2double(imread( 'proy1_o_i2.png' )); dI3 = im2double(imread( 'proy1_o_i3.png' )); rdI0 = im2double(imread( 'proy1_c_i0.png' )); % Patrones con portadora rdI1 = im2double(imread( 'proy1_c_i1.png' )); rdI2 = im2double(imread( 'proy1_c_i2.png' )); rdI3 = im2double(imread( 'proy1_c_i3.png' )); % Estimar señal analítica A_s1 = dI0 – 1i*dI1 – dI2 + 1i*dI3; % objeto + portadora A_c1 = rdI0 – 1i*rdI1 – rdI2 + 1i*rdI3; % portadora % Estimar fase c1 = angle(A_c1); % estimar portadora phi_1 = angle(A_s1.*exp(-1i*c1)); % estimar fase del obj %% Estimar la fase de la proyección 2 (fase negativ a) % Cargar datos iI0 = im2double(imread( 'proy2_o_i0.png' )); % Patrones con objeto iI1 = im2double(imread( 'proy2_o_i1.png' )); iI2 = im2double(imread( 'proy2_o_i2.png' ));
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |27
iI3 = im2double(imread( 'proy2_o_i3.png' )); riI0 = im2double(imread( 'proy2_c_i0.png' )); % Patrones con portadora riI1 = im2double(imread( 'proy2_c_i1.png' )); riI2 = im2double(imread( 'proy2_c_i2.png' )); riI3 = im2double(imread( 'proy2_c_i3.png' )); % Estimar señal analítica A_s2 = dI0 + 1i*dI1 – dI2 - 1i*dI3; % objeto + portadora A_c2 = rdI0 + 1i*rdI1 – rdI2 - 1i*rdI3; % portadora % Estimar fase c2 = angle(A_c2); % estimar portadora phi_2 = angle(A_s2.*exp(1i*c2)); % estimar fase del obj %% Realizar suma de fase A_o = A_s1.exp(-1i*c1) + A_s2.exp(-1i*c2); phi_o = angle(A_o); %% Graficar fig_proy1 = figure(); % fase proy 1 Imagesc(phi_1),colormap gray , axis equal axis off , title( 'fase proyeccion 1' ) fig_proy2 = figure(); % fase proy 2 Imagesc(phi_2),colormap gray , axis equal axis off , title( 'fase proyeccion 2' ) fig_objeto = figure(); % fase objeto cofaseado Imagesc(phi_o),colormap gray , axis equal axis off , title( 'fase objeto )
Los resultados se muestran en la Figura 23, se observa que el ruido de las
sobras de cada perspectiva se atenúa considerablemente en la fase de co-faseo, lo cual
es el objetivo del método descrito anteriormente. En las Figuras 23(e-f) se observa el
problema del término de pistón originado por imprecisiones en la alineación de la
instalación experimental, entonces, el término debe ser corregido.
(a)
(b)
(c)
(d)
(e)
(f)
(g)
(h)
Figura 23: Co-faseo con dos perspectivas de proyección y cuatro patrones en cada perspectiva: (a)-
(d) patrones con objeto y de referencias con perspectiva derecha a izquierda respectivamente, (e)-
(f) fases estimadas desde la derecha y desde la izquierda, (g) fase del objeto por co-faseo (suma de
fases) y (h) la fase de co-faseo desenvuelta.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |28
7. Conclusiones En el presente reporte se realiza una revisión de los temas de interferometría
digital: demodulación, desenvolvimiento, normalización y co-faseo. En especial se re-
visó el tema de demodulación de interferogramas, en particular, las técnicas de in-
terferometría por corrimiento de fase y el método de transformada de Fourier. La
primera permite una estimación con mayor resolución en la fase estimada, mientras
que método de Fourier permite una mayor velocidad de cálculo. Considerando el
método de proyección de franjas, cuando se proyectan patrones RGB es necesario
realizar una normalización para compensar la no-linealidad de los sensores. Si el
objeto bajo prueba genera sombras sobre áreas que se desean medir, entonces, el
método de co-faseo permitirá reducir o inclusive eliminar la pérdida de información
debido a las sombras. Por otro lado, el método de desenvolvimiento que mejor desem-
peño es el floodFill con un valor de penalización de 0.35 para corrimiento de fase y
0.6 para método de Fourier.
8. Referencias
[1] M. Servín, J. A. Quiroga and M. Padilla, Fringe pattern analysis for optical
metrology: theory, algorithms, and applications, John Wiley & Sons, 2014.
[2] J. H. Bruning, D. R. Herriott, J. E. Gallagher, D. P. Rosenfeld, A. D. White
and D. J. Brangaccio, "Digital wavefront measuring interferometer for testing
optical surfaces and lenses," Appl. Opt., vol. 13, no. 11, pp. 2693-2703, 1974.
[3] S. H. Rowe y W. T. Welford, «Surface topography of non-optical surfaces by
proyected interference fringes,» Nature, vol. 216, pp. 786-787, 1967.
[4] P. S. Huang, Q. Hu, F. Jin and F. P. Chiang, "Color-encoded digital fringe
proyection technique for high-speed tree-dimensional surface contouring," Opt.
Eng., vol. 38, no. 6, pp. 1065-1071, 1999.
[5] J. L. Flores, J. A. Ferrari, G. G. Torales, R. Legarga-Saenz and A. Silva, "Color-
fringe pattern profilometry using a generalized phase-shifting algorithm," Appl.
Opt., vol. 54, pp. 8827-8834, 2015.
[6] P. Jia, J. Kofman, C. English and A. Deslauriers, "Comparison of linear and
nonlinear calibration methods for phase-shifting surface-geometry measure-
ment," in Optomechatronic Technologies, 2005.
[7] M. Takeda, H. Ina y S. Kobayashi, «Fourier-transform method of fringe-patter
analysis for computer-base topography and interferometry,» Opt. Soc. Am., vol.
72, nº 1, pp. 156-160, 1982.
Sotero Ordoñes Nogales – Reporte “Interferometría Digital” |29
[8] A. N. Tikhonov and V. I. Asernin, Solutions of ill-posed problems, Winston,
1997.
[9] K. Itoh, «Analysis of the phase unwrapping algorithm,» Appl. Opt., 1982.
[10] A. Asundi and Z. Wensen, "Fast phase-unwrapping algorithm based on a gray-
scale mask and flood fill," Appl. Opt., vol. 37, no. 23, pp. 5416-5420, 1998.
[11] J. A. Quiroga and M. Servín, "Isotropic n-dimensional fringe pattern normali-
zation," Opt. Commun., vol. 224, no. 4-6, pp. 221-227, 2003.
[12] M. Servín, G. Garnica, J. C. Estrada y A. Quiroga, «Coherent digital demodu-
lation of single-camera N-projections for 3D-object shape measurement: Co-
phased profilometry,» Opt. Express, vol. 21, nº 21, pp. 24873-24878, 2013.