Simulação de Holografia Óptica com CCD Utilizando MATLAB

Fluxo do Processo

  1. Geração da luz do objeto
  2. Interferência com fiexe de referência
  3. Gravação do padrão holográfico
  4. Conversão fotoelétrica no CCD
  5. Transferência de carga
  6. Adição de ruídos
  7. Recnostrução do sinal

Código de Simulação

%% Configurações iniciais
comprimento_onda = 632.8e-9;   % Comprimento de onda laser (m)
tamanho_pixel = 5e-6;          % Dimensão do pixel (m)
N = 1024;                      % Resolução da imagem
dist_obj = 0.1;                % Distância do objeto (m)
tempo_exp = 0.1;               % Tempo de exposição (s)
ef_quantica = 0.65;            % Eficiência quântica
ruido_leitura = 3;             % Ruído de leitura (elétrons)
ef_transfer = 0.9999;          % Eficiência de transferência

%% Preparação dos feixes
[x, y] = meshgrid(linspace(-0.01, 0.01, N));
objeto = exp(-(x.^2 + y.^2)/(2*(0.005)^2)); 
referencia = exp(1i*2*pi*(x.^2 + y.^2)/(comprimento_onda*dist_obj));

%% Formação do holograma
padrao_interf = objeto + referencia;
holograma = abs(padrao_interf).^2;

%% Conversão CCD
carga = holograma * ef_quantica * tempo_exp;
ruido_escuro = poissrnd(0.1*tempo_exp, N, N);
eletrons = carga + ruido_escuro;
eletrons(eletrons > 15000) = 15000;  % Limite de saturação

%% Transferência de carga
for fase = 1:3
    perda = ef_transfer * (1 - 0.05*fase);
    eletrons = circshift(eletrons, [0,1]) * perda + eletrons*0.1;
end

%% Processamento do sinal
tensao = eletrons * 0.15 + ruido_leitura*randn(N,N); 
sinal_digital = im2uint16(tensao);

%% Reconstrução da imagem
H = fftshift(fft2(holograma));
imagem_rec = abs(ifftshift(ifft2(H)));

%% Visualização
subplot(2,2,1); imshow(objeto,[]); title('Objeto Original');
subplot(2,2,2); imshow(holograma,[]); title('Holograma');
subplot(2,2,3); imshow(uint8(eletrons),[]); title('Saída CCD');
subplot(2,2,4); imshow(imagem_rec,[]); title('Imagem Reconstruída');

Módulos Essenciais

1. Gravação de Holograma

% Configuração de holografia off-axis
angulo = 0.1; 
fase_ref = exp(1i*angulo*x);
holograma = (objeto + fase_ref).^2;

2. Modelo de Transferência

ef_variavel = linspace(ef_transfer, 0.95, size(eletrons,2));
for coluna = 1:size(eletrons,2)
    eletrons(:,coluna) = circshift(eletrons(:,coluna), [0,1]) * ef_variavel(coluna);
end

3. Modelagem de Ruído

ruido_termico = 0.05*randn(N,N);
ruido_total = sqrt(ruido_escuro.^2 + ruido_termico.^2 + ruido_leitura.^2);

Funcionalidadse Avançadas

Fusão Multiespectral

lambda_vermelho = 632.8e-9; 
lambda_verde = 532e-9;
holograma_composto = (objeto_vermelho + objeto_verde).^2;

Processamento em Tempo Real

dados_ccd = capturaCamera(); 
processamentoInstantaneo(dados_ccd);

Redução de Ruído com IA

rede = googlenet; 
rede_treinada = trainNetwork(dados_treinamento, rede);
imagem_limpa = classify(rede_treinada, imagem_ruidosa);

Tags: MATLAB Holografia CCD Simulação Óptica Processamento Imagem

Publicado em 6-2 20:37 por Thomas