Estimar a distância focal de uma camera

Este artigo é sobre como estimar a distância focal de uma câmara, quando a mesma não se encontra disponível nas especificações da câmara. Para se obter a distância focal de uma camera Podem ser utilizados dois métodos.

Um método, que não será abordado neste artigo, consiste na utilização de um padrão de xadrez com dimensões conhecidas e após tirar várias fotografias com diferentes orientações, efectuar cálculos para encontrar os parâmetros intrínsecos da camera (distancia focal, centro e coeficientes de distorção das lentes).

O outro método de obter a uma estimativa aproximada da distância focal é o que vamos abordar aqui.

A distância focal é usada em vários processos de calculo relacionadas com imagens fotográficas, como por exemplo calculo de distancias.

Traduções

  • Distância Focal = Focal Length,
  • Campo de Visão = Field of View
  • Plano da imagem = image Plane (largura da imagem)

Com base na imagem abaixo, podemos deduzir as relações entre o campo de visão (alpha), a distância a focal (f) e o plano da imagem (w).

No caso das cameras de video, as unidades do plano de imagem são em pixels, pelo que no final a distancia focal calculada também é expressa em pixels.

Grosso modo, considerando que o triângulo formado pelo centro da lente e os dois extremos do plano da imagem (w), pode ser dividido em dois rectângulos equivalentes, e seja (beta) o ângulo entre o cateto adjacente e a hipotenusa, então (alpha) = 2 x (beta).
Sabendo que a tg(beta) é igual ao cateto oposto (w/2) a dividir pelo  cateto adjacente (f) então:

tg(beta) = (w/2)/f que é equivalente a tg(beta) = w/(2f), daqui decorre que

(beta) = arctg(w/(2f)), considerando que (alpha) = 2 (beta) então:

Com esta equação sabendo a distancia focal e a largura do plano de imagem conhecemos o ângulo do campo de visão horizontal (HFOV).

Esta equação pode ser reproduzida para a altura do plano de imagem (h) e assim saber o ângulo do campo de visão vertical (VFOV).

Resolvendo em ordem à distancia focal (f) temos:

seja (alpha) = a

a = 2 arctg (w/(2f))

a /2  = arctg(w/(2f))

tg(a/2) = w/(2f)

f = w/(2 tg(a/2))

Sabendo que a cotangente é o inverso da tangente, chegaremos a equação:

Ou seja, com a equação acima sabendo a largura da imagem (w) em pixels e o ângulo do campo de visão (alpha) podemos obter a distancia focal (f) em pixels.

Saber a largura, ou a altura da imagem é fácil, no entanto, é necessário saber o ângulo do campo de visão horizontal (HFOV), e este nem sempre é informado nas especificações das cameras.
Muitas vezes as especificações de  informam o campo de visão diagonal (DFOV) da câmara.

Neste caso, como a diagonal do plano da imagem (linha a tracejado) (d), é a hipotenusa do triângulo rectângulo, com a largura (w) e altura (h) da imagem como catetos, logo pela aplicação do teorema de Pitágoras,

d = sqrt(w² + h²)

Podemos fazer uma aproximação com a seguinte equação, onde simplesmente se substituiu w por d:

Se pretendermos calcular o HFOV e o VFOV a partir do DFOV então teremos que aplicar estas equações extra:

Método prático de estimar a distância focal

Existe uma forma mais fácil e prática de estimar a distância focal. Este método implica tirar uma foto a um objecto de largura (W) ou altura (H) conhecida,  e tirar-lhe uma fotografia a uma distancia conhecida (D).
Sabendo a sua largura, ou altura, em pixels (P)

Para estimar a distância focal de uma câmara  (F), pode-se então usar a seguinte equação:

Se usar a altura H, deve-se trocar o W por H na equação acima.

Exemplos de aplicação

Exemplo 1: a camera Microsoft lifecam vx-800, cujas especificações apenas indicam o DFOV de 59º

Nesta camera, para uma imagem com 640 x 480, temos uma diagonal
d = 783.

Aplicando a ultima equação, temos:

f = (783/2) cotg(59º/2) = 392 * 1.7675 = 693

Distância focal = 693 pixels

Exemplo 2: a camera Logitech HD webcam C525, cujas especificações apenas indicam o DFOV de 69º

Nesta camera, para uma imagem com 640 x 480, temos uma diagonal
d = 783.

Aplicando a ultima equação, temos:

f = (783/2) cotg(69º/2) = 392 * 1.455 = 570

Distância focal = 570 pixels

 

Referencias

https://medium.com/@arnaldog12/como-calcular-a-dist%C3%A2ncia-de-um-objeto-pra-c%C3%A2mera-ef1173171f0

http://www.therandomlab.com/2013/03/logitech-c920-and-c910-fields-of-view.html

https://en.wikipedia.org/wiki/Pinhole_camera_model