• Nenhum resultado encontrado

5 Algoritmos propostos para binarização de imagens de documentos

5.2 Binarização de documentos gráficos com preservação da qualidade visual

5.2.3 Filtragem bilateral

A aplicação de algoritmos de realce ou equalização de cores, como retinex, o gray

world ou o white patch, realça todos os elementos em uma imagem, incluindo os indesejáveis

como manchas e ruídos, como pode ser observado no exemplo da Figura 76.

Figura 76. (topo) A imagem original tem seus ruídos realçados (abaixo) após a aplicação do gray world.

Fonte: imagem do autor.

Ruídos e manchas, que foram realçados, irão fazer parte do resultado final a menos que sejam removidos antes da aplicação da equalização local. O problema com a aplicação de

filtros para a remoção de ruídos é a possibilidade de afetar elementos da imagem como bordas e detalhes, que devem ser preservados. O ideal então é a aplicação de um filtro que remova ruídos preservando as bordas presentes na imagem original (PEDRINI e SCHWARTZ, 2007)(BUADES; COLL; MOREL, 2006), a Figura 77 ilustra esta situação.

Figura 77. (a) Representação de uma região de borda em uma imagem com ruído (o degrau mais alto representa uma região mais clara) e (b) o resultado da aplicação de um filtro bilateral sobre (a).

(a) (b)

Fonte: TOMASI e MANDUCHI, 1998.

Com essa finalidade, um filtro foi proposto onde tanto a intensidade quanto a distância espacial entre os pixels são levadas em consideração, de uma forma similar ao filtro bilateral (TOMASI e MANDUCHI, 1998)(ELAD, 2002), onde a filtragem depende tanto das distâncias entre pixels no domínio espacial quanto no domínio da intensidade. A ideia é que, durante o processo de filtragem do pixel P1, outro pixel P2 só seja levado em consideração no

cálculo, caso este esteja não apenas próximo de P1, mas também tenha uma cor próxima. No

filtro proposto, a proximidade espacial é determinada por uma janela quadrada W, centrada no pixel a ser filtrado e com dimensões N × N. Um pixel P2 é então considerado próximo de P1

caso este esteja na janela W centrada em P1. O caso da proximidade entre cores é uma questão

de percepção e por esse motivo diferença de cores é calculada através da Equação 65, que é baseada no espaço de cor CIE L*a*b* que se destina para se alcançar uniformidade de percepção, possibilitando, assim, o cálculo da diferença como uma distância entre dois pontos no espaço tridimensional (WYSZECKI e STILES, 2000).

∆𝐸𝑖𝑗= ��𝐿∗𝑖− 𝐿𝑗∗�2+ �𝑎𝑖∗− 𝑎𝑗∗�2+ �𝑏𝑖∗− 𝑏𝑗∗�2 (65)

O filtro proposto funciona da seguinte forma: para cada pixel da imagem Pi a ser

filtrado, todos os seus vizinhos Pj que estejam na janela centrada em Pi e cuja distância Δ Eij

seja menor ou igual à distância D, são adicionados em uma lista, que vai conter todos os pixels que serão considerados no cálculo. A mediana entre os elementos desta lista é calculada e este valor é a nova intensidade do pixel em uma imagem temporária e na mesma posição do

pixel Pi. A mediana foi adotada em vez da média por ser mais eficaz em preservar as bordas.

Após percorrer todos os pixels, a imagem temporária está completa e o processo se repete, em um total de Niter iterações, mas agora a imagem temporária é considerada a imagem de entrada

a ser filtrada gerando uma nova imagem temporária. No final de todas as iterações, a última imagem temporária é o resultado do processo de filtragem. Essa descrição do filtro pode ser vista em linguagem algorítmica no Algoritmo 1.

O valor da distância de referência Dc tem um papel importante no equilíbrio entre a remoção de ruídos e manchas e na preservação das bordas.

Algoritmo 1. Algoritmo do filtro para redução de ruídos.

Definições

N : a dimensão da janela Dc : a distância de referência lista_pixels : uma lista de pixels

I : imagem de entrada

Itemp : imagem resultante temporária Iter : número de iterações

Pij : pixel da imagem I na posição (i, j)

Pv : pixel considerado um vizinho do pixel Pij

Ptempij : pixel da imagem temporária Itemp na posição (i, j)

Faça Iter vezes

Para cada canal RGB da imagem Faça Para cada pixel Pij da imagem Faça

Limpe lista_pixels

Para cada pixel Pv na janela N×N centrado em Pij Faça

Se | Pv - Pij | < Dc Então

Armazene Pvem lista_pixels

Ptempij = Mediana dos pixels em lista_pixels

I ← Itemp

Dc ← Dc − 1

Quanto maior essa distância, maior o intervalo de pixels que são considerados próximos, podendo, desta forma, passar a considerar pixels que pertençam à borda, o que é uma desvantagem no caso desta aplicação. A Figura 78 mostra a influência da distância Dc na remoção de manchas e ruídos. É possível observar na Figura 78(d), que alguns detalhes das bordas já estão comprometidos, mais especificamente na palavra "the".

A fim de aumentar o poder de redução de ruídos, mas continuando a preservar as bordas, a cada iteração a distância de referência Dc é decrementada de um, mas sempre diferente de zero (o algoritmo para, caso Dc = 0).

A Figura 79 exibe como a redução da distância Dc tem impacto na preservação de detalhes de borda, neste caso em uma imagem de uma cena natural, que faz parte da base de dados de Segmentação de Berkeley (Berkeley Segmentation Dataset Images, 2003), muito utilizada para pesquisas em segmentação de imagens de detecção de bordas.

Figura 78. Detalhe de ruídos e manchas em uma imagem de um documento exibindo o efeito de variar o valor da distância de referência entre cores Dc. (a) imagem original, (b) Dc = 5, (c) Dc = 10 e (d) Dc = 30. Note como as bordas do texto permanecem nítidas nas imagens (b) e (c), mas já perdem nitidez na imagem (d). Em todos os

casos Niter = 5 e W = 5.

(a) (b)

(c) (d)

Fonte: imagem do autor.

Na Figura 80, que exibe um detalhe de um documento com elemento gráfico, é possível observar como a redução iterativa da Dc foi mais eficaz na preservação das bordas enquanto a Figura 81 compara o resultado da Figura 78(d) com os mesmos parâmetros, mas reduzindo o valor de Dc a cada iteração.

Optamos por apresentar esses resultados em uma cena natural ao invés de um documento para as diferenças ficarem mais facilmente perceptíveis.

Figura 79. Exemplo mostrando a diferença dos resultados variando o tamanho da janela W. Em todos os exemplos Niter = 5 e Dc = 30 e nos resultados da coluna da direita o valor de Dc foi reduzido pela metade. (a) Imagem original, (b) W = 1 sem decrementar Dc, (c) W = 1 decrementando Dc, (d) W = 5 sem decrementar Dc,

(e) W = 5 decrementando Dc, (f) W = 10 sem decrementar Dc e (g) W = 10 decrementando Dc.

(a)

(b) (c)

(d) (e)

(f) (g)

Figura 80. (a) imagem original, (b) com Dc inalterada a cada iteração (c) com Dc sendo reduzida à metade a cada iteração. Em (b) e (c) W = 5 e Dc = 20.

(a) (b) (c)

Fonte: imagem do autor.

Figura 81. Comparação de resultados obtidos a partir da Figura 78(a) com Dc = 30, Niter = 5 e W = 5. (a) Dc sem alterações e (b) Dc decrementado a cada iteração.

(a) (b)

Fonte: imagem do autor.

Outro parâmetro do algoritmo é a dimensão N, da janela W, que determina a vizinhança do pixel sendo filtrado. Este parâmetro não tem um impacto tão significativo nos resultados como a distância Dc como pode ser observado na Figura 82.

Figura 82. Comparação de resultados obtidos a partir da Figura 78 variando o tamanho W da janela. Ambas foram obtidas com Niter = 5 e Dc = 10, sendo Dc decrementada a cada iteração. (a) W = 5 e (b) W = 15.

(a) (b)