Tem algumas ferramentas que são como coringas – acho que toda atividade tem disso. Bom, o filtro de mediana é um dos coringas para processamento de imagens. Não para grandes feitos, mas para os pequenos: quando a segmentação deu quase certo, só precisa de um empurrãozinho.
Vamos ver uma imagem

Surface (road), de Alice N Wondrind.
Escolhi a imagem da superfície de uma rua ou estrada, que encontrei no Flickr. Ela tem dois tipos de superfície bem distintos, um mais claro e outro mais escuro. Mas apesar de isso ficar muito claro para nossos olhos, a segmentação por threshold não é perfeita. A parte clara tem ranhuras que ficam escuras, e a parte escura tem pontos mais claros, onde a luz reflete na superfície granulada.
A imagem é de AliceNWondrlnd.
Compare os resultados

Comparação: imagem original e o resultado do threshold (esquerda); imagem após filtro de mediana com tamanho 5 (direita).
Na tentativa sem usar o filtro, o resultado vem com muito ruído. É possível tratá-lo com uma sucessão de Aberturas e Fechamentos, mas é preciso bastante cuidado para que a linha divisória permaneça no mesmo lugar. O resultado produzido com o uso do filtro ficou bem mais nítido. Ainda será necessária uma pequena correção com operações morfológicas, mas nada muito complexo.
O filtro de Mediana
O artigo Median Filter na wikipédia em inglês tem boas informações, mas em português não há nada ainda.
Mediana é uma medida estatística, que caracteriza uma tendência central para um conjunto de dados. No processamento de imagens, o nosso conjunto de dados vem da imagem.
O filtro tem lá sua definição matemática, mas por agora vamos definir um filtro como um operador, que tem um tamanho definido, um centro, e que “aplicado” sobre a imagem em todas as posições possíveis, como se fosse um “carimbo” especial. Fica mais fácil com um exemplo:
Esta será nossa imagem (os valores dos pixels):
0 0 5 3 5 5
1 1 5 2 5 5
1 2 1 5 4 5
E vamos aplicar um filtro de mediana, no tamanhos 3X3. A primeira posição é a que coloca o centro do filtro sobre o primeiro pixel da imagem: os valores dentro do filtro são:
x x x
x 0 0
x 1 1
coloquei x nos lugares em que não há pixels, mas vamos substituí-los por zeros e calcular a mediana (a mediana se calcula ordenando os dados e pegando o do meio):
[0, 0, 0, 0, 0, 0, 0, 1, 1] -> mediana = 0.
Então o valor do primeiro pixel nesta imagem será 0. Vamos fazer o mesmo com o segunto pixel:
[0, 0, 0, 0, 0, 1, 1, 5, 5] -> zero de novo.
O terceiro pixel:
[0, 0, 0, 0, 1, 2, 3, 5, 5] -> mediana = 1.
O resultado final vai ser:
0 0 1 3 3 0
0 1 2 5 5 5
0 1 1 2 4 0
Outras informações
A principal utilidade do filtro de mediana é diminuir o ruído na imagem, principalmente quando ele é formado por “pontinhos” (também conhecido como “salt and peper”, ou sal e pimenta). Mas ele também é útil para tornar bordas mais nítidas em algumas situações. Parece pouco, mas muitas vezes é o que faz a diferença.
Os filtros de mínima e de máxima funcionam da mesma forma.
O filtro de média também tem o mesmo funcionamento, mas não as mesmas propriedades. Ao invés de criar contornos nítidos, ele “borra a imagem”.
O ImageJ tem estes quatro filtros, assim como alguns outros, no menu Process –> Filters.



[...] amenizar o problema das linhas brancas, escolhi um filtro de mediana de tamanho 5. Foi o tamanho máximo que consegui usar sem destruir os limites das [...]
[...] Filtro de mediana [...]