Calibração personalizada do Eye-Tracker



Em breve, haverá um ano em que lançaremos o produto com a 'calibração do rastreador ocular ' personalizada a bordo. Infelizmente, por vários motivos, ainda não funcionou para finalizar este artigo. No entanto, ocorreu recentemente um incidente engraçado que levou a concluir o que foi iniciado. Mas, primeiro as primeiras coisas. Espero que alguém ainda se beneficie da nossa experiência, apesar de o post ter sido úmido.

Em resumo, o Eye-tracker é um dispositivo que permite rastrear a direção da visão, bem como a posição dos olhos e da cabeça.

Os rastreadores de olhos têm algumas áreas de aplicação, uma das quais é a indústria de jogos de computador (um pouco mais ).

Freqüentemente, a detecção de olhar é responsável por ações secundárias (auxiliares), mas importantes em jogos:

  • movimento da câmera;
  • apontar;
  • seleção de objetos para interação;
  • seleção de armas;
  • chamada de pausa automática após perda de visão;
  • outros.


Na maioria dos casos, a calibração padrão (falaremos sobre o dispositivo Tobii Eye Tracker 4C ) é suficiente para o uso confortável da era do Eye Track .


Mas, infelizmente, para nossos propósitos, a precisão do dispositivo alcançada pela calibração padrão não é suficiente, porque, em nosso projeto, a aparência é a principal mecânica de controle.



A partir do exposto, a tarefa foi formada: melhorar a calibração padrão;
condições : dispositivo Tobii Eye Tracker 4C , a linguagem de desenvolvimento é C # (WPF) .

Parece ser uma solução na superfície: se você quiser mais precisão - adicione mais pontos de calibração, mas não é tão simples.

O Tobii AB possui muitas ferramentas para trabalhar com seus dispositivos. A Joy não tinha limites quando o Tobii Pro SDK foi descoberto, que tem todos os recursos para trabalhar com calibração , mas, como se viu mais tarde, esse SDK não é adequado para trabalhar especificamente com o modelo de rastreador ocular que temos (embora seja estranho que a detecção de olhar do dispositivo ainda estava presente ao usar este SDK ). Eu tive que facilitar as ferramentas - Tobii.EyeX.Client .

Empiricamente, o número ideal de pontos de calibração e sua localização foram revelados: uma matriz 4x3 com 12 pontos de calibração localizados (cada um no centro da célula).

Os seguintes parâmetros também foram encontrados empiricamente:

  • tempo para calibração em um ponto de calibração - 3 segundos;
  • o índice do ponto em consideração é 5 (se o índice do ponto recebido do dispositivo for múltiplo disso, levaremos em consideração ao calcular a calibração);
  • o desvio máximo admissível do ponto de calibração ( px ) é calculado pela fórmula:

    Math.Min(regionWidth,regionHeight)0,45

    onde regionWidthe regionHeight- largura e altura da célula da matriz de calibração, respectivamente


Algoritmo de calibração (Simple to Madness)


A calibração é realizada sequencialmente, para cada célula da matriz de calibração:

  1. se a distância entre o ponto de calibração atual e o ponto recebido do dispositivo for menor que o desvio máximo permitido , esse ponto (recebido do dispositivo) cai na coleção para processamento adicional; caso contrário - a calibração da célula atual é redefinida para seu estado original (e tudo é novo) ;
  2. após o tempo de calibração por um ponto de calibração ter sido esgotado, obtemos o valor médio do deslocamento a partir dos dados coletados anteriormente.



Após a conclusão da calibração, temos uma coleção de 12 valores de viés médios por região (células da matriz).



Uso (ainda mais fácil)


  1. determinar em que região o ponto recebido do dispositivo se enquadra;
  2. mudamos o ponto recebido do dispositivo pelo valor médio do deslocamento nessa região.

Assim, foi possível melhorar programaticamente a precisão do dispositivo Tobii Eye Tracker 4C (fazendo um complemento sobre a calibração padrão).

Infelizmente, devido ao contrato de não divulgação, não posso especificar o nome do software nem definir a fonte ou as capturas de tela. Felizmente, eles me permitiram compartilhar o algoritmo. Espero que alguém poste ainda seja útil.

O artigo fornece a descrição mais simples do processo principal de calibração. Além disso, há várias outras coisas:

  • calcular a média do valor do ponto com o anterior (para suavidade);
  • verificação de excesso de tela;
  • rastreamento de perda de visão;
  • rastreamento de mudanças na posição dos olhos no espaço;
  • Rastreamento de status do Eye Tracker ;
  • rastreamento de alterações na resolução da tela;
  • rastreamento abortar calibração;
  • seleção aleatória do tipo de marcas de calibração;
  • e muito mais

E aqui está o mesmo evento que contribuiu para a "conclusão" do artigo: por alguma coincidência inconcebível, meu amigo ( do post anterior ) teve a chance de conversar ao vivo com o desenvolvedor da Tobii AB . Durante a conversa, o desenvolvedor mencionou que a calibração padrão não era ideal e que nossos esforços não foram em vão.

Source: https://habr.com/ru/post/pt457784/


All Articles