Академический Документы
Профессиональный Документы
Культура Документы
en ptica A.C .
Interferometra Digital
Presenta:
Ing. Sotero Ordoes Nogales
Asesor:
Dr. Manuel Servn Guirado
1. Introduccin ......................................................................................... 2
2. Interferometra de corrimiento de fase ................................................. 3
Ejemplo 1 (Demodulacin de patrones de franjas) .................................... 4
Ejemplo 2 (Robustez a ruido) .................................................................... 6
Ejemplo 3 (Supresin de armnicos).......................................................... 8
Mtodo de proyeccin de franjas ............................................................... 9
Ejemplo 4 (Rechazo de armnicos con datos experimentales) .................. 11
Ejemplo 5 (Patrones RGB) ...................................................................... 13
3. Mtodo de Fourier .............................................................................. 14
Ejemplo 5 (MF con datos sintticos): ....................................................... 15
Ejemplo 6 (MF con datos reales): ............................................................. 16
4. Desenvolvimiento de fase .................................................................... 17
Desenvolvimiento por integracin lineal ................................................... 18
5. Normalizacin ..................................................................................... 22
6. Co-Faseo ............................................................................................. 25
7. Conclusiones ....................................................................................... 28
8. Referencias .......................................................................................... 28
lar.
Con base en la formulacin moderna de algoritmos para interferometra de
corrimiento de fase (PSA), la cual consiste en interpretar el mtodo como un filtro
!
que al aplicarse al conjunto patrones permite estimar la funcin de fase
buscada, adems es consistente con la teora de sistemas lineales.
Considere la Transformada de Fourier de un patrn de franjas corrido en fase,
$ $
= "# + % &' # + % )&' # +
2 2
(3)
, , = . /0 , 1 (4)
0
$
3 = 3 % &' # (
2
(5)
lo anterior muestra la ecuacin general para un PSA lineal [2]. Finalmente, la funcin
de fase buscada se determina como:
Arg , + , |5 !) Arg / !) /!) (7)
donde Arg es el argumento del nmero 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 Funcin 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 formulacin general, el algoritmo de tres pasos para queda
determinado por,
D E
;B % &' ( ( % &>A % &>A F
G ;B Arg
(9)
;B
G LB = Arg LB
(b)
Figura 9: Respuesta de los algoritmo a la presencia de armnicos, (a) respuesta a armnicos del
algoritmo [3] y (b) respuesta a armnicos del algoritmo propuesto en [2].
(d)
Figura 10: Eliminacin de armnicos, (a) patrn de franjas base, (b) fase estimada GH<
estimada GH<] .
y (c) fase
I3 = im2double(imread('I3.bmp'));
por un valor .
Adems, en las Eqs. (18) se observa que los valores de fase nominal son afectados
= 2 /4.
perimentales. Los patrones de franjas capturados se muestran en la Figura 12, los
cuales son corridos en fase por un trmino de
La funcin de fase de los patrones de la Figura 12(b) es la seal 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,
% &Z' = I +I ; = /2
D E @k E [
HBj F ; (21)
(b)
Figura 12: Patrones de intensidad para perfilometra de una pirmide con corrimientos = 2 /4,
(a) los patrones de franjas con el objeto y (b) los patrones de referencia.
Hj % &k E
= I F +I ; ; = /2
/ = Arg
(22)
Hj
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'));
(e)
Figura 13: Eliminacin de armnicos con datos reales, (a) fase estimada GHB con el algoritmo de
cuatro pasos [3], (b) fase estimada GHB\ con el algoritmo de Servn et al. [2], (c) fase desenvuelta
lHB calculada con el primer mtodo y (d) la fase desenvuelta estimada lHB\ con el segundo
algoritmo. En (e) se compara las fases estimadas de los algoritmos.
fase GHB tiene menor contribucin de armnicos en comparacin con GHB\ , este
los perfiles de fase estimadas con cada algoritmo, se observa que el mapa de
ltimo presenta una contribucin importante del segundo armnico lo cual se debe a
que el mtodo no elimina dicho armnico [ver Figura 9(b)].
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 seal moduladora
(d)
Figura 14: Demodulacin de patrones RGB, (a) patrn de franjas con objetos, (b) patrn de refe-
rencia, (c) fase estimada G ;B y (d) perfil del patrn de referencia.
3. Mtodo de Fourier
El mtodo introducido por Takeda et al. [8], basado en la transformada de
Fourier consiste en extraer el espectro correspondiente a . La idea fundamental
del mtodo es la de introducir una frecuencia portadora m , entonces, la representa-
cin matemtica de un patrn de franjas, con esas consideraciones, queda determi-
nada como,
" $ cos 2 m_ (24)
donde la frecuencia portadora es en la direccin _. Haciendo / $ 2 % &' E
,
podemos representar la Eq. (24) en su forma compleja,
" / % &FnoA p / % )&FnoA p (25)
donde / % )FnoA p denota el complejo conjugado. La transformada de Fourier de la
ecuacin anterior con respecto de _, est determinada por,
qp r, ` s r ( m ,` s r m ,` (26)
donde las letras maysculas 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)
%% Metodo de Fourier
FI = fft2(I.*exp(1i*pi* ...
(i+j)).*exp(-1i*u)); % coef. FT + fftshift
%% Mtodo de Fourier
FI = fft2(I.*exp(1i*pi* ...
(i+j)).*exp(-1i*u)); % coef. FT + fftshift
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 _
} _ =~ } _ = G _ 2 Round w |
2
(29)
~ } _ = ~ G _ 2 _ = ~ G _ (32)
La expresin 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 funcin de fase desenvuelta es determinada como sigue,
p)
} _ = G 0 + . ~ } 1 (33)
0
mente la fase y el trmino penaliza la derivada, por ende est relacionado intrnse-
un problema de valor inicial y utiliza el mtodo de Euler para integrar progresiva-
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 mtodo de desenvolvimiento se define el
operador de envolvimiento como sigue,
~ Fn
~ atan2 sin , cos
(37)
`
cuatro cuadrantes definido como,
atan , _>0
_
_
atan , `>0
2 `
atan2 `, _ _
2 atan ` , `<0 (38)
`
atan , _<0
_
indefinido, _ = 0, ` = 0
En general, el desenvolvimiento en 2D requiere de una ruta de integracin
como lo sugiere el mtodo de Itoh. Para ello, en el presente reporte se elige una ruta
de zigzag del grid. A continuacin se muestra el cdigo de Matlab escrito para
realizar el desenvolvimiento de fase. Debido a la similitud de los mtodos descritos
no se muestra el mtodo de Itoh.
% Archivo unwrapLocal.m
function [phi] = unwrapLocal(phia,phiw,lambda)
%UNWRAPLOCAL desenvolvimiento de un pixel con el mtodo 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 penalizacin
deriv = phiw - phia;
phi = phia + lambda*atan2(sin(deriv),cos(deriv));
end
% Archivo unwrap1D.m
function [usignal] = unwrap1D(wsignal,lambda)
%UNWRAP1D desenvolvimiento de una seal unidimensional.
% [usignal] = unwrap1D(wsignal,lambda)
% -wsignal seal 2D con fase envuelta.
% -lambda es el valor de penalizacin.
% Archivo unwrap2D.m
function [imgUnwrap] = unwrap2D(imgWrap,lambda)
%UNWRAP2D desenvolvimiento de una seal bidimensional.
% [imgUnwrap] = unwrap2D(imgWrap,lambda)
% -imgWrap seal 2D con fase envuelta.
% -lambda es el valor de penalizacin.
[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 zigzag y viceversa
% de acuerdo con opcion
% [S] = convertZigZag(signal,dim,opcion)
% -signal seal a convertir 1D<->opcin= 'mat'
% o 2D<->opcin='vec'.
% -dim arreglo bidimensional tal que dim=[m,n].
% -opcion convertir matriz a vector: 'vec', en 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;
de Itoh, (c) fase desenvuelta con el mtodo de Euler penalizado con = 0.4.
Figura 18: Desenvolvimiento de fase, (a) mapa de fase envuelta, (b) fase desenvuelta con el mtodo
end
end
r1 "/" , , .
2
1.
3
=p + 1, ?, =p , + 1?, =p 1, ?, =p , 1?.
4
.
6
mYI , , .
7
8
9 Fin Mientras
10 Fin Si
11 Fin
donde 0 , son las coordenadas de la posicin a desenvolver y las del desenvolvi-
miento previo y el valor es la penalizacin de la derivada, es el grid sobre el cual
est definido la fase, es decir, , , son el mapa de fidelidad y la mscara
de coordenadas: 1 si est desenvuelto o 0 en caso contrario. La variable es una
Sotero Ordoes Nogales Reporte Interferometra Digital |21
Figura 19: Desenvolvimiento de fase con Figura 20: Capturas del desenvolvimiento con flood-
floodFill y mapa de fidelidad. Fill de la Figura 17(c).
5. Normalizacin
El proceso de normalizacin de franjas tiene por objetivo eliminar la seal
moduladora. En la Figura 14 se muestra un caso prctico donde la seal moduladora
est en funcin tanto de las variables espaciales como temporales y que es descrito
en la Eq. (18). El mtodo descrito en el presente trabajo fue propuesto por Quiroga
y Servn [12], se considera un patrn de franjas de la forma,
" $ cos (39)
donde " es el trmino de DC o intensidad de fondo, $ es el contraste de franjas,
es la funcin de fase y es el vector de posicin espacial. Sea es un interfe-
rograma tal que el trmino de DC fue eliminado mediante un filtro pasa-altas,
$ cos 3- (40)
Considerando el operador espiral de fase cuya Funcin de Transferencia Fre-
cuencial (FTF) est determinada como,
0 = cos l (45)
donde la fase es determinada,
l = Arg + I| | (46)
As el patrn de franjas es normalizado y, 0 1,1 .
La funcin implementada en Matlab del mtodo descrito anteriormente se muestra
a continuacin. Nota: el argumento I es un interferograma sin el trmino 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);
(c)
Figura 21: Normalizacin de un patrn de franjas sinttico con el algoritmo [12], (a) patrn de
franjas con moduladora, (b) patrn de franjas normalizado, (c) comparacin de los valores de
intensidad del patrn normalizado y el no-normalizado.
%% Graficar
subplot(2,2,1),imagesc(I) % Interferograma
colormap gray, axis equal
axis off, title('I_\alpha(r)')
6. Co-Faseo
El mtodo de perfilometra por co-faseo tiene por objetivo reducir la prdida
de informacin debido a sombras que origina una perspectiva de proyeccin. En la
% & c' E @k E
= F ,0 + F , 1 % &>A + F , 2 % )&F>A + F , 3 % )&;>A (51)
= F = 0. Finalmente,
En las ecuaciones anteriores se observa la necesidad de eliminar la portadora. Para
ello considere el procedimiento de las Eqs. (48-52) tal que
la seal analtica de cada proyeccin 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 seales analticas de la proyeccin 1 y dos, respectivamente.
determinar la seal analtica tal que la fase sea negativa (ver Figura 1) se requiere
En la Eq. (54) se muestra la suma de las fases positiva y negativa. Por lo tanto, para
Figura 23: Co-faseo con dos perspectivas de proyeccin 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.
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 seal analtica
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)
8. Referencias
[1] M. Servn, 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.