borgesnogueira / ZebTrack

Software de rastreio de animais em matlab
GNU General Public License v2.0
5 stars 2 forks source link

associacao_soma_matrizes notes #8

Closed mtxslv closed 4 years ago

mtxslv commented 4 years ago

note que existem nanimais. Isso que define a quantidade de centroides (existem, por definição, a mesma quantidade de centróides que de animais). Ao mesmo tempo, a quantidade de blobs é uma característica do frame em questão. Logo, é possível definir duas matrizes, ambas de formato qtd_blobs x nanimais (qtd_centroids), tanto no espaço de cores quanto no espaço da imagem. Como definir essas matrizes?

o primeiro passo é o seguinte:

centro_de_blobs = boundingbox(:,1:2) +0.5*boundingbox(:,3:4)

isso fará com que tenhamos os centros dos blobs (dos quadrados) o segundo passo é captar os pontos passados:

px_antes = px(:,cont-1); py_antes = py(:,cont-1);

e colocá-los numa matriz:

mat_pxs = [px_antes py_antes];

agora define-se as matrizes:

D_cores = pdist2(mat_bc2_avg_v, centroids); D_imagem = pdist2(centro_de_blobs, mat_pxs);

daí basta somar:

D = D_cores + D_imagem

mtxslv commented 4 years ago

carregar para o Workspace variaveis_blob_colours_quando_da_certo, variaveis_associatefudera_quando_da_certo e as variáveis pra gerar os centroides (variaveis_calculaMediaVarianciaHSV), daí executar:

bc2_v = blob_colours_2(frame, boundingbox, ndetect, imdif, 0.15,0.5);
[cents,cov_m] = calcula_centroids_cov_rgb(video, tempo_inicial, tempo_final, wbackg, Vrm, nanimais, mascara,minpix,maxpix, threshold, aviobj2, criavideodiff, tipsubfundo,colorida, cor, 0.15,0.5,5);
clearvars -except bc2_v cents cx cy px py
clc
mtxslv commented 4 years ago

Para os testes realizados, vale saber que os pontos a serem usados são px(:,709) e py(:,709)

mtxslv commented 4 years ago

Para que o código compute corretamente, supõe-se que cada elemento da boundingbox está relacionado ao elemento correto em cx/cy. Isto é, por exemplo, que o n-ésimo elemento (vetor RGB na n-ésima linha) da boundingbox possui centróide cujas cordenadas se encontram na n-ésima linha de ambos cx/cy. Creio que dado ao processamento de blob_colours_2 (que gera os valores de bc2_avg_vector), tal relação é válida.

mtxslv commented 4 years ago

O objeto frame em variaveis_blob_colours_quando_da_certo é o mesmo que está em variaveis_associate_fudera_quando_da_certo.

mtxslv commented 4 years ago

PARA TESTAR EXECUTAR PRIMEIRO (NOTE QUE DEVE-SE MANTER A VARIÁVEL frame também):

carregar para o Workspace variaveis_blob_colours_quando_da_certo, variaveis_associatefudera_quando_da_certo e as variáveis pra gerar os centroides (variaveis_calculaMediaVarianciaHSV), daí executar:

bc2_v = blob_colours_2(frame, boundingbox, ndetect, imdif, 0.15,0.5);
[cents,cov_m] = calcula_centroids_cov_rgb(video, tempo_inicial, tempo_final, wbackg, Vrm, nanimais, mascara,minpix,maxpix, threshold, aviobj2, criavideodiff, tipsubfundo,colorida, cor, 0.15,0.5,5);
clearvars -except bc2_v cents cx cy px py frame
clc

EXECUTA-SE ISSO:

> [n_px, n_py] = associacao_soma_matrizes(bc2_v,cents,cx,cy,px(:,709),py(:,709))
mtxslv commented 4 years ago

Após executar todo o processo do comentário anterior, exectute isso:

positions = [n_px n_py]
imshow(frame)
axis on
hold on
plot(positions(1,1),positions(1,2),'r+','MarkerSize',20,'LineWidth',1)
plot(positions(2,1),positions(2,2),'r+','MarkerSize',20,'LineWidth',1)

Esse bloco foi baseado nesse comentário aqui.