Mostrando entradas con la etiqueta trigonometria. Mostrar todas las entradas
Mostrando entradas con la etiqueta trigonometria. Mostrar todas las entradas

sábado, 26 de enero de 2013

Porque un grado importa (III)

Seguimos con las matemáticas aplicada a la fotografía. Muchas veces cuando nos hablan de focales de objetivos nos quedamos con la idea de que si el número es grande es un tele-objetivo, que representa que tiene mucho “zoom”, pero no sabemos cual es el ángulo de visión, y de lo contrario, si el número es pequeño se tratará de un angular o gran angular.

Pero ¿ a cuantos grados equivale esa focal ?
Para ello deberemos ayudarnos de la trigonometría. Primero de todo , necesitaremos conocer las dos siguientes variables:

Focal a utilizar (aquí no hay mucho que explicar, tan sólo hay que ver a cuanto tenemos ajustado la focal en nuestro objetivo en mm). Si utilizamos un duplicador o tele convertidor deberemos multiplicar para obtener la focal resultante. Por ejemplo si tenemos un objetivo ajustado a 300 mm y utilizamos un tele convertidor de 1.4x, la focal resultante seria de 300 x 1.4 = 420mm. Otra opción es disparar una foto y acto seguido visualizar mediante la pantalla de la cámara la información referente a la focal en mm.


Diagonal del tamaño del sensor en milímetros. Si no sabemos como encontrar las dimensiones del sensor, y siempre hablando de cámaras del tipo bridge o réflex, podemos utilizar la siguiente tabla:

 

Si sois de los que os gusta calcular todo:
Diagonal sensor, una vez buscado en los manuales de la cámara, en las características técnicas suele decirlo, no seáis brutos y midáis con un pié de rey esas cotas si queréis evitar el riesgo de dañar el CMOS !  Aquí es tan fácil como aplicar el teorema de Pitágoras . En nuestro caso :

Diagonal sensor = raíz cuadrada de( ( distancia1*distancia) + (distancia2*distancia2) )

Realizaremos un ejemplo con el sensor de la d-90 que según caracteristicas técnicas de Nikon, el sensor mide 23,6 x 15,8 mm. , entonces :


Diagonal sensor = raíz ( ( 23,6*23,6) + (15,8*15,8) )
Diagonal sensor = raíz ( ( 556,96 ) + ( 249,64 ) )
Diagonal sensor = raíz ( 806,6 )
Diagonal sensor = 28,84 mm


Aprovecho para mostraros el efecto recorte producido por el factor conversión:


Imaginemos que utilizamos una Nikon d-90, un 500 mm de objetivo y un con un tele-conversor de 1.4x (no confundir con el factor del sensor!) . En principio estos son los datos que utilizaré en mi próximo proyecto Giga panorámico

Ya tenemos las dos variables: focal equivalente y tamaño de la diagonal del sensor, ahora ya solo falta aplicar la fórmula final:

Diagonal sensor = 28,84 mm
Focal = 500 x 1,4 (tele-conversor ) = 700 mm
Focal equivalente = Focal x Factor recorte = 700 x 1,5 = 1050 mm
Angulo de visión horizontal =2 * arc tangente ( diagonal sensor / 2 * focal  equivalente)
Angulo = 2 * arc tangente (28,84/ 2*1050)
Angulo = 2 * arc tangente (28,84/2010)
Angulo = 2 * arc tangente (0,013733)
Angulo = 2 * 0,78679
Angulo de visión horizontal = 1,57º

NOTA = Si no tenéis una calculadora científica, y disponéis de la calculadora de Windows, podéis calcular el arc tangente haciendo click en INV previo a tan.


Finalmente y ya puestos, calcularemos el ángulo de visión en vertical
Angulo de visión vertical = ángulo de visión horizontal * distancia2 / diastancia1
Angulo Vertical = 1,57 * (15,8 / 23,6)
Angulo Vertical = 1,57 * (0,6695)
Angulo Vertical = 1,05 º
  
Finalmente y para los usuarios de Arduino, aprovecho un pequeño código para calcular los grados y poder utilizarlo en vuestros proyectos:

// Calculo ángulo de visión de un objetivo por XavierGP

#define _360div2xPI     57.29577951

float d1=23.6;         // distancia 1 sensor CMOS (ancho)   Valor de la Nikon d90 !
float d2=15.8;         // distancia 2 sensor CMOS (alto)    Valor de la Nikon d90 !
float diagonal_sensor=sqrt((d1*d1)+(d2*d2));
float grados_horizontales;
float grados_verticales;
float factor =35/d1;     // en su defecto : FF = 1, Nikon DX=1.5 , Canon DX=1.6 , Olympus= 2
float focal = 700;       // valor zoom a utilizar (en mi caso 500 x 1.4)

void setup() { 
  Serial.begin(9600); // 9600 bps
}

void loop(){
 grados_horizontales= 2* (atan(diagonal_sensor/(2*focal*factor))*_360div2xPI);
 grados_verticales = grados_horizontales * d2 / d1;
 
  Serial.print("Diagonal sensor: ");
  Serial.print(diagonal_sensor);
  Serial.println(" mm.");
  Serial.print("Con una focal de ");
  Serial.print(focal);
  Serial.print(" mm. y un factor ");
  Serial.print(factor);
  Serial.print("x , el resultante es de ");
  Serial.print(grados_horizontales);
  Serial.print(" grados en Horizontal, y de ");
  Serial.print(grados_verticales);
  Serial.println(" grados verticales.");
}

Con todo esto ya puedo seguir con mi proyecto, para que sea más moldeable y versátil en cuanto a programación y poder definir in situ la focal a utilizar, ahora sólo falta adaptar esto al programa general.

sábado, 21 de enero de 2012

Porqué un grado importa….(trigonometría básica)

En esta vida todo importa , y los grados también: si hace frío en la calle “ese” grado se nota, si el alcohol tiene más graduación se nota, cuando uno se quema no es lo mismo que sea de primer o de segundo grado…

En nuestras fotos panorámicas también un grado importa, sobretodo si tiene que ver con el solape o simplemente con el Angulo de la visión de la captura que queramos ver.

Para que nos hagamos una idea de los ángulos y distancias focales, mejor ver la siguiente composición de imágenes extraídas del catalogo impreso de objetivos Sigma.


 Está calculado en base a formato completo (35 mm). Si queréis haceros una idea de que Angulo tendríais en formato DX hay que multiplicar el valor de focal por 1.5x , en caso del sistema 4/3 multiplicaríamos por 2x:

Formato Full FrameFormato DX (Nikon)Formato DX (Canon)Formato 4/3 (Olympus)
Factor conversión1x1.5x1.6x2x
Focal (ejemplo)200 mm300 mm.320 mm.400 mm.
Grados (ejemplo)12.3º8.2º7.7º6.1º
 O si queréis saber los grados que alcanzaría un objetivo de 200 mm (12,3º en FF equivaldría a dividir los 12.3º entre 1,5 (formato DX) o dividir de 2 (formato 4/3)

Debido que ya tengo decidido el lugar dónde voy a realizar mi primer proyecto de giga-panorámica he aprovechado esta semana para empezar a analizar el terreno un poco (accesibilidad, orografía del terreno, mejor posición y Angulo de la captura).

Y aquí empieza el “problemilla” !

Dado que el paisaje a fotografiar queda la posición del robot más alto que el paisaje (aproximadamente 85 mts), para salvar este desnivel hay que inclinar la cámara unos 40º según los cálculos realizados a base de trigonometría y tirando de Google Earth para calcular distancias.

Os pongo un ejemplo de cómo calcular el Angulo – captura de pantalla para calcular los grados, pero siempre podéis darle una visita al Wikipedia (seno, coseno,…). Hay muchas maneras de calcularlo , yo lo hago de la siguiente:

Hay que tener en cuenta que estas fórmulas sólo sirven cuando uno de los ángulos del triangulo es un Angulo recto ( 90º )

Tenemos 3 lados del triangulo: dejemos que el lado más largo (hipotenusa) es el que deberemos calcular en función de los otros dos lados que gracias al Google Earth podemos calcular.


Cateto 1 = distancia en línea recta entre puntos (en este ejemplo = 180 mts)
Cateto 2 = desnivel (en nuestro ejemplo =  357-270 mts = 87 mts)
Ahora vamos a calcular el lado largo del triangulo utilizando la mítica fórmula
Hipotenusa = raíz cuadrada { (cateto1 ^2) + (cateto2^2) }

Y obtenemos que tenemos 200 mts de diagonal.

Ahora pasamos a la fórmula  SENO de alfa = Cateto opuesto dividido de hipotenusa
En números > Seno de alfa = 87 / 200 =  0,435
Ahora buscamos el Inverso del seno de 0,435 obtenemos 26º.

Ya tenemos un dato mas para nuestro proyecto.


Pues mi invento (original dibujo 1) no estaba diseñado para sortear la inclinación necesaria resultante entre mi punto de origen y todo lo que deseo que aparezca en la imagen resultante.  Por lo que he realizado 3 pasos:

  • Avance de los rodamientos por delante de la suportación vertical (dibujo 2 -circulo verde-)
  • Avance de la base de DM (madera) hasta un extremo (dibujo 2)
  • Suplementar  el eje vertical unos 8 cms (dibujo 3)


Después de los 3 pasos , logré pasar de los originales 36,2º a los finales 50,4º , en la fase 2 logré unos justos 42,4º pero no me quise confiar pues aun estaba muy cercano de los 40º teóricos.

Tal y como era de esperar he tenido de desmontar gran parte del invento y reajustarlo todo de nuevo, pero parece que medio anda…

Para facilitar el desmontaje de la soportación vertical me he currado un agujero de 25 mm. Que atraviesa el DM  a la altura de las bolas de rodamiento de la mesa giratoria, así me evito de desmontar todo el conjunto moto-reductor del movimiento horizontal.

Finalmente también he tenido de cambiar el compartimento de baterías, pero esto es un mal menor

Tenia otra opción más sencilla (dibujo 4) que era girar 180 º la base oscilante del movimiento vertical pero sencillamente la física dice que todo cae hacia abajo y no quería jugarme ver el Sigma 150-500 doblado por la mitad..

Hoy no hay fotos....lo siento!
Buen fin de semana!