Post

Filtragem no domínio espacial I - Convolução 🔄

A convolução é um processo pelo qual duas funções se combinam para formar uma terceira função no domínio espacial. Tal processo resulta do deslocamento de uma função sobre a outra e do cálculo de uma combinação linear entre ambas em cada ponto do deslocamento.

A convolução discreta entre duas imagens pode ser definida como:

\[h(x,y) = f(x,y)*g(x,y) = \frac{1}{MN}\sum_{m=0}^{M-1}\sum_{n=0}^{N-1}f(m,n) g(x-m, y-n)\]

As funções $ f(x, y) $ e $ g(x, y) $ normalmente estão associadas à imagem a ser filtrada e ao filtro digital associado.

Utilizando um exemplo fornecido, o objetivo é implementar o filtro LaplacianoGaussiano dentre os já existentes. A definição dos filtros está demonstrada abaixo bem como as suas aplicações em comparação com o frame de vídeo original que foi capturado para o experimento.

Para verificar o código correspondente, acesse: Github.com/ErnaneJ/pdi/convolution

  • Filtro de Média (media): O filtro de média é um filtro de suavização que calcula a média dos valores dos pixels em uma vizinhança, ajudando a reduzir o ruído e suavizar a imagem.
\[\begin{bmatrix} 0.1111 & 0.1111 & 0.1111 \\ 0.1111 & 0.1111 & 0.1111 \\ 0.1111 & 0.1111 & 0.1111 \\ \end{bmatrix}\]
OriginalFiltro Espacial - Media
Originalalt text
  • Filtro Gaussiano (gauss): O filtro gaussiano é um filtro de suavização que utiliza uma distribuição gaussiana para calcular o peso dos pixels em uma vizinhança, proporcionando uma suavização mais suave e natural.
\[\begin{bmatrix} 0.0625 & 0.125 & 0.0625 \\ 0.125 & 0.25 & 0.125 \\ 0.0625 & 0.125 & 0.0625 \\ \end{bmatrix}\]
OriginalFiltro Espacial - Gauss
Originalalt text
  • Filtro de Sobel Horizontal (horizontal): O filtro de Sobel horizontal é um filtro de detecção de bordas que realça as transições horizontais de intensidade na imagem.
\[\begin{bmatrix} -1.0 & 0.0 & 1.0 \\ -2.0 & 0.0 & 2.0 \\ -1.0 & 0.0 & 1.0 \\ \end{bmatrix}\]
OriginalFiltro Espacial - Horizontal
Originalalt text
  • Filtro de Sobel Vertical (vertical): O filtro de Sobel vertical é um filtro de detecção de bordas que realça as transições verticais de intensidade na imagem.
\[\begin{bmatrix} -1.0 & -2.0 & -1.0 \\ 0.0 & 0.0 & 0.0 \\ 1.0 & 2.0 & 1.0 \\ \end{bmatrix}\]
OriginalFiltro Espacial - Vertical
Originalalt text
  • Filtro Laplaciano (laplacian): O filtro laplaciano é um filtro de realce de bordas que destaca áreas de alta variação de intensidade na imagem.
\[\begin{bmatrix} 0.0 & -1.0 & 0.0 \\ -1.0 & 4.0 & -1.0 \\ 0.0 & -1.0 & 0.0 \\ \end{bmatrix}\]
OriginalFiltro Espacial - Laplaciano
Originalalt text
  • Filtro de Realce (boost): O filtro de realce é utilizado para enfatizar características específicas da imagem, aumentando a nitidez e o contraste local.
\[\begin{bmatrix} 0.0 & -1.0 & 0.0 \\ -1.0 & 5.2 & -1.0 \\ 0.0 & -1.0 & 0.0 \\ \end{bmatrix}\]
OriginalFiltro Espacial - Boost
Originalalt text
  • Filtro Laplaciano do Gaussiano (laplgauss): O filtro Laplaciano do Gaussiano é uma máscara de convolução que combina o filtro gaussiano com o filtro laplaciano. Ele é utilizado para realçar características finas e bordas de uma imagem, enquanto suprime o ruído de alta frequência. Cada elemento da matriz representa o peso atribuído a um pixel na vizinhança, com os pesos maiores no centro da matriz e diminuindo gradualmente em direção às bordas. Isso resulta em um realce das bordas da imagem, preservando a suavização proporcionada pelo filtro gaussiano.
\[\begin{bmatrix} 0.0 & 0.0 & 1.0 & 0.0 & 0.0 \\ 0.0 & 1.0 & 2.0 & 1.0 & 0.0 \\ 1.0 & 2.0 & -16.0 & 2.0 & 1.0 \\ 0.0 & 1.0 & 2.0 & 1.0 & 0.0 \\ 0.0 & 0.0 & 1.0 & 0.0 & 0.0 \\ \end{bmatrix}\]
OriginalFiltro Espacial - Laplaciano Gaussiano
Originalalt text

Foi optado pelo uso do modelo 5x5 como parte de uma experimentação para explorar diferentes configurações de filtro e sua aplicação no código. No entanto, é importante notar que o filtro Laplaciano do Gaussiano pode ser efetivamente implementado em uma matriz 3x3, mantendo a consistência com os filtros anteriores. Segue abaixo a representação da matriz 3x3 para o Laplaciano do Gaussiano:

\[\begin{bmatrix} 0.0 & 1.0 & 0.0 \\ 1.0 & -4.0 & 1.0 \\ 0.0 & 1.0 & 0.0 \\ \end{bmatrix}\]

É interessante também compararmos o laplaciano com o LaplacianoGaussiano.

Filtro Espacial - LaplacianoFiltro Espacial - Laplaciano Gaussiano
alt textalt text

Note que o filtro Laplaciano Gaussiano ressalta muito mais as bordas do que somente a aplicação do filtro Laplaciano. Isso e devido ao fato do filtro Gaussiano suavizar a imagem, reduzindo o ruído, antes de aplicar o filtro Laplaciano. Isso ajuda a minimizar os efeitos do ruído e a suavizar a transição entre os pixels na imagem permitindo uma detecção de bordas mais assertiva.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.