Skip to content

calculaMediaVarianciaHSV

Mateus de Assis Silva edited this page Apr 13, 2020 · 25 revisions

Funções encontradas nesse arquivo:

  1. calculaMediaVarianciaHSV
  2. extraiIntervaloFrames
  3. geraVetor_frames_video
  4. transformada_HSV
  5. transformadaInv_HSV

Introdução

Até antes da existência do reconhecimento via proximidade de cor, o Zebtrack reconhecia os peixes ao localizar os blobs e associá-los com os indivíduos mais próximos. De forma a refinar essa associação, utilizava-se uma "previsão" da posição dos peixes no próximo momento. Isso é passível de falha, pois os animais podem se movimentar de forma a confundir o software.

Um desses movimentos é quando os peixes se deslocam em retas concorrentes. No ponto de encontro das retas eles não prosseguem, mas se desviam. Isso faz com que o software troque as labels relativas a cada animal.

Assim se torna necessário uma forma de diferenciar os indivíduos. Dentre algumas possibilidades, utilizaremos um critério de cor.

Critério de cor: médias e variâncias

Ora, apesar de ser interessante utilizarmos cor pra diferenciar indivíduos (principalmente quando os animais têm cores muito distintas, como azul e vermelho), muitos fatores podem influenciar a leitura da imagem efeituada pela câmera. Isso faz com que os valores de cores lidos pelo software variem.

 % as cores dos peixes não se repetem como abaixo
 % para todos os quadros nem em todos os vídeos.

> peixe1.cor[quadro1]
        r,g,b = [255, 0, 0]
> peixe1.cor[quadro2]
        r,g,b = [255, 0, 0]
> peixe1.cor[quadro3]
        r,g,b = [255, 0, 0]

> peixe2.cor[quadro1]
        r,g,b = [0, 0, 255]
> peixe2.cor[quadro2]
        r,g,b = [0, 0, 255]
> peixe2.cor[quadro3]
        r,g,b = [0, 0, 255]

A solução para lidar com valores que variam aleatoriamente é utilizar um método estatístico. Ao computarmos as médias e variâncias das cores, para cada peixe, capturamos o comportamento aleatório das leituras.

Como usar

O usuário define um intervalo de tempo (através das variáveis tempo_final e tempo_inicial), no qual, de preferência, os peixes estejam separados espacialmente. o código contido em calculaMediaVarianciaHSV.m processa os quadros e retorna os vetores de média e variância de cor (relativas a cada animal).

Note que a função realiza a calibração dos detectores dos peixes através das cores. Ela cria identificadores para cada peixe, os quais, depois, serão utilizados para os rastrear (a partir de suas cores). Esse identificadores são as médias e as variâncias para cada peixe com cor notável.

Como funciona