segunda-feira, 11 de abril de 2011

Filtro de Média

O filtro de média possibilita a redução de ruídos na imagem através do cálculo da média 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 de média 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 de média com máscara 7x7.

Imagem original - Modelo Lenna Söderberg

Imagem após a aplicação do filtro de média com máscara de 3 x 3

Imagem após a aplicação do filtro de média com máscara de 5 x 5

Imagem após a aplicação do filtro de média 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 *imgOriginal;
imgOriginal = cvLoadImage("tabuleiro_2011-04-12.jpg", -1);
IplImage *imgFiltroMedia = cvClone(imgOriginal);
cvSmooth( imgOriginal, imgFiltroMedia, CV_BLUR, 7, 7, 0, 0); cvSaveImage("tabuleiro_2011-04-12_7x7.jpg",imgFiltroMedia, 0);
cvNamedWindow("Original",CV_WINDOW_AUTOSIZE); cvShowImage( "Original", imgOriginal); cvNamedWindow("Filtro de Media",CV_WINDOW_AUTOSIZE); cvShowImage( "Filtro de Media", imgFiltroMedia); cvWaitKey(0);
cvDestroyWindow("Original Lena"); cvDestroyWindow("Filtro de Media");
cvReleaseImage(&imgOriginal); cvReleaseImage(&imgFiltroMedia);
return 0;


No próximo post, demonstraremos a aplicação de um Filtro de Mediana.


Até breve.

Nenhum comentário:

Postar um comentário