UNIVERSIDADE FEDERAL DE MATO GROSSO INSTITUTO DE COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇAO DISCIPLINA: PROCESSAMENTO DE IMAGENS PROFESSOR: JOÃO PAULO RIBAS Relatório do Trabalho Alunos: Lauro César Renato Gonçalves Túlio Rondon de Albuquerque Cuiabá, 10 de maio de 2009.
Trabalho de processamento de imagens sobre transformadas de fourier, com códigos, introdução e testes.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
UNIVERSIDADE FEDERAL DE MATO GROSSOINSTITUTO DE COMPUTAÇÃO
CURSO DE CIÊNCIA DA COMPUTAÇAODISCIPLINA: PROCESSAMENTO DE IMAGENS
PROFESSOR: JOÃO PAULO RIBAS
Relatório do Trabalho
Alunos: Lauro César Renato Gonçalves Túlio Rondon de Albuquerque
Cuiabá, 10 de maio de 2009.
Sumário
Lista de Figuras --------------------------------------------------------------------------------- 3
As tabelas abaixo apresentam os resultados obtidos através da aplicação da função DCT2 (para cálculo
da Transformada de Cosseno).
A exibição das imagens segue, para todos os exemplos, a seguinte ordem: na coluna da direita fica a
imagem original, na coluna do meio fica a imagem em escala logarítmica após a aplicação da função e na
coluna da direita fica a imagem em escala logarítmica centralizada (através da função fftshift).
16
Fig. 20: lenna256.bmp – Transformada Discreta de Cosseno
Fig. 21: boa256t.bmp – Transformada Discreta de Cosseno
Fig. 22: bridge.tif – Transformada Discreta de Cosseno
Fig. 23: câmera.tif – Transformada Discreta de Cosseno
17
Abaixo estão os resultados obtidos através da aplicação da função Conv2 existente no MATLAB e da
aplicação do ‘Teorema da Convolução’ nas imagens. As imagens que passaram pela convolução já foram
apresentadas neste trabalho, no entanto elas são reapresentadas na figura 19.
Como a função de convolução gera uma matriz com números de grandeza muito grande, para
visualização da imagem, os elementos da matriz resultante foram divididos por 800.000.000 (oitocentos
milhões) para que fosse possível ver os efeitos da convolução.
Fig. 24: Imagens que a convolução foi aplicada
Fig. 25: Resultado da convolução
Fig. 25 (a): Convolução através da função Fig. 25 (b): Convolução através do Teorema Conv2 do MATLAB da Convolução
18
5.Análise dos Resultados
Observando os resultados, descobrimos que em todas as imagens, o algoritmo DFT-2D implementado
pelos membros do grupo obteve os mesmos resultados do algoritmo FFT2 já desenvolvido pelo programa
MATLAB.
A função fffshift permitiu obter o espectro centralizado, essa função é ótima para análise dos espectros
gerados pela Transformada, pois ela permite enxergar a concentração de energia das fotos.
A DCT apresentou espectros diferentes em relação aos espectros obtidos na DFT, ao utilizar a função
fffshift para centralizar o espectro gerado, os pixels de nível mais baixo apareceram com maior freqüência na
parte inferior direita da imagem (dividindo-se a imagem em quatro partes iguais a partir do centro horizontal e
vertical).
As experiências feitas com as imagens utilizando a convolução (função Conv2 do MATLAB) e o
Teorema da Convolução geraram como resultado imagens iguais. As duas são obtidas usando a função
‘demonstrarConvolução’, como é apresentado no anexo 2.
6.Conclusão
O trabalho descrito neste relatório apresentou exemplos gráficos e práticos da aplicação da
Transformada de Fourier em 4 imagens de dimensões 256x256 utilizando o software MATLAB, que é uma
ferramenta específica e muito boa para trabalhar com processamento de imagens, pois já possui funções
implementadas (facilitando o desenvolvimento de algoritmos) e possui uma facilidade no trabalho com
elementos do tipo matriz.
Apesar de obter as mesmas imagens do algoritmo da FFT (já implementado no MATLAB) com o
algoritmo desenvolvido pelos alunos da DFT, é muito mais recomendado se utilizar o algoritmo da FFT, uma
vez que este possui uma complexidade menos, resultando em um tempo de execução menor, ponto este
fundamental no desenvolvimento de algoritmos.
Provamos o Teorema da Convolução através da função FFT2, uma vez que as imagens resultantes
tanto pela função da convolução (conv2) quanto pela transformada inversa da multiplicação das transformadas
diretas de duas funções são iguais. Porem, vale lembrar que o Teorema da Convolução utilizando a FFT é a
forma mais eficiente de se aplicar a convolução em duas imagens.
19
Este trabalho nos proporcionou a descoberta de um grande número de conhecimentos, já que a área de
processamento de imagens abrange um número enorme de conceitos e técnicas de desenvolvimento, que
poderão ser muito úteis no futuro.
7.Referência Bibliográfica
MACHADO, Kleber Daum. Equações Diferenciais Aplicadas à Física. 2ª Edição. Local: Editora
UEPG, 2000;
Transformada de Fourier, disponível em <http://pt.wikipedia.org/wiki/Transformada_de_Fourier>,
acessado em 05/05/2009;
Transformada Discreta de Cosseno, disponível em
<http://pt.wikipedia.org/wiki/Transformada_Discreta_de_Cosseno>, acesso em 05/05/2009;
Processamento Digital de Imagens no Domínio da Freqüência, disponível em
<http://www.if.ufrgs.br/ast/med/imagens/node42.htm>, acessado em 05/05/2009;
Transformada de Fourier, disponível em <http://www.cs.unm.edu/~brayer/vision/fourier.html>,
acessado em 05/05/2009.
20
8.Anexos
Anexo 1: Transformada de Fourier com separabilidade
1 Transformada Discreta de Fourier (DFT) com Separabilidade2 % Autores: Lauro César3 % Renato Lustre4 % Túlio Rondon56 % param imagem - A imagem que deseja-se "transformar"7 % param tipo - 1 para DFT e 0 para a inversa (IDFT)8 % return ImageRes - A Imagem resultante9 function ImageRes = dft2(imagem,tipo)1011 % captura a dimensao da imagem12 [dimensao,dimensao]=size(imagem);1314 % inicializacao das variaveis15 imagem=double(imagem);16 nivelDeCinza=0;17 res=0;18 ImagemAux=zeros(dimensao,dimensao);19 ImageRes=zeros(dimensao,dimensao);2021 % Define se sera DFT ou IDFT22 23 if tipo==124 imaginario=-j;1625 elseif tipo==026 imaginario=j;27 else28 error ('Voce nao digitou um tipo valido. Digite 1 para DFT e 0 para IDFT');29 end3031 %Somatorio interno.32 for v=0:(dimensao-1),33 for x=(0:dimensao-1),34 for y=0:(dimensao-1),35 nivelDeCinza=imagem(x+1,y+1);36 res=nivelDeCinza*exp((imaginario*2*pi*v*y)/dimensao)+res;37 end38 ImagemAux(x+1,v+1)=res;
21
39 res=0;40 end41 end42 terminouPrimeiraParte=-143 somatorio=0;44 % Somatorio Externo45 for u=0:dimensao-1,46 for v=0:dimensao-1,47 for x=0:dimensao-1,48 somatorio=ImagemAux(x+1,v+1)*exp((imaginario*2*pi*u*x)/dimensao)+somatorio;49 end50 ImageRes(u+1,v+1)=somatorio;51 somatorio=0;52 end53 end54 Return
Anexo 2: Demonstração do Teorema da Convolução
1 % Demonstracao do Teorema da Convolucao2 % Autores: Lauro Cesar3 % Renato Gonçalves4 % Túlio Rondon56 %Etapas:7 % 1) Aplique a funcao de convolucao e obtenha f(x,y)*g(x,y)8 % 2) Aplique a funcao da DFT-2D em f(x,y) e g(x,y) obtendo, F(u,v) e G(u,v)9 % 3) Multiplique F(u,v) por G(u,v)10 % 4) Aplique a IDFT em F(u,v).G(u,v) e obtenha f(x,y)*g(x,y)11 % 5) Compare f(x,y)*g(x,y) obtido na etapa 1 c/ o obtido na etapa 412131415 function [convolucao,imagemres] = demonstrarConvolucao(imagem1,imagem2)16 [tamanho,tamanho]=size(imagem1);17 dobro=tamanho*2;1819 convolucao=conv2(imagem1,imagem2); % etapa 1)2021 %inicio da etapa 2)22 img1=imagem1;23 img2=imagem2;24 img1(1:dobro-1,dobro-1)=0;25 img2(dobro-1,1:dobro-1)=0;2627 img1fft = fft2(img1);28 img2fft = fft2(img2);29 %fim da etapa 2)3031 multi = img1fft.*img2fft; % etapa 3)