top of page

PROJETO DE ANÁLISE COM LEITURA DE DATASET COORDENADAS NO PLANO CARTESIANO SIMULANDO TEMPO REAL E EVE

A fim de compreender os comportamento das multidões em diversos locais, sejam abertos e/ou fechados, juntamente com a experiência da Prof. Dra. Soraia Musse, utilizamos algumas ferramentas, javascript, canvas e html, para realizar a análise com base no dados Paths_D.txt, contendo coordenadas (x,y, tempo) assim conseguimos extrair 3 (três) eventos dos 4 (quatro) vídeos disponíveis por nossa professora.

Compreendimento básico do algoritmo

A partir da leitura dos arquivo, foi possível criar uma lista de dados facilitando a manipulação deste. Em cada posição haverá um pessoa e suas coordenadas, sendo que estas terão uma sub-lista com seu tempo específico, referência x e y, classificação a qual grupo a pessoa pertence, ângulo, velocidade.


O sistema percorrerá a lista e a cada iteração armazenará o índice do tempo, a partir deste índice haverá um busca da população que naquele instante que estavam no plano de imagem.


A cada varredura de tempo será verificado, a qual grupo a pessoa pertence, considerando o instante dela e a que está próxima a esta, se ambas estão na mesma velocidade e a direção, no caso o ângulo. Também é verificado qual pessoa está interagindo naquele instante, demonstrando as que não estão conversando acabam se afastando mais umas das outras.


Com o final da primeira iteração de tempo e realizando uma computação lógica conseguimos verificar locais que chamou mais atenção em decorrência da pessoa permanecer parada por muito tempo.


A fim de realizar uma lógica para identificar grupos, partimos como premissa que obtemos a coordenada (x,y) da pessoa no tempo atual, verificamos todos as outras que estão próximas naquele instante, considerando uma distância mínima, este valor pode ser configurado no código "defDistanciaGrupo", se a pessoa próxima, estiver no sentido de sobrepor o espaço da pessoa atual, calculamos a velocidade a pessoa próxima e comparamos com a velocidade de pessoa atual. Definimos uma margem de erro da velocidade que também pode ser configurada "defLimiteVelocidade", ao final calculamos o ângulo das duas pessoas, utilizando o produto escalar e módulo que também pode ser definido por uma variável "defDistanciaFrame", a fim de definir do frame atual até quanto a frente para obter o ângulo. Se os ângulos forem iguais, criamos um dicionário, como key o id da pessoa atual e o value um lista de pessoas, a qual será adicionada a pessoa próxima neste frame.


A cada instante que obtemos uma nova pessoa como referência de pessoa atual, verificamos se esta já pertence a um grupo atual, e verificamos seus adjacentes para incluir no mesmo grupo. Caso esta pessoa atual não pertença a nenhum grupo, definimos ela como um pessoa possível de criar grupos.


Na identificação de pessoas interagindo, obtemos a mesmo lógica inicial sobre distância entre as pessoas, entretanto a variável "defDistanciaConversa" contém um valor menor, assim podemos interpretar que os indivíduos podem ser um casal de mãos dadas, ou briga. Além disso, definimos até quantos frames a frente para interpretar um interação, utilizamos a variável "defQuantFrameConversa". Desconsideramos os casos de esbarrões.


Para obter o local de referência, consideramos no tempo atual e através de uma variável "defQuantFrameParada", quantos frames a frente podemos considerar que esteja parada, calculamos a distância da inicial até a final e através de um tempo mínimo, com a variável "defDistanciaParada", e verificamos se a soma da distância de tempo da pessoa parada for maior que a definida, armazenamos a coordenada (x,y), em uma lista de paradas. Porém antes de armazenar verificamos se a posição atual já pertence a esta lista de pontos de referência. Caso esta referência não exista, então salvamos.


Ao final conseguimos demonstrar o comportamento da população em diversos ambientes, sejam eles fechados ou abertos, como situações de shopping e ruas.


Com nossa computação lógica de identificação de grupos, iteração e locais de eventos, conseguimos extrair as informações com nosso algoritmo genérico, o que futuramente, podemos reutilizar esta lógica para os de mais arquivos disponíveis no dataset.


Esta análise, sobre o código serviu para demonstrar o funcionamento e extrair uma análise do comportamento da população, locais que podem servir de referência tanto no comercio, como no comportamento dos indivíduos em lugares que geram grande risco a saúde.


Segue o link do local onde poderá rodar o algoritmo e realizar download deste: http:http://www.streb.com.br/studies/








bottom of page