Explicação do Seguimento de Cor#

O que é seguir uma cor e como é que a CMUcam4 o faz?#

O seguimento de cor é a capacidade de pegar numa imagem, isolar uma cor específica e extrair informação sobre a localização de uma região dessa imagem que contém apenas essa cor. Como exemplo, imagine que lhe é dada uma fotografia que contém uma bola vermelha pousada numa estrada de terra. Se alguém lhe pedisse para desenhar uma caixa à volta de tudo o que fosse da cor vermelha na imagem, desenharia facilmente um retângulo à volta da bola. Esta é a ideia básica por trás do seguimento de cor. Não precisou de saber que o objeto era uma bola. Apenas precisou de ter um conceito da cor vermelha para isolar o objeto na imagem. Abaixo, abordaremos brevemente como a CMUcam4 utiliza efetivamente a informação de uma imagem da câmara para realizar o seguimento de cor.

Para especificar uma cor, precisa de definir um valor mínimo e máximo permitido para três canais de cor. Cada cor única é representada por um valor de vermelho, verde e azul que indica quanto de cada canal é misturado na cor única. A parte complicada de especificar uma cor é que precisa de definir um intervalo de valores permitidos para os três canais de cor. Uma vez que a luz não é perfeitamente uniforme e a cor de um objeto não é perfeitamente uniforme, precisa de acomodar estas variações. No entanto, não deve relaxar demasiado estes limites, ou serão aceites muitas cores indesejadas. Uma vez que, no caso da CMUcam4, cada canal de cor é convertido num número entre 0 e 255, pode delimitar cada canal com dois números, um limite superior e um inferior. Se tiver dois limites para cada um dos três canais, isto significa que podem ser usados seis valores para restringir todo o espaço de cor que pretende seguir. Se imaginar as cores representadas por um cubo em que cada lado é um canal de cor diferente (vermelho, verde e azul), então os seis valores usados para selecionar a sua cor desenhariam uma caixa tridimensional dentro desse cubo que define o seu conjunto de cores pretendido.

Assim que tiver um limite para a cor que pretende seguir, a CMUcam4 pega nesses limites e processa a imagem. Existem muitas formas de seguir cores numa imagem que podem ser bastante complexas. A CMUcam4 utiliza um algoritmo simples de uma única passagem que processa cada novo frame de imagem da câmara de forma independente. Começa no canto superior esquerdo da imagem e examina sequencialmente cada pixel, linha a linha. Se o pixel que está a inspecionar se enquadrar no intervalo de cores que o utilizador especificou, marca esse pixel como sendo seguido. Também examina a posição do pixel seguido atual para ver se é a posição mais acima, mais abaixo, mais à esquerda ou mais à direita de todos os pixels seguidos encontrados até então na imagem. Se descobrir que o pixel está fora da caixa delimitadora atual da região seguida, aumenta a caixa delimitadora para conter este novo pixel. Como a localização de um único pixel seguido pode alterar a caixa delimitadora, esta pode por vezes flutuar bastante de frame para frame. O noise filtering (ver parágrafo seguinte) pode ser utilizado para reduzir parte dessa flutuação. A única outra informação importante que é armazenada é uma soma das coordenadas horizontais e verticais dos pixels seguidos. No final da imagem, a CMUcam4 pega na soma horizontal e na soma vertical dos pixels seguidos e divide cada uma pelo número total de pixels seguidos, obtendo um valor que mostra onde se localiza o centro do objeto seguido. Como cada pixel seguido contribui apenas com uma pequena parte para as somas horizontal e vertical finais, o centro (muitas vezes chamado centroide) dos pixels seguidos é normalmente uma medida muito mais estável do que a caixa delimitadora. Assim que todos os pixels da imagem tiverem sido verificados, o número total de pixels seguidos também pode ser utilizado em conjunto com a área da caixa delimitadora para calcular a confiança e o número de pixels no objeto seguido.

O noise filtering permite-nos tornar os intervalos de seguimento de cor maiores, de modo a podermos acomodar variações maiores nos valores dos pixels da imagem sem fazer com que outras variações aleatórias na imagem sejam seguidas. A ideia por trás do noise filtering é que só queremos considerar que um pixel é da cor seguida se fizer parte de um grupo de pixels que estão dentro dos limites de seguimento de cor. Na CMUcam4 implementamos isto de uma forma que só requer uma única passagem sobre a imagem. Ao processar os pixels de uma imagem, a CMUcam4 mantém um contador que regista quantos pixels sequenciais na linha atual, antes do pixel atual, estavam dentro dos limites da cor seguida. Se esse valor estiver acima do valor do noise filter, então o pixel atual é marcado como um pixel seguido.

O que é um histograma e para que serve?#

Um histograma é um tipo de gráfico que apresenta a frequência e a distribuição de dados. No caso da CMUcam4, o histograma mostra a frequência e a distribuição dos valores de cor encontrados numa imagem. Cada barra representa um intervalo de valores de cor para um canal específico. A CMUcam4 pode dividir os valores de cor possíveis de 0 a 255 em 1, 2, 4, 8, 16, 32 e 64 bins diferentes. Cada bin contém o número de pixels encontrados na imagem que se enquadram em determinados limites de cor. Assim, um valor elevado num bin específico significa que muitas dessas cores foram encontradas na imagem. Cada histograma representa apenas um canal de cor selecionado.

Os histogramas são uma forma de abstrair o conteúdo de uma imagem. Têm muitas utilizações, como o reconhecimento primitivo de objetos, thresholding ou balanço de cores. São particularmente úteis para distinguir entre diferentes texturas. Experimente apontar a CMUcam4, com o auto-gain desligado, para duas superfícies com texturas diferentes e repare na diferença nas suas distribuições de cor. Este efeito pode ser utilizado para distinguir superfícies de chão ou detetar obstáculos.