Explicação do Rastreamento de Cor#

O que é rastrear uma cor e como a CMUcam4 faz isso?#

O rastreamento de cor é a capacidade de pegar uma imagem, isolar uma cor específica e extrair informações sobre a localização de uma região dessa imagem que contém apenas aquela cor. Como exemplo, suponha que lhe seja dada uma fotografia que contém uma bola vermelha sobre uma estrada de terra. Se alguém lhe pedisse para desenhar uma caixa em torno de qualquer coisa que fosse da cor vermelha na imagem, você desenharia com bastante facilidade um retângulo em torno da bola. Esta é a ideia básica por trás do rastreamento de cor. Você não precisou saber que o objeto era uma bola. Você só precisou ter um conceito da cor vermelha para isolar o objeto na imagem. Abaixo, abordaremos brevemente como a CMUcam4 realmente usa as informações em uma imagem da câmera para realizar o rastreamento de cor.

Para especificar uma cor, você precisa 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 você precisa definir uma faixa de valores permitidos para todos os três canais de cor. Como a luz não é perfeitamente uniforme e a cor de um objeto não é perfeitamente uniforme, você precisa acomodar essas variações. No entanto, você não quer relaxar demais esses limites, ou muitas cores indesejadas serão aceitas. Como, no caso da CMUcam4, cada canal de cor é convertido em um número entre 0 e 255, você pode delimitar cada canal com dois números, um limite superior e um inferior. Se você tiver dois limites para cada um dos três canais, isso significa que seis valores podem ser usados para restringir todo o espaço de cor que você deseja rastrear. Se você imaginar as cores representadas por um cubo onde cada lado é um canal de cor diferente (vermelho, verde e azul), então os seis valores usados para selecionar sua cor desenhariam uma caixa tridimensional dentro desse cubo que define o conjunto desejado de cores.

Uma vez que você tem um limite para a cor que deseja rastrear, a CMUcam4 pega esses limites e processa a imagem. Existem muitas maneiras de rastrear cores em uma imagem que podem ser bastante complexas. A CMUcam4 usa um algoritmo simples de passagem única que processa cada novo quadro de imagem da câmera de forma independente. Ele começa no canto superior esquerdo da imagem e examina sequencialmente cada pixel, linha por linha. Se o pixel que está inspecionando estiver dentro da faixa de cores que o usuário especificou, ele marca esse pixel como sendo rastreado. Ele também examina a posição do pixel rastreado atual para ver se é a posição mais superior, mais inferior, mais à esquerda ou mais à direita de todos os pixels rastreados encontrados até agora na imagem. Se descobrir que o pixel está fora da caixa delimitadora atual da região rastreada, ele expande a caixa delimitadora para conter esse novo pixel. Como a localização de até mesmo um único pixel rastreado pode alterar a caixa delimitadora, a caixa delimitadora pode às vezes flutuar bastante de quadro para quadro. A filtragem de ruído (veja o próximo parágrafo) pode ser usada para reduzir parte dessa flutuação. A única outra informação importante que é armazenada é uma soma das coordenadas horizontais e verticais dos pixels rastreados. No final da imagem, a CMUcam4 pega a soma horizontal e a soma vertical dos pixels rastreados e divide cada uma pelo número total de pixels rastreados, obtendo um valor que mostra onde está localizado o meio do objeto rastreado. Como cada pixel rastreado contribui apenas com uma pequena parte para as somas horizontais e verticais finais, o meio (frequentemente chamado de centroide) dos pixels rastreados é normalmente uma medida muito mais estável do que a caixa delimitadora. Uma vez que todos os pixels da imagem foram verificados, o número total de pixels rastreados também pode ser usado em conjunto com a área da caixa delimitadora para calcular a confiança e o número de pixels no objeto rastreado.

A filtragem de ruído nos permite tornar as faixas de rastreamento de cor maiores, para que possamos acomodar variações maiores nos valores de pixel da imagem sem fazer com que outras variações aleatórias na imagem sejam rastreadas. A ideia por trás da filtragem de ruído é que só queremos considerar um pixel como sendo da cor rastreada se ele fizer parte de um grupo de pixels que estão dentro dos limites de rastreamento de cor. Na CMUcam4, implementamos isso de uma forma que requer apenas uma única passagem sobre a imagem. Ao processar os pixels de uma imagem, a CMUcam4 mantém um contador que controla quantos pixels sequenciais na linha atual, antes do pixel atual, estavam dentro dos limites da cor rastreada. Se esse valor estiver acima do valor do filtro de ruído, então o pixel atual é marcado como um pixel rastreado.

O que é um histograma e para que serve?#

Um histograma é um tipo de gráfico que exibe a frequência e a distribuição dos dados. No caso da CMUcam4, o histograma mostra a frequência e a distribuição dos valores de cor encontrados em uma imagem. Cada barra representa uma faixa de valores de cor para um canal específico. A CMUcam4 pode dividir os possíveis valores de cor 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 dentro de certos limites de cor. Assim, um valor grande em um determinado bin 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. Eles têm muitos usos, como reconhecimento primitivo de objetos, limiarização (thresholding) ou balanceamento de cor. Eles são particularmente úteis para distinguir entre diferentes texturas. Tente apontar a CMUcam4 com o auto-ganho desligado para duas superfícies de texturas diferentes e observe a diferença em suas distribuições de cor. Este efeito pode ser usado para distinguir superfícies de piso ou detectar obstáculos.