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.
- 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.
- 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.
- 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.
- Filtro Laplaciano (laplacian): O filtro laplaciano é um filtro de realce de bordas que destaca áreas de alta variação de intensidade na imagem.
- Filtro de Realce (boost): O filtro de realce é utilizado para enfatizar características específicas da imagem, aumentando a nitidez e o contraste local.
- 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.
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.
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.