Segmentação de Fundo Marcelo Gonella [email protected] Fundamentos em Computação Gráfica – T2 • Objetivo Dado um quadro (imagem) de um jogo de futebol, devemos remover o fundo (gramado) deixando apenas os jogadores. • Técnicas de Segmentação Para atingirmos o objetivo proposto usaremos duas técnicas distintas em conjunto – Limiarização de Histograma – Detecção de descontinuidade Fundamentos em Computação Gráfica – T2 • Limiarização de Histograma Para entendermos a estratégia é preciso analisar o comportamento do histograma neste tipo de imagem. Podemos notar que, existe uma grande concentração de pixels em uma mesma faixa do histograma. Isto se dá pela grande quantidade de gramado que aparece na imagem. Fundamentos em Computação Gráfica – T2 • Limiarização de Histograma Se substituirmos os pixels neste pico, pela cor branca, estaríamos atacando diretamente grande parte daqueles convertidos a partir do gramado. Isso seria uma maneira de tentar remover o fundo. As linhas vermelhas marcam o limite. Os pixels entre as linhas são substituídos pela cor branca na imagem original. Fundamentos em Computação Gráfica – T2 • Resultado: Limiarização de Histograma Fundamentos em Computação Gráfica – T2 • Análise do Resultado Devido a grande perda de informação no momento em que convertemos uma imagem com milhões de cores para uma imagem com 256 tons de cinza (para faremos o histograma), os resultados não são bons. Muitas das cores dos jogadores acabam sendo convertidas para as mesmas cores que os diversos tons do gramado são convertidos. Desta forma, ficam buracos nos jogadores. Fundamentos em Computação Gráfica – T2 • Detecção de descontinuidade Para tentar melhorar os resultados obtidos pela técnica anterior, implementamos a técnica de detecção de bordas, que em imagens digitais são levemente borradas. A idéia é aplicar a primeira derivada no perfil de níveis de cinza. Esta derivada será nula nas áreas onde o nível de cinza é constante, positiva na primeira borda e negativa na segunda. Esta técnica será computada através de um operador local denominado Operador de Sobel Fundamentos em Computação Gráfica – T2 • Operador de Sobel Para implementar o operador de Sobel, pegamos um pixel da nossa imagem original e analizamos os vizinhos em todas as direções, obtendo suas intensidades. As derivadas parciais utilizando Sobel ficam assim: Gx = (z7 + 2z8 + z9) - (z1 + 2*z2 + z3) Gy = (z3 + 2z6 + z9) - (z1 + 2*z4 + z7) Fundamentos em Computação Gráfica – T2 • Cálculo do Gradiente Calculamos então o gradiente para z5, para a obtenção do próximo valor deslocamos toda a mascara. Para cada valor encontrado, verificamos se ele fica abaixo ou acima de determinado valor. Este valor pode ser, por exemplo 25, que representa 10% do maior nível de cinza da imagem (255). Aos pixels que obdecem a esta regra, foram recuperados da imagem original e escritos na imagem resultado, que já estava segmentada pelo histograma, fazendo com que as bordas dos objetos ganhassem mais contorno e definição. GradF(z5) = abs(gx) + abs(gy) Fundamentos em Computação Gráfica – T2 • Resultados Obtidos aplicando apenas Sobel Fundamentos em Computação Gráfica – T2 • Resultados finais: Original (tons de cinza) Fundamentos em Computação Gráfica – T2 • Resultados finais: limiarização do histograma Fundamentos em Computação Gráfica – T2 • Resultados finais: limiarização do histograma + Sobel Fundamentos em Computação Gráfica – T2 • Outros Resultados Fundamentos em Computação Gráfica – T2 • Outros Resultados Fundamentos em Computação Gráfica – T2 • Outros Resultados Fundamentos em Computação Gráfica – T2 • Outros Resultados