Anda di halaman 1dari 14

PROPAGACIÓN Y FORMACIÓN DE IMÁGENES

PARCIAL 2 ÓPTICA DE FOURIER


CAORI ORGANISTA (133163)
MAYO 31 DE 2013
UNIVERSIDAD NACIONAL DE COLOMBIA- BOGOTÁ

Resumen:

Se realiza una simulación para difracción de una onda plana, que atraviesa diferentes orificios, por
aproximación de Fraunhofer , Fresnel y espectro angular. Además, se simula el sistema óptico de una lente
para observar la formación de la imagen con luz coherente y el correspondiente defoco. Se presentan las
imágenes obtenidas en la simulación y los correspondientes códigos de la simulación desarrollada en
MATLAB®

Para cada caso de difracción se utilizaron las tres rejillas difractantes sugeridas por el profesor. Las
imágenes corresponden a Circulo14.tif, Circulo56.tif, CuadradoD.tif y DosCirculos24.tif

I. Propagación de una onda plana. Difracción por aproximación de Fraunhofer:

En la aproximación de Fraunhofer se halla la TF de la rejilla difractante y se escala en el espacio de las


frecuencias. No es necesaria una distancia de propagación pues se considera campo lejano. Los espectros
obtenidos son los siguientes:
Primero, se observa que el patrón de difracción de una abertura circula es diferente al que se observa con
una abertura cuadrada. Por otra parte, el tamaño de la abertura circular altera el patrón de difracción,
entre mayor sea la abertura más lejano se encuentra el espectro en un mismo espacio determinado.

II. Propagación de una onda plana. Difracción por aproximación de Fresnel:

En esta aproximación es necesario definir una distancia de propagación que se encuentre dentro del campo
de Frensel. En el algoritmo la rejilla difractiva se multiplica por un término de fase y luego se halla la
transformada de Fourier de este producto, el término de fase depende de la distancia a propagar. Los
resultados para cada tipo de abertura son los siguientes:
Para una abertura de 56 se tomaron diferentes distancias de propagación. Se observa que el patrón de
difracción en campo cercano (d pequeña) es diferente a medida que se aumenta la distancia de
propagación d. Para el caso de d=1000, el patrón que se observa es similar al que se obtuvo para la misma
rejilla en la aproximación de Fraunhofer.

Para las otras rejillas sucede lo mismo, a continuación las imágenes para el caso de la apertura rectangular.
III. Propagación de una onda plana. Difracción por Espectro Angular (Ondas Planas):

Para el algoritmo por espectro angular, hallamos la TF de la rejilla y lo multiplicamos por otro término
de fase que depende de la distancia de propagación, esta vez en el espacio de las frecuencias. Luego se
halla la transformada inversa de Fourier y se obtiene el campo difractado. A valores apropiados de d se
observa un patrón similar al obtenido por fresnel. Solo se muestran los resultados para la el Circulo 14,
similar al obtenido en las otras aproximaciones:
%DIFRACCIÓN POR APROXIMACIÓN DE FRANUNHOFER
%Caori Organista (133163)

clear all
close all
clc

%Leemos la información del obstáculo que va a difractar un haz


%monocromático de cierta longitud de onda.

I0=imread('DosCirculos24.tif');
I0=double(I0);
[N M]=size(I0);

%Se definen los parámetros para la propagación del haz en el espacio.

lambda=0.000632; %% Longitud de onda en mm


d=1000; %% Distancia del plano de propagación
dx=0.0001; %%Tamaño del pixel
t=-N/2:1:N/2-1; %% Dominio de la imagen, le resto 1 porque
tiene un tamaño de 513
h=dx*t; %% Tamaño del paso en la imagen
dv=1/(N*dx); %% Tamaño pixel dominio de Fourier
v=dv*t; %% Dominio de Fourier frecuencia espacial

%%
%Calculamos la difracción por Fraunhofer, para esto hallamos la
%transformada de fourier del obstaculo y como es en campo cercano, no se
%hace necesario determinar una distancia de propagación. El espectro se
%define como la transdormada de fourier del obstáculo.

I=fft2(I0);
I1=fftshift(I);

%Como no podemo observar el campo complejo, hallamos la amplitud del mismo


%y este es el patrón observable:

I1=255*abs(I1)/max(max(abs(I1)));
figure,
imwrite(imagesc(v*lambda*d,v*lambda*d,log(abs(I1+1))),colormap(gray),'Difracción
por FraunhoferCC24.tif');
title('\bf patrón de difracción');
set(gcf,'Color',[1 1 1],'NumberTitle','on','Name','Patrón Aprox. Fraunhofer');
title('\bf Patrón de Difracción por Fraunhofer, DosCirculos24');
axis image;

%DIFRACCIÓN POR APROPXIMACIÓN DE FRESNEL


%Caori Organista (133163)
clear all
close all
clc

%%Leemos la información del obstáculo que va a difractar un haz


%monocromático de cierta longitud de onda.
I0=imread('DosCirculos24.tif');
I0=double(I0);
[N M]=size(I0);

%Se definen los parámetros para la propagación del haz en el espacio.

lambda=0.000632; %% Longitud de onda en mm


d=1000; %% Distancia a la que se encuentra el plano
de propagación
t=-N/2:1:N/2-1; %% Dominio de la imagen
dx=0.006; %%Tamaño del pixel (aumento la ventana si el
pixel es más pequeño)
h=dx*t; %% Tamaño del paso en la imagen
dv=1/(N*dx); %% Tamaño pixel dominio de Fourier
v=dv*t; %% Dominio de Fourier frecuencia espacial
%%
%Ahora se realiza la propagación por Fresnel. En ella se multiplica la amplitud
%por un factor de fase que depende de la distancia en la que se ubique el plano
%de propagación (d). La propagación de fresnel se hace en campo lejano.

[U V]=meshgrid(h,h);
%I0=fft2(I0);
%I0=fftshift(I0);
Ui=I0.*exp((-1i*pi*(U.*U+V.*V))/(lambda*d));
figure
I1=fft2(Ui);
I1=fftshift(I1);

%Como no podemo observar el campo complejo, hallamos la amplitud del mismo


%y este es el patrón observable:

I1=255*abs(I1)/max(max(abs(I1)));
imwrite(imagesc(v*lambda*d,v*lambda*d,log(abs(I1)+1)),'Difracción por
FresnelCC241000.tif');
colormap(gray)
axis image, title('\bf Difracción por Aproximación de Fresnel');
set(gcf,'Color',[1 1 1],'NumberTitle','on','Name','Patrón Fresnel');
title('\bf Patrón de Difracción por Aprox. de Fresnel DosCirculos24, d=1000');

%Difracción por espectro angular (ondas planas)


%
%Primero abrimos la imagen del elemento a propagar.

clear all
close all
clc
I0=imread('Circulo56.tif');
I0=double(I0);
[N M]=size(I0);

lambda=0.000632; %%Longitud de onda haz incidente


%d=1850; %%Distancia al plano imagen para Circulo 14
%d=2300; %%Distancia al plano imagen para Circulo 56
m=-N/2:1:N/2-1; %Paso del muestreo en el espacio real
dx=0.05; %Tamaño del pixel
h=m*dx;
dfx=1/(N*dx); %Tamaño del pixel en el espacio de Fourier
dfy=1/(M*dx);
kx=dfx*m; %%Tamaño del paso en el espacio de Fourier
ky=dfy*m;

%hallo la tranformada de fourier y Porpago la rejilla por espectro angular.

FT=fft2(I0);
FTT=fftshift(FT);
[fx fy]=meshgrid(kx,ky);
U=FTT.*(exp((2*1i*pi*d/lambda)*sqrt(1-(lambda^2)*(fx.*fx+fy.*fy))));
U=fftshift(U);
Uc=ifft2(U);
%Uc=ifftshift(Uc,2);

%A=255*abs(Uc)/max(max(abs(Uc)));
A=abs(Uc);
figure(1);
imagesc(kx,ky,log(A+1));
colormap (gray(256));
set(gcf,'Color',[1 1 1],'NumberTitle','on','Name','Patrón');
title('Patrón de difracción por Ondas Planas, Circulo 56');
imwrite(A,'Difracción Ondas PlanasC56.tif'); %% Dominio de
Fourier frecuencia espacial

IV. Aumento de una imagen por una lente:

El objetivo es obtener una imagen aumentada, con una magnificación del doble, de la letra E que fue
enviada. Este objeto se observa con una lente de foco 50mm, con un radio de apertura de 2mm. Para esto
se parte de la imagen gaussiana Ug, la cual es el objeto magnificado al doble (la imagen ideal que queremos
obtener). La imagen real se obtiene realizando la convolución de esta imagen gausiana con el modulo al
cuadrado de la función pupila h, que se obtiene como la transformada inversa de la función H en el espacio
doblemente transformado. Para esto necesitamos V0, que es el radio de la pupila, el cual determina la
frecuencia máxima que pasa por la lente. El resultado es una imagen con menores frecuencias que borra
los bordes de la imagen.

1. Las imágenes aumentadas y sin aumentar


2. Imagen obtenida después de la lente: Justo en el plano focal donde la magnificación es el doble de
la imagen original.

Si ubicamos el plano imagen en un lugar diferente al plano focal, obtenemos imágenes desenfocadas, un
defoco positivo o negativo es posible según la ubicación del plano, a continuación el resultado de desplazar
el plano antes o después del plano focal:
EL CODIGO ES EL SIGUIENTE:

I0=imread('E_OPTO.TIF');
u=I0(:,204);
max(max(u));
a=sum(u)/255; %Número de celdas que definen la altura de la letra E

%Definimos el tamano del pixel en la imagen aumentada


lambda=633*10^-6;
r0=1;
% h1=0.5; %Valor en mm del tamaño de la letra original
% h2=h1*2; %Valor en mm de tamaño de la letra aumentada
f=50; %Foco de la lente en mm
phi=2; %Diametro de la lente en mm
M=-2; %magnificación de la lente
r0=1; %???

%Hallamos la distancia zi que es la distancia de la lente al plano imagen.


%Por Newton se halla la distancia del foco de la lente (50mm) al plano
%imagen>

x=-M*f; %Distancia del foco al plano imagen


z1=f+x; %Distancia de la lente al plano imagen.

%Escalamos la imagen del objeto que ha sido magnificado.

dx=1/2;
dy=1/2;
[N M]=size(I0);
meshgrid(N,M);

t1=0:1:N-1; %% Dominio de la imagen, le resto 1 porque tiene


un tamaño de 513
t2=0:1:M-1;
hx=t1*0.005; %%Tamaño del pixel del objeto real
hy=t2*0.005;
xx=t1*0.01; %% Tamaño del pixel de la imagen aumentada
yy=t2*0.01;

%Imagen real. I0 serà la imagen aumentada.


figure(1);
imagesc(xx,yy,I0);
title('Imagen aumentada')
colormap(gray(256));
axis image;
hold on

meshgrid(hx,hy);
figure(2);
imagesc(hx,hy,I0),colormap(gray);
title('Imagen sin aumentar')

%Definimos la funciòn pupila, para la cual debemos hallar su diámetro

x=xx*(lambda)*z1; %Tamaño del pixel en el espacio de h (imagen PLANO


FOCAL)
y=xx*(lambda)*z1;

%ancho de la pupila en el espacio de frecuencias y en el espacio real


vo=r0/((lambda)*z1); %Màxima frecuencia en el espacio de H
du=1/(N*vo); %Máxima frecuencia en el espacio real

%Ahora definimos la pupila en el espacio de H


%H=zeros(1:N,N);

[l,g]= meshgrid(1:N,1:N); %% Malla


x0=240; %% Matriz de filas repetidas
y0=240; %% Matriz de columnas repetidas
H=((l-x0)).^2+((g-y0)).^2<vo^2; %% Se define la apertuta circular
figure(3);
imagesc(xx,yy,H); %%Grafico la pupila en el espacio (vx,vy)
colormap(gray(256));
title('Imagen de la pupila');
I0=double(I0);
h = ifftshift(ifft2(H));
h = h.*conj(h);
figure(4);
imagesc(x,y,abs(h));
colormap(gray(256));
title('Función pupila en el plano pupila');
Ui = conv2(h,I0);
figure(5);
imagesc(xx,yy,abs(Ui));
colormap(gray(256));
title('Imagen aumentada después de la lente');
%%
%SEGUNDA PARTE> Se aplica un defoco positivo o negativo
dz = z1*0.10; %distacia del defoco (Porcentaje de Z1)
ad1 = -dz/(2*z1^2);
ad2 = dz/(2*z1^2);
k0 = 2 * pi / (lambda*z1);
W1 = ad1*(l.^2+g.^2); % alejándose de la lente
W2 = ad2*(l.^2+g.^2); % acercándose a la lente
phaseW1 = exp(1i*k0*W1); %En el espacio de la pupila
phaseW2 = exp(1i*k0*W2); %En el espacio de la pupila
Hw1 = H.*phaseW1;
Hw2 = H.*phaseW2;

%h1 = ifftshift(ifftshift(ifft2(Hw1)));
h1 = ifftshift(ifft2(Hw1));
h1 = h1.*conj(h1);
Uiw1 = conv2(h1,I0);
figure(6);
imagesc(xx,yy,abs(Uiw1));
colormap(gray(256));
title('Imagen con aberración de defoco negativo');

h2 = ifftshift(ifftshift(ifft2(Hw2)));
h2 = ifftshift(ifft2(Hw2));
h2 = h2.*conj(h2);
Uiw2 = conv2(h2,I0);
figure(7);
imagesc(xx,yy,abs(Uiw2));
colormap(gray(256));
title('Imagen con aberración de defoco positivo');

Anda mungkin juga menyukai