segunda-feira, 16 de maio de 2011

Filtro Gaussiano

O filtro de gaussiano possibilita a redução de ruídos na imagem através do cálculo da distribuição normal (gauss ou gaussiana) dos números correspondentes aos pixels da máscara utilizada. No OpenCV as máscaras, para a correta utilização do filtro, devem ser MxN, onde M e N sejam números ímpares, podendo ser M = N. A seguir encontram-se quatro imagens: a primeira é uma imagem na forma original de captura, a segunda é o resultado da aplicação do filtro gaussiano com máscara 3x3, a terceira é o resultado da aplicação de uma máscara 5x5 e por fim uma imagem resultante da aplicação do filtro gaussiano com máscara 7x7.

Imagem original - Modelo Lenna Söderberg

Imagem após a aplicação do filtro de mediana com máscara de 3 x 3
Imagem após a aplicação do filtro de mediana com máscara de 5 x 5
Imagem após a aplicação do filtro gaussiano com máscara de 7 x 7


Em linguagem C está o código-fonte utilizado para gerar a última imagem (com máscara de 7x7) a seguir. Perceba, através da primeira linha de código, que utilizamos a biblioteca OpenCV, a qual deve ser instalada e  configurada para reproduzir o resultado do algoritmo.
#include <cv.h>
#include <highgui.h>

int main(int argc, char *argv[])
{
IplImage *original;
original = cvLoadImage("Lenna_Söderberg.png", -1);
IplImage *imgFiltroGaussiana = cvClone(original);
cvSmooth(original, imgFiltroGaussiana, CV_GAUSSIAN, 7, 7, 0, 0);
cvSaveImage("Lenna_Söderberg_Gaussiana_7x7.jpg",imgFiltroGaussiana, 0);
cvNamedWindow("Original",CV_WINDOW_AUTOSIZE);
cvShowImage( "Original", original);
cvNamedWindow("Filtro de Gaussiana",CV_WINDOW_AUTOSIZE);
cvShowImage( "Filtro de Gaussiana", imgFiltroGaussiana);
cvWaitKey(0);
cvDestroyWindow("Original");
cvDestroyWindow("Filtro de Gaussiana");
cvReleaseImage(&original);
cvReleaseImage(&imgFiltroGaussiana);
return 0;
}

No próximo post, demonstraremos a aplicação do operador morfológico de dilatação.

Nenhum comentário:

Postar um comentário