UNIVERSIDADE FEDERAL DO TRIANGULO MINEIRO INSTITUTO DE CIÊNCIAS TECNOLÓGICAS E EXATAS
André Ajonas Lavez Gabriel Augusto de Souza
Trabalho 5 - PDI
Uberaba Novembro – 2016
André Ajonas Lavez Gabriel Augusto de Souza
Trabalho 3 - PDI
Trabalho apresentado para disciplina Processamento digital de imagens para fins avaliativos. Prof. Dr. Luciano Xavier Medeiros
Uberaba Novembro – 2016
i
LISTA DE FIGURAS Figura 1 - Conceito de máscara.. ................................................................................................ 3 Figura 2 - Máscara passa-alta de (a) 3x3 e (b)5x5. .................................................................... 4 Figura 3 - Filtragem espacial passa-baixa com máscara 3x3 .. .................................................. 5 Figura 4 - Filtragem espacial passa-baixa com máscara 5x5 ..................................................... 5 Figura 5 - Filtragem espacial passa-baixa com varias máscaras ................................................ 6 Figura 6 - Filtragem espacial passa-baixa de ruído gaussiano ................................................... 6 Figura 7 - Filtragem espacial passa-baixa de ruido sal e pimenta .............................................. 7 Figura 8 - Filtragem espacial passa-alta com máscara 3x3. ....................................................... 7 Figura 9 - Filtragem espacial passa-alta com máscara 5x5 ........................................................ 8 Figura 10 - Filtragem espacial passa-alta com varias máscaras ................................................. 8 Figura 11 - Filtragem espacial mediana de ruido sal e pimenta ................................................. 9 Figura 12 - Filtragem espacial mediana de ruído gaussiano .................................................... 9 Figura 13 - Filtragem espacial mediana com varias máscaras ................................................. 10
ii
iii
SUMÁRIO 1. INTRODUÇÃO ................................................................................................................. 1 2. RESUMO TEÓRICO........................................................................................................ 3 3. RESULTADOS OBTIDOS ............................................................................................... 5 3.1 FILTRO ESPACIAL PASSA-BAIXA ..................................................................... 5 3.2 FILTRO ESPACIAL PASSA-ALTA ....................................................................... 7 3.3 FILTRO ESPACIAL MEDIANA............................................................................. 8 4. CONCLUSÃO ................................................................................................................ 11 5. REFERÊNCIAS ............................................................................................................. 13 6. ANEXOS ......................................................................................................................... 15 6.1 CÓDIGO PRINCIPAL ........................................................................................... 15 6.2 FUNÇÃO FILTRO PASSA BAIXA ...................................................................... 16 6.3 FUNÇÃO FILTRO PASSA BAIXA ...................................................................... 17 6.4 FUNÇÃO FILTRO MEDIANA ............................................................................. 17
iv
1
1. INTRODUÇÃO Nesse relatório verificaremos a importância do uso de filtros espaciais lineares e não lineares e também iremos implementar tais filtros, os quais são: Filtro espacial passa-baixa, filtro espacial passa-alta e filtro espacial mediana. Começaremos aplicando tais filtros a imagem da Lenna, por sequência verificaremos o comportamento de cada filtro, levando em conta quais características que cada um destaca, e também suprimi. Para ser possível determinar qual a principal função de cada um. Para auxiliar a interpretação dos filtros, iremos introduzir ruídos na imagem de entrada e comparar os resultados obtidos de cada filtro. Além disso também será variado o tamanho das máscaras de cada um dos filtros, afim de saber o que tal mudança altera na imagem final.
2
3
2. RESUMO TEÓRICO Os processos de filtragem em imagens, se dividem em 2 grandes grupos, filtragem no domínio da frequência, o qual faz o uso da transformada de Fourier na imagem e manipula-se seu espectro de acordo com o objetivo, retornando ao domínio do espaço com a aplicação da transformada inversa de Fourier. O outro grande grupo de filtragem são as filtragens no domínio do espaço, em que são manipulados os pixels da própria imagem, resultando em uma nova imagem de saída[1]. Para que possamos realizar as chamadas filtragens espaciais utilizamos de mascaras (também conhecidas como sub-imagem), pequena matriz que visa levar em conta os elementos vizinhos ao pixel analisado. O conceito de máscara fica mais claro analisando a Figura 1, onde podemos notar uma imagem na qual temos a presença de uma máscara 3x3:
Figura 1 - Conceito de máscara. Fonte: Autoria própria.
A máscara deve percorrer toda a imagem, pois somete assim conseguimos gerar uma nova imagem com as mesmas dimensões da imagem pré-processada e com novos valores para cada pixel. Vale lembrar que, ao utilizarmos uma máscara 3x3 devemos adicionar uma borda de zeros de espessura 1, com o objetivo de encaixar toda a sub-imagem na imagem a ser processada. No caso de uma sub-imagem de 5x5, a borda de zeros possuirá 2 de espessura, e assim sucessivamente. No trabalho realizado em questão utilizamos de filtragens espaciais lineares, filtro passa-baixa e filtro passa-alta, e não lineares filtro de mediana. A máscara para realizar o filtro passa-baixa possui todos seus elementos com o valor unitário, assim basta somar todos os pixels internos a máscara, e posteriormente realizar a média. Tal média deve ser alocada na nova imagem, na posição central em que a máscara esteve presente[2].
4
A aplicação de tal técnica tem como objetivo suavizar a imagem, e quanto maior a máscara, maior será a suavização. Caso a mesma tenha um tamanho relativamente grande (maior que 9), a imagem de saída será borrada, perdendo a representatividade de bordas. Já a técnica de filtragem espacial passa-alta, realiza o oposto do passa-baixa, ou seja, enaltece as bordas e mudanças de tons. Isso se deve ao fato que a mascará utilizada possui valores negativos nas extremidades e o elemento central valor positivo de maior expressão, na Figura 2 podemos ver a máscara 3x3 e 5x5 passa-alta
Figura 2 - Máscara passa-alta de (a) 3x3 e (b)5x5. Fonte: Autoria prórpria.
A filtragem espacial mediana, funciona da mesma maneira que a operação mediana, a qual o resultado é o elemento central de uma sequência de números ordenados [3], sendo muito eficiente para a retirada de ruídos do tipo sal e pimenta[1].
5
3. RESULTADOS OBTIDOS Os resultados obtidos foram divididos em sub categorias, afim de facilitar a compreensão do leitor. 3.1 FILTRO ESPACIAL PASSA-BAIXA Conforme solicitado foi implementado um programa que realiza a filtragem espacial passa-baixa, podemos ver os resultados obtidos abaixo:
Figura 3 - Filtragem espacial passa-baixa: (a) Imagem original e (b) imagem processada com máscara 3x3. Fonte: Autoria própria.
Podemos notar na Figura 3 que houve uma suavização nas bordas, conforme esperado. Na Figura 4 temos uma maior suavização e início de borramento devido a máscara possuir maior dimensão (5x5).
Figura 4 - Filtragem espacial passa-baixa: (a) Imagem original e (b) imagem processada com máscara 5x5. Fonte: Autoria própria.
Para tornar possível um melhor efeito comparativo entre as imagens, na Figura 5 apresentamos 3 diferentes mascaras e os resultados obtidos:
6
Figura 5 - Filtragem espacial passa-baixa: (a) Imagem original e em sequência, imagens processadas com máscaras: (b) 3x3 ,(c) 5x5 e (d) 7x7. Fonte: Autoria própria.
Como podemos notar na Figura 6, a filtragem espacial passa-baixa tem resultados relativamente bom quando aplicado a imagens com ruído do tipo gaussiano:
Figura 6 - Filtragem espacial passa-baixa: (a) Imagem original, (b) imagem corrompida com ruído gaussiano, e em sequência, imagens processadas com máscaras: (c) 3x3 e (d) 5x5. Fonte: Autoria própria.
Já quando é aplicado em uma imagem que apresenta ruído do tipo sal e pimenta, consegue retirar boa parte do ruído, contudo não temos um bom resultado conforme observamos na Figura 7:
7
Figura 7 - Filtragem espacial passa-baixa: (a) Imagem original, (b) imagem corrompida com ruído sal e pimenta, e em sequência, imagens processadas com máscaras: (c) 3x3 e (d) 5x5. Fonte: Autoria própria.
3.2 FILTRO ESPACIAL PASSA-ALTA De maneira análoga, foi criado um programa que processa as imagens com o uso do filtro espacial passa-alta. Os resultados estão expostos abaixo:
Figura 8 - Filtragem espacial passa-alta: (a) Imagem original e (b) imagem processada com máscara 3x3. Fonte: Autoria própria.
Como era esperado houve um enaltecimento nos contornos, contudo a imagem escureceu muito, pois no filtro há valores negativos influenciando assim o escurecimento, tal resultado está exposta na Figura 8. Já Figura 9 temos o mesmo tipo de filtro, contudo com máscara de 5x5:
8
Figura 9 - Filtragem espacial passa-alta: (a) Imagem original e (b) imagem processada com máscara 5x5. Fonte: Autoria própria.
Com o aumento notamos que as bordas ficam ainda mais destacadas. Abaixo na Figura 10 está apresentado o filtro passa-alta com tamanho de máscaras distintos:
Figura 10 - Filtragem espacial passa-alta: (a) Imagem original e em sequência, imagens processadas com máscaras: (b) 3x3 ,(c) 5x5 e (d) 7x7. Fonte: Autoria própria.
3.3 FILTRO ESPACIAL MEDIANA Como comentado no resumo teórico o filtro de mediana possui excelentes resultados quando aplicado a imagens com ruído sal e pimenta, assim visto na Figura 11:
9
Figura 11 - Filtragem espacial mediana: (a) Imagem original, (b) imagem corrompida com ruído sal e pimenta, e em sequência, imagens processadas com máscaras: (c) 3x3 e (d) 5x5. Fonte: Autoria própria.
Até mesmo quando aplicado em ruído gaussiano o filtro de mediana tem resultados satisfatórios, como observamos a Figura 12 abaixo:
Figura 12 - Filtragem espacial mediana: (a) Imagem original, (b) imagem corrompida com ruído gaussiano, e em sequência, imagens processadas com máscaras: (c) 3x3 e (d) 5x5 Fonte: Autoria própria.
Como na Figura 13 a aplicação de filtragem espacial mediana com máscaras de tamanhos superiores a 5, causam um grande embasamento na imagem final.
10
Figura 13 - Filtragem espacial passa-alta: (a) Imagem original e em sequência, imagens processadas com máscaras: (b) 3x3 ,(c) 5x5 e (d) 7x7. Fonte: Autoria própria.
.
11
4. CONCLUSÃO Após aplicarmos os 3 diferentes tipos de filtros solicitados no relatório ficou claro que, devemos saber qual é nosso objetivo final para que possamos escolher o filtro desejado e ser possível alcançar tais objetivos. Caso queira destacar as bordas, devemos utilizar o filtro passa-altas com uma máscara grande (em torno de 7), contudo a imagem final se escurecera demasiadamente em virtude de tirar a componente DC da imagem. Portanto devemos ter cuidado ao utiliza-los. Para redução de ruído do tipo sal e pimenta, e também o ruído gaussiano, é recomendado utilizar o filtro de mediana com máscaras de no máximo 5 colunas e 5 linhas, afim de evitar o alto embasamento. O processo de filtragem espacial passa-baixa é indicado para suavização de superfícies, além de também poder ser aplicado a ruídos. Contudo seu resultado não é tão eficiente quando comparado ao filtro de mediana. Notamos também que tais processos de filtragem espaciais, podem ser utilizado como técnicas de pré-processamento, afim de destacar ou retirar determinadas características da imagem de entrada. Aumentando a qualidade da imagem que virá a ser processada.
12
13
5. REFERÊNCIAS [1]
R. Gonzales e R. Woods, PROCESSAMENTO DE IMAGENS DIGITAIS, 3o ed. São Paulo: Pearson, 2010.
[2]
A. Backes, FILTRAGEM ESPACIAL - Filtros Digitais no domínio do espaço. Uberlandia, p. 1–27, 2014.
[3]
P. L. Meyer, PROBABILIDADE - Aplicações à Estatística, 2o ed, vol. 22, no 62. Aparecida: Santuário, 2012.
14
15
6. ANEXOS 6.1 CÓDIGO PRINCIPAL clc; clear; close all; %aquisição da imagem entrada=imread('Lenna256.bmp'); tamMasc=3; colormap(gray(256)); subplot(2,2,1);%linha coluna posição image(entrada); axis equal; axis('off'); %ruido gaussiano %k=round(normrnd(0,sqrt(100),[size(entrada)])); %ruido sal e pimenta k=randi(11,256); k=k-1; for a=1:256 for b=1:256 if (k(a,b)==10) k(a,b)=255; elseif(k(a,b)==0) k(a,b)=0; else k(a,b)=1; end end end entrada=entrada.*k; %adicinando ruido
subplot(2,2,2);%linha coluna posição image(entrada); axis equal; axis('off'); for a=0:1 tamMasc=3+2*a; %chamando a função Filtro passa Baixa %saida=FPBespacial(entrada,tamMasc); %chamando a função Filtro passa Alta
16
%saida=FPAespacial(entrada,tamMasc); %chamando a função Filtro Mediana saida=FMediana(entrada,tamMasc); subplot(2,2,3+a);%linha coluna posição image(saida); axis equal; axis('off'); clear saida; clear tamMasc; end
6.2 FUNÇÃO FILTRO PASSA BAIXA function saida=FPBespacial(entrada,tamMasc) %o quanto deve preencher a imagem original para passar a mascara aumento=(tamMasc-1)/2; %verifica as dimensões da entrada tamanho=size(entrada); %cria matriz de 0 que ira prencher a imagem, com o aumento necessario para passar a mascara entradaConca=zeros(tamanho(1)+2*aumento,tamanho(2)+2*aumento); %concatena a matriz de zero com a entrada entradaConca((1+aumento):(tamanho(1)+aumento),(1+aumento):(tamanho(2)+aumento))=entrada;
soma=0; numeroPtos=0; for linha=0:(tamanho(1)-1)%roda as linhas for coluna=0:(tamanho(2)-1)%roda as colunas for Lmasc=1:tamMasc %roda linhas da mascara for Cmasc=1:tamMasc %roda colunas da mascara pixel=entradaConca((linha+Lmasc),(coluna+Cmasc)); if (pixel != 0) %Faz com que apenas pixels diferente de zero contribuam numeroPtos++; end soma=soma+pixel; end end saida((linha+1),(coluna+1))=soma/(numeroPtos);%cria a nova imagem soma=0; %zera o somador numeroPtos=0; %zera o numero de ptos da imagem dif de zero end end endfunction;
17
6.3 FUNÇÃO FILTRO PASSA BAIXA function saida=FPAespacial(entrada,tamMasc) %o quanto deve preencher a imagem original para passar a mascara aumento=(tamMasc-1)/2; %verifica as dimensões da entrada tamanho=size(entrada); %cria matriz de 0 que ira prencher a imagem, com o aumento necessario para passar a mascara entradaConca=zeros(tamanho(1)+2*aumento,tamanho(2)+2*aumento); %concatena a matriz de zero com a entrada entradaConca((1+aumento):(tamanho(1)+aumento),(1+aumento):(tamanho(2)+aumento))=entrada; soma=0; numeroPtos=0; for linha=0:(tamanho(1)-1)%roda as linhas for coluna=0:(tamanho(2)-1)%roda as colunas for Lmasc=1:tamMasc %roda linhas da mascara for Cmasc=1:tamMasc %roda colunas da mascara if ( entradaConca((linha+Lmasc),(coluna+Cmasc))!=0)
%Faz com que
apenas pixels diferente de zero contribuam numeroPtos++; end if (Lmasc == tamMasc-aumento && Cmasc ==tamMasc-aumento) % apenas o elemento centra da matriz não possui -1 como multiplicação pixel=(tamMasc^21)*entradaConca((linha+Lmasc),(coluna+Cmasc)); else pixel=(-1)*entradaConca((linha+Lmasc),(coluna+Cmasc)); end soma=soma+pixel; end end saida((linha+1),(coluna+1))=soma/(numeroPtos);%cria a nova imagem soma=0; %zera o somador numeroPtos=0; end end endfunction
6.4 FUNÇÃO FILTRO MEDIANA function saida=FMediana(entrada,tamMasc) %o quanto deve preencher a imagem original para passar a mascara aumento=(tamMasc-1)/2;
18
%verifica as dimensões da entrada tamanho=size(entrada); %cria matriz de 0 que ira prencher a imagem, com o aumento necessario para passar a mascara entradaConca=zeros(tamanho(1)+2*aumento,tamanho(2)+2*aumento); %concatena a matriz de zero com a entrada entradaConca((1+aumento):(tamanho(1)+aumento),(1+aumento):(tamanho(2)+aumento))=entrada;
soma=0; posicao=0; mediana=ceil(tamMasc^2/2);%indice do elemento centra do vetor pixel for linha=0:(tamanho(1)-1)%roda as linhas for coluna=0:(tamanho(2)-1)%roda as colunas for Lmasc=1:tamMasc %roda linhas da mascara for Cmasc=1:tamMasc %roda colunas da mascara posicao++;% cada loop incrementa um e dita a posição do pixel pixel(posicao)=entradaConca((linha+Lmasc),(coluna+Cmasc));%armazeno os valores da mascara em um vetor end end pixel=sort(pixel);%ordei o vetor saida((linha+1),(coluna+1))=pixel(mediana);%cria a nova imagem posicao=0; end end endfunction