Filtragem Espacial

Visão Computacional

Pontifícia Universidade Católica de Campinas

Prof. Dr. Denis M. L. Martins

Objetivos de Aprendizagem

  • Compreender os fundamentos matemáticos que sustentam a filtragem espacial em imagens digitais.
  • Implementar operações de convolução, suavização e realce utilizando kernels clássicos (Gaussiano, Laplaciano, Sobel, etc.).
  • Avaliar o resultado da aplicação dos filtros através de percepção visual.
  • Aplicar técnicas de filtragem para resolver problemas reais: remoção de ruído salt‑and‑pepper, realce de bordas, etc.

Introduzindo os Conceitos de Conectividade e Vizinhança de um Pixel

  • Cada pixel possui vizinhos que definem sua relação espacial com o restante da imagem.
  • Conectividade: Dois pixels são conectados se existe um caminho entre eles formado por pixels vizinhos.
  • Vizinhança de um pixel: Conjunto que contém todos os pixels que podem ser alcançados a partir de via conectividade.
    • Conectividade 4 pode separar objetos que tocam apenas em cantos; conectividade 8 os une.

center

Exemplo de vizinhança de um pixel. Fonte: COVAP-UTFPR.

  • Coordenadas da Vizinhança de um pixel na posição :

Adjacência

  • Adjacência: Dois pixels são adjacentes se compartilham pelo menos um ponto comum (contorno ou vértice).
    • 4‑adjacência – vizinhos que compartilham uma borda: e .
    • 8‑adjacência – inclui também os quatro diagonais: .
  • Conectividade: Um conjunto de pixels forma uma região se cada pixel da região pode ser alcançado a partir de qualquer outro via um caminho de adjacentes dentro da mesma região.

center

Exemplo de adjacência de pixels. Fonte: Jackson Gomes.

Filtragem Espacial

  • Ideia Geral: Cada pixel é substituído por uma combinação ponderada dos vizinhos.
  • Objetivo principal: modificar características da imagem (suavizar, realçar bordas, remover ruído).
  • Componente principal: Filtro aplicado sobre a imagem. Expresso como uma matriz ou, de forma análoga, como uma imagem.
    • Nomenclatura: Filtros, Máscaras, Kernel: .

center
Exemplo de aplicação de filtro de aguçamento e de suavização. Fonte: COVAP-UTFPR

Filtro Espacial

  • Componentes:
    • Vizinhança: normalmente um pequeno retângulo.
    • Operação: realizada sobre os pixels da imagem incluídos na vizinhança.
  • Filtragem: cria um novo pixel com coordenadas iguais às coordenadas do centro da vizinhança, e cujo valor é o resultado da operação de filtragem.
  • Imagem Filtrada (ou processada): Gerada à medida que o centro do filtro percorre cada pixel na imagem de entrada.


Esquema geral da filtragem espacial. Fonte: visaocomputacional.com.br.

Convolução

  • Operação fundamental nesta disciplina.
  • Kernel: matriz de pesos .
  • Duas representações geral de um kernel 3 x 3 na lousa

Operação de correlação onde as partes sombreadas são o primeiro elemento de saída, bem como os elementos tensores de entrada e kernel usados para o cálculo de saída. Fonte: Deep Dive into Deep Learning.

Convolução é a base para as CNNs,
redes neurais convolucionais,
e para deep learning.

Exemplo de uma CNN. Fonte: Google Developers.

Exemplo de Filtragem Espacial

center

Exemplo de aplicação de filtro espacial. Fonte: Cezanne Camacho.

Exercício Prático: Convolução

  • Dados a imagem de entrada e o kernel abaixo (esquerda), calcule a matriz da imagem resultante da convolução entre e .

center

Exemplo de convolução. Fonte: Austing Walters.

center

Convolução nas bordas de uma imagem. Fonte: Cezanne Camacho.

Exercício Prático: Convolução (Resolução)

center

Exemplo de convolução. Fonte: Austing Walters.

Implementação Prática (OpenCV)

import cv2
import numpy as np

# Carregar a imagem em escala de cinza
imagem = cv2.imread("exemplo.jpg", cv2.IMREAD_GRAYSCALE)

# Definir um kernel de suavização (média)
kernel = np.ones((3,3), np.float32) / 9  # Normalizamos dividindo por 9

# Aplicar a convolução com o kernel
imagem_suavizada = cv2.filter2D(imagem, -1, kernel)

# Mostrar as imagens original e suavizada
cv2.imshow("Original", imagem)
cv2.imshow("Suavizada", imagem_suavizada)
cv2.waitKey(0)
cv2.destroyAllWindows()

Exemplos de Filtros Espaciais

  • Filtro de Média: Utilizado para suavização da imagem.
  • Diminui a nitidez pela redução de fortes transições de intensidade entre os pixels.
  • Desfocar os objetos menores e deixar os maiores em maior evidência.

Exemplo de kernel de média 15 x 15 sobre uma imagem capturada pelo telescópio Hubble. Note que o desfoque ajuda a dar mais ênfase aos objetos maiores. A terceira imagem é o resultado de thresholding. Fonte: COVAP-UTFPR.

Exemplo de aplicação de filtro de média.
Filtros quadrados de tamanhos 3, 5, 9, 15 e 35. Fonte: COVAP-UTFPR

Exemplos de Filtros Espaciais (cont.)

  • Filtro de Mediana: Utilizado para redução de ruído da imagem.
  • Elimina picos isolados (outliers).
  • Substitui o valor de um pixel pela mediana dos valores de intensidade na vizinhança desse pixel.
  • Note que o valor original do pixel é incluído no cálculo da mediana.

Exemplo de remoção de ruído sal e pimenta em imagem de raio X de uma placa de circuito por filtro de mediana. Fonte: COVAP-UTFPR.

Filtro Gaussiano

  • Filtro de média ponderada, mas com seus pesos seguindo uma aproximação da distribuição gaussiana.
  • controla o largura da distribuição; quanto maior, mais suave a imagem resultante.
  • Suaviza a imagem (leve borramento), mas preserva melhor as bordas.
  • Indicado para reduzir ruído branco e no pré‑processamento em detecção de bordas.


Aplicação de filtro gaussiano de diferentes tamanhos. Fonte: Slide Serve.

Outros de Filtros Espaciais

Imagem Original (identidade)

center

Detecção de Borda

center

Exemplo de filtros espaciais. Fonte: COVAP-UTFPR.

Filtro Laplaciano

Detecta variação de intensidade (bordas).

Filtro de Sobel

Estima gradientes em direções horizontal e vertical.

Demonstração em https://setosa.io/ev/image-kernels/

Classificação de Filtros

  1. Lineares – resposta proporcional à entrada (ex.: convolução).
  2. Não‑lineares – dependência de funções não lineares (ex.: mediana).
Tipo Operação principal Exemplo
Linear Média, Gaussiano
Não‑linear Função de decisão sobre vizinhança Max, Mediana

Extra: Dilatação e Erosão

Dilatação

Erosão

Ilustração de operação de dilatação e erosão via filtros espaciais. Fonte: Penny Xu.

Resumo e Próximos Passos

  • Convolução: ferramenta matemática central.
  • Filtros lineares (média, Gaussiano) oferecem suavização controlada; a separabilidade do kernel pode reduzir drasticamente o custo computacional.
  • Filtros não‑lineares (mediana, adaptativos) são essenciais para robustez contra ruído impulsivo e preservação de bordas em cenários adversos.
  • A escolha entre suavização e realce depende da aplicação: imagens médicas, visão robótica ou processamento de vídeo em tempo real.
  • Próximos passos: Implementar filtros e analisar resultados (prática).

center

Atividade recomendada: Leitura das seções 3.4 a 3.7.

Perguntas e Discussão

  • Cite três aplicações industriais ou científicas onde a filtragem espacial desempenha um papel crítico e explique por que o filtro escolhido foi adequado ao problema.
  • Como você aplicaria filtros espaciais para melhorar a qualidade de imagens médicas (ex.: tomografia, ressonância magnética) sem introduzir artefatos que possam comprometer o diagnóstico?
  • Quais são as principais limitações dos filtros lineares quando se trata de preservar detalhes finos em imagens de alta resolução?
  • Como os filtros não‑lineares, como a mediana, podem alterar a distribuição de intensidade da imagem e quais implicações isso tem para tarefas subsequentes (segmentação, classificação)?

- **Distinguir** entre filtros lineares e não‑lineares, reconhecendo suas respectivas aplicações práticas.

* Em operações morfológicas: - *Erosão*: $I_{\text{eros}}(x,y)=\min_{(i,j)\in\mathcal{N}(x,y)} I(x+i, y+j)$. - *Dilatação*: $I_{\text{dil}}(x,y)=\max_{(i,j)\in\mathcal{N}(x,y)} I(x+i, y+j)$.

| Tipo | Vizinhos considerados | Número de vizinhos | |------|-----------------------|--------------------| | **4‑conectividade** | Norte, Sul, Leste, Oeste | 4 | | **8‑conectividade** | 4‑conectividade + diagonais (NE, SE, SW, NW) | 8 |

* Para uma intuição visual veja também: [Convolution Visualizer](https://ezyang.github.io/convolution-visualizer/index.html).

- **Separabilidade**: se $H = a\,b^T$, o cálculo reduz de $\mathcal{O}(N^2)$ para $\mathcal{O}(N)$.

- **Cuidado com bordas**: modos de extensão (replicação, reflexão, zero‑padding).

* $G(x) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\qquad$ Aproximação: $\quad G'(x) = e^{-\frac{(x-\mu)^2}{2\sigma^2}}$

- Quais são as principais diferenças entre filtros **passa‑baixa**, **passa‑alta** e **realce de bordas** em termos de impacto visual na imagem?

- Em que situações um **filtro Gaussiano** é preferível a uma média simples, mesmo considerando o **custo computacional** adicional?