3.5
Implementação do Filtro Espacial
Os valores de intensidade dos pixels da matriz RGB são capturados pelo sensor e enviados sequencialmente para o bloco de Ąltragem. O Ćuxo de pixeis alimenta os regis- tradores, conforme ilustra a Figura 24.
Figura 24 Ű Implementação do deslizamento do kernel sobre a imagem de entrada. Fonte: http://blog.teledynedalsa.com/2012/05/image-Ąltering-in-fpgas/
A ordem dos pixels da imagem que chega aos registradores segue o sentido cres- cente dos eixos � e �, linha a linha, como mostra a Figura 25. Os bufers lineares são essencialmente FIFOs que atrasam o Ćuxo de pixels no fator de um comprimento de linha.
Figura 25 Ű Sequência de pixels enviados ao bloco de Ąltragem. Fonte: http://blog.teledynedalsa.com/2012/05/image-Ąltering-in-fpgas/
A saída de cada registrador é conectada também a um multiplicador. Desta forma, ao passo em que os pixels se deslocam através dos registradores, estes são multiplicados pelos correspondentes coeĄcientes do kernel do Ąltro. A adição dos valores de saída dos multiplicadores, ilustrada pela Figura 26, resulta em uma iteração da convolução, con- forme ilustra a Figura 27.
40 Capítulo 3. Implementação e Resultados
Figura 26 Ű Soma dos resultados da multiplicação dos pixels da janela pelos coeĄcien- tes do kernel do Ąltro. Fonte: http://blog.teledynedalsa.com/2012/05/image- Ąltering-in-fpgas/
Figura 27 Ű Disposição da vizinhaça de um pixel gerado na Ąltragem. Fonte: (YUDI,2010)
Para ilustrar o deslocamento dos pixels ao longo dos registradores do módulo GaussianFilter foi elaborado um Testbench na ferramenta ISE ISE Design Suite 14.7. A cada ciclo do clock os pixels se deslocam através dos registradores, como ilustra a Ągura
28, em que a variável �i� corresponde a entrada de pixels no módulo de GaussianFilter;
as variáveis ��_���, correspondem ao sinal de saída de do n-ésimo registrador. Cada valor ��_��� é multiplicado pelo respectivo coeĄciente do kernel do Ąltro. Neste caso, a imagem possui uma largura de 4 pixels, desta forma, os pixels que adentram a segunda e terceira linha do kernel são atrasados em um fator de 4 pixels. O processo segue até que todos os pixels da imagem resultante da Ąltragem sejam obtidos.
3.5. Implementação do Filtro Espacial 41
3.5.1 Critério de seleção do desvio padrão e tamanho do kernel de um filtro
Gaussiano
A distribuição Gaussiana é contínua e se extende inĄnitamente. No entanto, para efeitos práticos, esta distribuição é truncada e discretizada, a Ąm de reduzir o custo computacional de Ąltragem. Neste sentido, há uma regra empírica que serve de referência para determinar o tamanho do kernel do Ąltro. Esta regra se baseia na propriedade 68- 95-99.7 da distribuição normal.
A função de distribuição acumulada (FDA) descreve a probabilidade de uma va- riável aleatória assumir um valor inferior ou igual a determinado valor real � e é descrita pela equação �.
�(�) = ︁ x
−inf
�(�i)�� (3.1)
A Figura 29 ilustra uma distribuição normal e as porcentagens da FDA repre- sentadas para alguns intervalos. No intervalo em que a variável aleatória assume valores entre 0 a à, a FDA corresponde a 68% da distribuição, ou seja, em um evento, há uma probabilidade de 68% de a variável aleatória assumir um valor que esteja neste invervalo. Analogamente, para os intervalos de [0, 2à] e [0, 3à] as probabilidades são de 95% e 99.7%, respectivamente. Comumente um Ąltro que contenha os valores da distribuição gaussiana no intervalo de [0, 3à] são considerados adequados, pois a quantidade de informação ig- norada não é signiĄcativa.
Figura 29 Ű Distribuição normal e as porcentagens referentes a 68%, 95% e 99.7% da área total
Para Ąltragem de uma image, um kernel bidimensional é adotado. A função Gaus- siana pode ser descrita como o produto de duas funções Gaussianas perpendiculares, e,
42 Capítulo 3. Implementação e Resultados
devido à simetria radial, os mesmos princípios aplicados a distribuição Gaussiana unidi- mensionais são aplicáveis à bidimensional.
Sendo assim, a propriedade 68-95-99.7 da distribuição normal permite determinar as dimensões do kernel de um Ąltro de imagem gaussiano com base no valor de desvio padrão adotado. Se seguida a regra empírica de que o intervalo [0, 3à] ser adequado para a construção do Ąltro, as dimensões do mesmo devem então ser iguais a 3à + 1 + 3à, dado que o elemento central do kernel corresponde ao valor máximo assumido pela função Gaussiana.
O valor de desvio padrão utilizado para gerar o kernel do Ąltro Gaussiano é esco- lhido de acordo com a aplicação, e por isso, exige o estudo sobre o espectro de frequência do tipo de imagem que se deseja Ąltrar. Conhecidas as frequências a serem eliminadas, o desvio padrão é então determinado.
Uma vez que este trabalho está focado em implementar a arquitetura em hardware do Ąltro espacial, foi escolhido um valor de desvio padrão que, ao utilizar como critério a propriedade 68-95-99.7 para dimensionar a janela, oferecesse o kernel mais simples possí- vel. Foi escolhido então o valor 0.5, com um kernel de dimensões 3�3, conforme mostrado na Tabela1. Se a regra de 3à fosse utilizada, o kernel deveria possuir tamanho 5x5, pois 3�à + 1 + 3�à = 5, no entanto, foram consideradas somente as informações em frequên- cia que estão a menos de 2à da média. Desprezando a informação em frequência que se encontra acima de 2à, ainda 95% da informação não é preservada.
Com intuito de evitar aritmética de ponto Ćutuante, os coeĄcientes do kernel foram multiplicados por 256 e arredondados para o inteiro mais próximo. Os valores obtidos são representados pela tabela2. Para se obter os mesmos resultados da Ąltragem como o kernel da tabela 1 foi preciso dividir o valor de intensidade dos pixels da imagem resultante da Ąltragem pelo Ąltro da tabela 2 por 256. O processo completo de Ąltragem espacial é representado pela Figura30.
Tabela 1 Ű CoeĄcientes da máscara do Ąltro Gaussiano passa-baixas 0.0113 0.0838 0.0113
0.0838 0.6193 0.0838 0.0113 0.0838 0.0113
Tabela 2 Ű CoeĄcientes da máscara do Ąltro Gaussiano passa-baixas multiplicados por 256
3 21 3
21 158 21