|
Reconhecimento de Padrões5. Gerando Padrões: Análise de Sinais e Imagens
Parte I I - Eliminando Ruídos gerados por Movimento da Câmera e Isolando os Objetos através de Morfologia Matemática Depois que nós geramos uma imagem binarizada a partir da diferença entre as imagens modelo e atual, a qual contém as diferenças relevantes entre a imagem-modelo e uma imagem qualquer, temos de eliminar ruídos (como por exemplo os reflexos variáveis na janela de cima) e os artefatos originados pelo movimento da câmera (visíveis sob a forma de traços verticais e horizontais). A imagem abaixo ilustra bem os problemas que enfrentamos: As setas vermelhas indicam artefatos de movimento verticais e horizontais e os reflexos na janela são bastante visíveis à esquerda, em cima. A grande maioria destes ruídos possue características similares: são finos riscos. A morfologia matemática nos oferece as ferramentas de que necessitamos para eliminar estes artefatos. Para eliminar riscos podemos utilizar uma operação de abertura morfológica (erosão seguida de dilatação) com a utilização de um kernel que possua características contrárias às da estrutura que queremos eliminar na imagem. Realizamos uma abertura e não simplesmente uma erosão porque queremos reconstituir o resto da imagem, que não possue estas características. Assim afetamos apenas aquilo que queremos eliminar. Para isto utilizamos um kernel também em forma de risco, mas perpendicular ao risco a ser eliminado. Para isso realizamos primeiramente uma abertura com um kernel horizontal, eliminando os riscos verticais, como ilustrado abaixo: Depois realizamos outra abertura, aplicada ao resultado da anterior, utilizando um kernel vertical, para eliminar riscos horizontais, como mostrado na próxima figura: O resultado, como pode ser visto, é uma imagem onde o ruído foi quase totalmente eliminado, mas as estruturas "interessantes" foram preservadas. Como trataremos o ruído remanescente veremos mais tarde. Podemos realizar esta filtragem de riscos com um kernel criado por nós e os operações de erosão e dilatação oferecidas pelo pacote MMACH do Khoros, ou então utilizando diretamente uma operação especial para isso, denominada "Opening by a straight line segment", onde podemos parametrizar o kernel com um slider simples: O parâmetro "angle" permite definir o ângulo do "risco" existente no kernel. Para eliminar ruídos verticais utilizamos um kernel com risco horizontal (angulo = 0), como mostrado na figura. Para riscos horizontais, setamos o ângulo para 90 graus. No workspace-exemplo possuímos dois glifos, um para cada orientação do kernel, realizando esta tarefa. Juntando os pedaços Como o método de eliminação de ruídos carece de inteligência e já foi aplicado sobre uma imagem um tanto quanto mutilada através da subtração de imagens realizada anteriormente, muitas coisas da imagem foram perdidas. Para podermos continuar, devemos tentar realizar uma reconstrução dos pedaços que obtivemos como resultados das operações realizadas até o momento. Isto vai facilitar o nosso trabalho, pois no momento temos vários pedaços representando o nosso objeto de interesse. Isto pode ser realizado com uma operação morfológica de fechamento (dilatação seguida de erosão) realizada com um kernel simétrico em relação a x e a y. A operação de fechamento tem a propriedade de ligar objetos próximos, porém desconectados, sem afetar o resto da imagem. Para tanto vamos gerar um kernel circular de tamanho razoável (11 pixel) e aplicar o fechamento utilizando este kernel. Acreditamos que para as imagens que temos nesta aplicação isto será suficiente. O resultado para a imagem acima pode ser visto abaixo: O resultado parece bastante bom. Unimos a silhueta do intruso à sua sombra, mas isto não era possível de se evitar, pois a informação de sombra é indistinguível de objetos reais quando trabalhamos em imagens de tons de cinza. Se trabalhássemos com imagens coloridas, poderíamos ter tentado ignorar aqueles resultados da subtração de imagens, onde a imagem só escureceu, mas manteve seu tom de cor anterior - mas isso também não funciona sempre. Além do intruso, a imagem resultante também contém dois outros objetos, que são ruído. O próximo passo será classificar os objetos de forma e tentar reconhecer se algum deles é um cão ou um intruso. Isto será visto na próxima página. Abaixo você pode ver
os resultados de se aplicar esta técnica para as outras imagens
desta série. Observe que nem todas possuem tanto ruído como
esta aqui acima, mas na maioria dos casos isto não afetou o resultado.
O cão teve suas patas amputadas na primeira imagem mostrando um
cachorro. Isto é quase inevitável em função
do filtro de linhas verticais (humanos possuem pernas relativamente mais
grossas e não são afetados), mas o objeto resultante possue
uma forma tão diferente da de um humano, que isto não deverá
colocar problemas. O maior problema surge com o cão branco, que
se confunde com a parede e é praticamente eliminado.
|
|||||||||||||||||||