Filtros Espaciais & Convoluções 2D (SpatialFilters.cs)
Diferente das operações pontuais, a Filtragem Espacial calcula o novo valor de um pixel considerando a vizinhança de pontos ao seu redor (geralmente uma janela de ou pixels).
O arquivo SpatialFilters.cs reúne os operadores lineares e de ordenação.
1. O que é uma Convolução 2D?
A Analogia da Lupa de Mistura:
Imagine colocar uma pequena lupa de quadradinhos sobre a imagem. A lupa lê a cor dos 9 pixels vizinhos, multiplica cada um pelo peso indicado na matriz (Kernel) e soma tudo para descobrir a cor do quadradinho central:
Janela da Imagem: Kernel K (3x3):[ p00 p01 p02 ] [ w00 w01 w02 ][ p10 p11 p12 ] * [ w10 w11 w12 ][ p20 p21 p22 ] [ w20 w21 w22 ]
Novo Pixel Central = (p00*w00 + p01*w01 + ... + p22*w22) / Divisor + Bias2. Filtro da Média (Box Blur)
Substitui cada ponto pela média aritmética simples dos seus vizinhos:
3. Filtro Gaussiano 2D (Gaussian Blur)
O filtro Gaussiano dá mais importância ao pixel central e diminui o peso suavemente conforme nos afastamos, seguindo a Curva de Sino Normal 2D:
Matriz Gaussiana Discreta :
4. Máscara de Desfoque & Nitidez (Unsharp Masking)
Como Deixar uma Imagem Mais Nítida?
- Desfocamos uma cópia da imagem original com o Filtro Gaussiano.
- Subtraímos a cópia borrada da imagem original para isolar apenas os contornos finos:
- Somamos esses contornos de volta com um fator de ganho :
5. Filtro da Mediana (Eliminação de Ruído Sal & Pimenta)
A Analogia da Votação Democrática:
Quando a imagem tem pontinhos brancos ou pretos aleatórios (ruído Sal & Pimenta), a média borra o defeito. O Filtro da Mediana faz algo mais inteligente:
- Pega os 9 números da vizinhança;
- Organiza em ordem crescente (
Array.Sort); - Escolhe o número que ficou exatamente no meio (o 5º número).
Vizinhanca com Ruido Branco (255): [12, 14, 15, 13, 255, 14, 15, 12, 13]Valores Ordenados: [12, 12, 13, 13, 14, 14, 15, 15, 255] ^ Mediana = 14 (Ruido eliminado!)👉 Próximo Passo: Explore os Operadores de Gradiente e o Algoritmo Canny de 5 Etapas.