O filtro de mediana possibilita a redução de ruídos na imagem através do cálculo da mediana 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 mediana 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 mediana 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 de mediana 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 *temp;temp = cvLoadImage("Lenna_Söderberg.png", -1);IplImage *imgFiltroMediana = cvClone(temp);cvSmooth( temp, imgFiltroMediana, CV_MEDIAN, 7, 7, 0, 0);cvSaveImage("Lenna_Söderberg_Mediana_7x7.jpg",imgFiltroMediana, 0);cvNamedWindow("Original",CV_WINDOW_AUTOSIZE);cvShowImage( "Original", temp);cvNamedWindow("Filtro de Mediana",CV_WINDOW_AUTOSIZE);cvShowImage( "Filtro de Mediana", imgFiltroMediana);cvWaitKey(0);cvDestroyWindow("Original");cvDestroyWindow("Filtro de Mediana");cvReleaseImage(&temp);cvReleaseImage(&imgFiltroMediana);return 0;}
No próximo post, demonstraremos a aplicação de um Filtro Gaussiano.
Até breve.
Muito boa a postegem, Obrigado pela ajuda
ResponderExcluirTranquilo, Jonas!
ResponderExcluir