· TRILHA DE APRENDIZAGEM · RASTREAMENTO OCULAR · MATEMÁTICA APLICADA

Adivinhando
para onde você está olhando.

Uma trilha completa para você aprender, passo a passo, a calcular como um algoritmo transforma a imagem do seu olho em uma coordenada (x, y) na tela a qual está olhando.

5Trilhas matemáticas
5Fontes gratuitas verificadas
15+Equações fundamentais
0Bibliotecas externas nesta página
gaze point = o + t·d
Kalman Filter Homografia 3×3 Mínimos Quadrados Ângulo Kappa SVD
O CAMINHO

Cinco etapas, nesta ordem — porque uma depende matematicamente da anterior.

A câmera precisa existir antes de localizar a pupila. O modelo 3D do olho precisa de calibração para virar números reais. A calibração produz o raio que vira ponto na tela. E o ponto na tela precisa ser suavizado. Clique em qualquer etapa para pular direto para ela.

01

Câmera, Pupila e Homografia

Projeção pinhole, detecção do centro da pupila, mapeamento 2D↔2D.

02

O Olho em 3D

Esfera corneana, reflexos de Purkinje, eixo óptico × eixo visual.

03

Calibração

Mínimos quadrados não-lineares: Gauss-Newton e Levenberg-Marquardt.

04

Do Raio ao Ponto

Interseção raio-plano: geometria vetorial pura, direto na tela.

05

Filtragem & Fixações

Filtro de Kalman suaviza o sinal e separa fixações de sacadas.

1
Etapa 01

Câmera, Pupila e Homografia

Tudo começa transformando um ponto do mundo 3D em um pixel de imagem — e transformando o contorno claro/escuro da pupila em um centro de coordenadas confiável.

Projeção pinhole

Um ponto 3D X se projeta no pixel x através da matriz intrínseca K (distância focal, ponto principal) e da pose extrínseca [R|t] (rotação + translação da câmera):

x K · [R | t] · X

O contorno da pupila é ajustado a uma cônica — um problema de mínimos quadrados restrito, resolvido classicamente (Fitzgibbon, Pilu & Fisher) como um problema de autovalor generalizado:

a·x² + b·xy + c·y² + d·x + e·y + f = 0 , sujeito a 4ac − b² = 1

Para mapear um plano em outro (ex.: pontos de calibração → tela), uma homografia H (3×3, 8 graus de liberdade) é recuperada de ≥4 pares de pontos via Direct Linear Transform, resolvido por SVD:

x' H · x

Sem restrição, o ajuste de mínimos quadrados de uma cônica genérica pode convergir para uma hipérbole ou parábola — formas que não descrevem um contorno de pupila. A restrição 4ac−b²=1 força a solução a pertencer especificamente à família das elipses, transformando o problema em um autovalor generalizado de matriz 6×6, resolvível em tempo constante e sem iteração.

Calculadora: projeção pinhole simplificada

Informe um ponto 3D (em relação à câmera) e a distância focal — veja onde ele cai na imagem. (Assume ponto principal em 0,0 e pixels quadrados.)

x = 160.00 px · y = 80.00 px
Fonte verificada · gratuita
Computer Vision: Algorithms and Applications (2ª ed.)
AutorRichard Szeliski
Páginas947 (impresso) / 1232 (PDF)
Ano2022 · Springer

Hospedado pelo próprio autor, com permissão explícita para download pessoal — não é uma cópia pirata re-hospedada. Cobre projeção, geometria projetiva, ajuste de modelos e homografia.

Baixar PDF gratuito
2
Etapa 02

O Olho em 3D

A córnea vira uma esfera matemática. Reflexos de luz infravermelha viram raios. E a direção real do olhar tem um pequeno desvio da direção "óptica" — o ângulo kappa.

Esfera corneana e triangulação do glint

A superfície frontal da córnea é modelada como uma esfera (~7.8 mm de raio). Duas ou mais fontes de luz IR criam reflexos corneanos (imagens de Purkinje); aplicando a lei da reflexão nessa superfície esférica, é possível retro-projetar raios e triangular o centro 3D da córnea.

Eixo óptico × eixo visual

O eixo óptico passa pelo centro da córnea e pelo centro da pupila (corrigido por refração via Lei de Snell). O olhar real — o eixo visual — está deslocado por um pequeno ângulo pessoal, kappa (κ), tipicamente ~5° na horizontal e ~1–1.5° na vertical, estimado durante a calibração.

eixo_visual = eixo_óptico + κ (específico da pessoa)

Sistemas mais simples pulam o modelo 3D inteiro e mapeiam o vetor pupila–glint direto para coordenadas de tela usando uma homografia (transformação de razão cruzada / cross-ratio) ou uma regressão polinomial de baixa ordem ajustada durante uma calibração de 9 ou 13 pontos. É exatamente essa a linha de pesquisa do recurso abaixo.

Demonstração: ângulo kappa

Ajuste κ e observe o eixo visual (verde) se separar do eixo óptico (tracejado) — o desvio que toda calibração pessoal precisa corrigir.

Ângulo κ5.0°
Eixo óptico: 0.0°
Eixo visual: 5.0°
(linha tracejada = óptico · linha verde = visual real)
Fonte verificada · gratuita
Off-the-Shelf Gaze Interaction (tese de doutorado)
AutorJavier San Agustín
Páginas186
Ano2010 · ITU Copenhagen

Hospedada oficialmente pelo repositório da IT University of Copenhagen. O autor é um dos pesquisadores por trás da técnica de homography normalization para gaze estimation — a tese deriva essa geometria em primeira mão.

Baixar PDF gratuito
3
Etapa 03

Calibração por Mínimos Quadrados Não-Lineares

Os parâmetros pessoais (raio da córnea, κ, pose câmera-tela) não são medidos — são encontrados minimizando o erro entre o que o modelo prevê e onde a pessoa realmente olhou.

Gauss-Newton e Levenberg-Marquardt

A cada ponto de calibração, define-se um resíduo. Minimiza-se a soma dos quadrados desses resíduos:

F(x) = ½ Σ fᵢ(x)²

Como o modelo é não-linear nesses parâmetros, resolve-se iterativamente. Gauss-Newton lineariza e resolve a cada passo:

(Jᵀ J) h = −Jᵀ f

Levenberg-Marquardt amortece esse passo — mais robusto quando o palpite inicial está longe do ótimo:

(Jᵀ J + μI) h = −Jᵀ f

Quando JᵀJ é quase singular (comum longe do ótimo, ou com poucos pontos de calibração), o passo de Gauss-Newton pode "explodir" em uma direção errada. Somar μI (μ > 0) estabiliza a matriz antes de invertê-la: para μ grande, o passo se aproxima de um simples gradiente descendente (lento, mas seguro); para μ pequeno, se aproxima de Gauss-Newton puro (rápido perto do ótimo). O algoritmo ajusta μ a cada iteração conforme o erro sobe ou desce.

Calculadora: um passo de Gauss-Newton (caso escalar)

Com 1 parâmetro e 1 resíduo, Gauss-Newton vira o método de Newton. Vamos calcular √c usando exatamente essa lógica — resíduo r(a) = a² − c, Jacobiano J = 2a:

Fonte verificada · gratuita
Methods for Non-Linear Least Squares Problems (2ª ed.)
AutoresMadsen, Nielsen & Tingleff
Páginas~30–60 *
Ano2004 · DTU

Apostila oficial da Technical University of Denmark (DTU). *Sendo transparente: não consegui confirmar com 100% de certeza a contagem exata de páginas nas fontes bibliográficas disponíveis — trate como uma apostila enxuta, não um livro longo. O conteúdo (Gauss-Newton, Levenberg-Marquardt, dog-leg) foi confirmado.

Baixar PDF gratuito
4
Etapa 04

Do Raio ao Ponto na Tela

Com a origem e a direção do olhar em mãos, esta é a etapa mais "calculável" de toda a trilha: geometria vetorial pura, sem iteração nenhuma.

Interseção raio–plano

Dado a origem do olhar o, direção d, e o plano da tela definido por um ponto p₀ e normal n:

t = ((p₀ − o) · n) / (d · n)
ponto_de_olhar = o + t·d

Esse ponto 3D é então convertido em coordenadas de pixel/cm usando o tamanho físico e a pose conhecidos da tela. Toda essa etapa — e as anteriores — repousa sobre álgebra vetorial comum: produto escalar, projeções, resolver Ax=b no sentido de mínimos quadrados.

Calculadora: interseção raio–plano em 3D

Preencha origem, direção e o plano da tela — o cálculo é exato, o mesmo usado por qualquer eye tracker de tela.

Fonte verificada · gratuita
Linear Algebra (4ª ed.)
AutorJim Hefferon
Páginas508
Ano2017

Disponibilizado gratuitamente pelo próprio autor, incluindo o código-fonte em LaTeX. Cobre exatamente a base vetorial usada em todas as etapas anteriores.

Baixar PDF gratuito
5
Etapa 05

Suavização e Fixações

O ponto (x,y) bruto pula quadro a quadro. Um filtro de Kalman entrega uma estimativa suave — e essa suavidade é o que permite dizer "a pessoa fixou o olhar aqui".

Predição e atualização

O filtro trata posição+velocidade como um estado linear-gaussiano, alternando entre predição:

x̂⁻ = F·x̂ · P⁻ = F·P·Fᵀ + Q

…e atualização, corrigindo com a nova medição ruidosa:

K = P⁻Hᵀ(H·P⁻·Hᵀ + R)⁻¹ ·= x̂⁻ + K(z − H·x̂⁻)

A velocidade suavizada alimenta um classificador de fixação/sacada (ex.: I-VT — limiar de velocidade angular), decidindo o que a pessoa realmente estava olhando.

Demonstração: filtro de Kalman 1D em ação

Cinza = medições brutas e ruidosas. Verde = estimativa filtrada. Ajuste o ruído de processo (Q) e de medição (R) para ver o efeito.

Ruído de processo Q0.010
Ruído de medição R4.0
Fonte verificada · gratuita
Kalman and Bayesian Filters in Python
AutorRoger R. Labbe Jr.
Páginas~400–500+ *
LicençaCC BY 4.0

*É um documento vivo (Jupyter Notebook em atualização contínua no GitHub) — a contagem de páginas varia conforme o instantâneo do PDF gerado, não é uma edição fixa. Licenciado abertamente pelo próprio autor.

Acessar repositório gratuito
VERIFICADO, MAS NÃO GRATUITO

Duas referências que você vai ver citadas o tempo todo — checadas, e sem link para cópia pirata.

Prefiro te dizer isso claramente a te mandar para uma cópia não-autorizada. Se sua universidade tiver acesso institucional, valem muito a pena.

Eye Tracking Methodology: Theory and Practice (3ª ed.)

Andrew T. Duchowski — Clemson University · 2017 · Springer

A referência aplicada mais completa para todo esse pipeline. Título pago da Springer, sem versão gratuita hospedada pelo autor. Verifique o acesso institucional da sua universidade.

Multiple View Geometry in Computer Vision (2ª ed.)

Richard Hartley & Andrew Zisserman · 655 páginas · Cambridge University Press

O tratamento mais profundo da geometria projetiva da Etapa 1. Encontrei apenas acesso institucional/empréstimo — nada hospedado pelos autores.