Closed mtxslv closed 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
Para os testes realizados, vale saber que os pontos a serem usados são px(:,709)
e py(:,709)
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.
O objeto frame
em variaveis_blob_colours_quando_da_certo
é o mesmo que está em variaveis_associate_fudera_quando_da_certo
.
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))
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.
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:
isso fará com que tenhamos os centros dos blobs (dos quadrados) o segundo passo é captar os pontos passados:
e colocá-los numa matriz:
agora define-se as matrizes:
daí basta somar: