Fecha actual Jue Nov 21, 2024 10:36 am


Proyección geométrica lineal de una cámara (3D -> 2D)

El rincón de los hilos tecnofrikis

Moderadores: IOM60, laucsap60, klomp, Siniestro, Guillermo Luijk, Pablo Valido

Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor Guillermo Luijk » Dom Ene 22, 2023 9:43 pm

Los que hayáis estudiado dibujo técnico seguramente os acordaréis del Cristo que es dibujar a mano perspectivas cónicas (con uno, dos o tres puntos de fuga). Curiosamente realizar este tipo de dibujo en un ordenador, asumido como la forma más realista en que se puede plasmar una escena 3D sobre un plano 2D (hoja de papel, pantalla de ordenador, sensor de una cámara de fotos), responde a una ecuación tan sumamente tonta e intuitiva como es una semejanza de triángulos, puro Teorema de Thales:

Imagen

Asumiendo que nuestro punto de observación es el origen de coordenadas y miramos en la dirección del eje Z, un punto P definido por sus coordenadas (x,y,z) en el espacio 3D se proyecta sobre el plano de distancia focal f como el punto P' de coordenadas (x',y',f). La obtención de los valores x' e y' es tan inmediata como expresa la fórmula: ambos quedan reducidos por el factor f/z que es la relación entre la distancia f del plano de proyección (distancia focal del objetivo) y la distancia z que hay entre el observador (cámara) y el punto (sujeto).

Esta relación f/z es sumamente interesante para entender el efecto de la distancia focal (f) y la distancia al sujeto (z) en fotografía:
  • Alterar f, es decir desplazar el plano de proyección, solo modifica el escalado o ángulo de visión de la escena porque afecta por igual a todos los puntos de la misma. Es equivalente a hacer un escalado o zoom de la imagen pero no modifica las relaciones de tamaño entre objetos, es decir no modifica la perspectiva.
  • En cambio al ser z un valor diferente en función de la distancia entre la cámara y cada elemento de la escena, sí determinará la perspectiva de la imagen obtenida. Cuando z tiende a infinito (sujetos muy lejanos), el factor f/z será aproximadamente el mismo para todos los puntos de la escena obteniendo el equivalente a una perspectiva axonométrica (lo que los fotógrafos llaman "compresión de planos").
Es una demostración gráfica y matemática de que la focal no altera la perspectiva, y es la distancia a la cámara la que sí lo hace.

Otra lectura que se obtiene intuitivamente del esquema, es que cualquier objeto que tenga forma de línea recta en el mundo real se proyectará también como una recta en el plano (distorsiones de barril/cojín de una óptica al margen). De hecho ni siquiera tiene que ser un objeto realmente rectilíneo, basta que se presente como tal desde el punto de vista del observador (por ejemplo la Vía Láctea pese a ser una espiral de estrellas, desde nuestro planeta se ve como una alineación lineal de estrellas al estar la Tierra contenida en ella y por eso la capturamos como una recta de estrellas, mal que le pese a muchos fotógrafos de nocturnas que la prefieren representar como un arco).

Con esas simples ecuaciones he construido una animación con esferas (cuyo radio se escala por el mismo factor f/z que la localización de su centro). He escogido un ejemplo con esferas porque tienen una propiedad que me apetecía explotar. Si proyectar objetos 3D sobre un plano es tan sencillo como he explicado, detectar qué objetos tapan o intersecan a otros es en cambio sumamente complicado. A día de hoy los algoritmos ya están trilladísimos y muy bien implementados, incluso por hardware, en cualquier programa de animación 3D, arquitectura o videojuego. Pero con las esferas tengo un algoritmo de eliminación de partes ocultas tan sencillo como es dibujarlas por orden, de mayor a menor distancia al observador. Así las que estén más cerca ocultarán a las que están más lejos y el resultado es equivalente a un algoritmo real mucho más complejo:

Imagen

Aquí una versión coloreando las esferas con un tono de gris proporcional a la distancia al observador para crear un efecto de profundidad aérea:

Imagen

Salu2!
Avatar de Usuario
Guillermo Luijk
 
Mensajes: 9634
Registrado: Dom Ene 31, 2010 6:37 am
Ubicación: Madrid (a ratos Alicante)

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor C2020 » Lun Ene 23, 2023 11:10 am

Si me pongo a pensar en el teorema del de Mileto me duele la cabeza. Para ti será natural. Me ha parecido bien chulo, la explicación por encima me tendrá que bastar porque no tengo ahora comprensión de la semejanza de triángulos y no sé el tiempo que me llevaría entenderlo.
El render está chulo, yo he trasteado con algunos programas para hacer objetos 3D y creo que cuando las bolas (que casi parece una molécula) rotan noto un efecto extraño, como paradójico, y cuando me he fijado más veo que es porque el cambio de densidad con que se representa la perspectiva aérea no se da exactamente en función de la distancia al observador sino a otro plano como si al girar modificaran el gris en relación a la distancia a otras de las bolas en lugar de al observador. Pero puede ser un efecto que solo vea yo porque en estas cosas de la percepción los hay y los habemos distintos.
C2020
 
Mensajes: 458
Registrado: Mié Ene 15, 2020 2:17 pm

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor Guillermo Luijk » Lun Ene 23, 2023 11:36 am

El Teorema de Thales es muy tontorrón, seguro que lo entiendes perfectamente:

Imagen

Mira los 2 triángulos de la figura:
  • El pequeño de lados: 6, 4, x
  • El grande de lados: y, 6, 3
El triángulo grande es una versión aumentada del pequeño guardando todas las proporciones, porque el lado de longitud x es paralelo al lado de longitud 3 y los otros dos lados se solapan en paralelo. El teorema dice que al cumplirse lo anterior puedes establecer relaciones de proporcionalidad, como por ejemplo (se leería "4 es a x como 6 es a 3"):
4 ---------- x
6 ---------- 3

Y podemos calcular x resolviendo la regla de 3:
x = 4*3/6 = 2

Pues una cámara de fotos hace lo mismo, las coordenadas de un punto de tu escena proyectada sobre el sensor son iguales a las coordenadas de ese punto en el mundo real multiplicadas por un factor:
x' = x * focal/z
y' = y * focal/z
Avatar de Usuario
Guillermo Luijk
 
Mensajes: 9634
Registrado: Dom Ene 31, 2010 6:37 am
Ubicación: Madrid (a ratos Alicante)

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor C2020 » Lun Ene 23, 2023 1:21 pm

Jo, pues si que se entiende con facilidad. Estas matemáticas así dan gusto.
C2020
 
Mensajes: 458
Registrado: Mié Ene 15, 2020 2:17 pm

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor afloresa » Lun Ene 23, 2023 5:10 pm

Menos mal que nos pones deberes de vez encuando ;) a si le damos al bolo nos entretenemos y combatimos el alzeimer que los que tenemos ya una edad.... :lol:
Avatar de Usuario
afloresa
 
Mensajes: 2697
Registrado: Dom Ene 29, 2017 7:11 pm
Ubicación: Torrent - Valencia

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor freme_3 » Mar Ene 24, 2023 10:01 am

afloresa escribió:Menos mal que nos pones deberes de vez encuando ;) a si le damos al bolo nos entretenemos y combatimos el alzeimer que los que tenemos ya una edad.... :lol:

Hola, sí qué razón tienes es lo primero que me dijeron cuando me jubilaron ¡¡¡¡¡ojo¡¡¡¡¡ estate activo en mente y cuerpo, asi que aqui estamos intentando demostrar mi interes por el 125/250 seg. frente al f/8 y alguna que otra barbaridad de ISO alto aderezado de fotografia de paisaje nevado, si es posible claro, y ya digo muy muy interesante esto que aquí nos expone el amigo Guillermo
Saludos de Felipe :D

Dices... Los que hayáis estudiado dibujo técnico ...pues si un ejemplo

ImagenA7_02872 by freme_3, en Flickr

Bueno algunas veces hay que dejar un f/8

Sony ILCE-7M3
FE 24-105mm F4 G OSS
ƒ/8.0 44.0 mm 1/50 1250
Avatar de Usuario
freme_3
 
Mensajes: 1769
Registrado: Mié Ago 01, 2018 10:14 am

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor Guillermo Luijk » Mar Ene 24, 2023 9:04 pm

He pasado "a limpio" el ejercicio, creo que ha quedado bastante agradable de leer y con comentarios específicos aplicados a fotografía:

Proyección lineal de escenas 3D sobre el plano con R

Salu2!
Avatar de Usuario
Guillermo Luijk
 
Mensajes: 9634
Registrado: Dom Ene 31, 2010 6:37 am
Ubicación: Madrid (a ratos Alicante)

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor C2020 » Mié Ene 25, 2023 8:31 am

Ahora el artículo está muy bien. Solo hay dos cosas que me preocupan, una es el efecto de las bolas al girar que comenté. Yo no lo aprecio “natural” aunque se entiende perfectamente para el ejemplo, y si eso es lo que el autor buscaba pues ya está (pero…). Que el curro que te has tomado ya es bastante y no sé si merece la pena dejarlo mejor pero sigo percibiendo un efecto artificial que me hace entender que las bolas cambian de gris con respecto de la distancia al observador pero a la vez lo hacen con respecto del vértice opuesto del cubo y entonces no lo hacen según la distancia a mi ojo. Pero como se trata de ti estoy seguro de que tienes una buena razón para dejarlo así.
La otra cosa es que quizás se pueda señalar -ya que hablas de la Via Láctea- que el espacio no parece ser Euclidiano y que en ciertos casos la proyección de los triángulos se curva y según puedo leer eso afecta a la suma total de los grados de sus ángulos que no siempre resultaría de 180. Recordaba el caso de una estrella visible aún estando detrás de otro cuerpo celeste porque la luz se curvaba por la gravedad del cuerpo frontal pero no hago ahora memoria del caso concreto porque al fin y al cabo no es cosa de la entienda. No se me ocurre nada más para tocar las pelotas. El dibujo de las mariposas que has puesto es una delicia, no lo conocía y me ha parecido hasta demasiado bonito. Gracias y disculpa.
Un saludo.
C2020
 
Mensajes: 458
Registrado: Mié Ene 15, 2020 2:17 pm

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor Guillermo Luijk » Mié Ene 25, 2023 10:27 am

jeje has hilado muy fino con lo de las bolas eh? Perdona pero no te había leido la otra vez. Efectivamente, los colores estrictamente no dependen solo de la distancia absoluta al observador (cada distancia = 1 color), sino que en cada frame se asigna todo el rango de tonos de gris, desde el negro hasta el casi blanco (90% de blanco), respectivamente a la bola más cercana / bola más lejana de ese frame. Es decir, que siempre habrá al menos una bola negra, esté el conjunto en la posición que esté, y siempre habrá al menos una bola casi blanca, y las demás adquirirán un color entre medias según su distancia al observador. Pero me ha sorprendido que te hayas dado cuenta :P
Lo hice así por simplicidad. Para hacerlo "bien" tendría que calcularse previamente, ya sea corriendo la simulación entera o más sesudamente estudiando la rotación con sus ángulos exactos, la distancia mínima y máxima a la que llegan a estar del observador todas las bolas en toda la animación y creí que no valía la pena. Se trataba de hacer un trampantojo rápido, pero me has picado, igual lo hago esta noche.

Respecto a la VL, a nivel cósmico los rayor de luz se curvan, pero no en la medida en que aparece la VL curva en las fotos nocturnas panorámicas. Te aseguro que en esas imágenes lo que se ve es otra cosa, y quien curvó la VL es el programa de panorámicas, ya sea con o sin el conocimiento de quién lo usaba. Hace un par de meses se me enfadaron bastante algunos energúmenos en FB porque conté estas cosas sobre una foto. Lo curioso es que en ningún momento invalidé la foto, ni dije que era mala, ni dije que yo la haría de otro modo (de hecho dije que la habría hecho igual, con su curva). Pero con las fotos la gente a veces es muy sensible, espero que defiendan los Derechos humanos con el mismo ímpetu.

Salu2!
Avatar de Usuario
Guillermo Luijk
 
Mensajes: 9634
Registrado: Dom Ene 31, 2010 6:37 am
Ubicación: Madrid (a ratos Alicante)

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor freme_3 » Mié Ene 25, 2023 10:48 am

Hola, por si es de interes general....

https://www.fotochismes.com/2023/01/25/ ... rmo-luijk/
Avatar de Usuario
freme_3
 
Mensajes: 1769
Registrado: Mié Ago 01, 2018 10:14 am

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor C2020 » Mié Ene 25, 2023 2:46 pm

Jo, lo de las bolas lo vi, no es darme cuenta, es algo natural observarlo. Y si puedes cambiarlo debes porque te quedará la explicación de cojones y nadie te tocará ya las bolas (esas bolas).
Lo de la Via Láctea yo lo decía como introducción a que el espacio no es euclidiano y por tanto, en ocasiones a escalas gordas parece que los triángulos se proyectan en un espacio curvado cerca de objetos de gran densidad o masa y sus ángulos suman más de 180 o menos de 180. Solo eso, en nuestro mundillo nos vale lo que escribes ahí pero en la realidad gorda y fría parece que las cosas pueden tener un comportamiento distinto y ya eso es curioso y normalmente no somos conscientes. Aunque se lee que a efectos generales y por su inmensidad el espacio puede considerarse plano. A mi lo de la perspectiva y demás ya me lo dejasteis bien claro en alguna discusión.
C2020
 
Mensajes: 458
Registrado: Mié Ene 15, 2020 2:17 pm

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor Guillermo Luijk » Mié Ene 25, 2023 10:16 pm

C2020 escribió:Jo, lo de las bolas lo vi, no es darme cuenta, es algo natural observarlo. Y si puedes cambiarlo debes porque te quedará la explicación de cojones y nadie te tocará ya las bolas (esas bolas).


Bueno pues aquí tienes las dos, la primera donde en todos los frames hay blanco y negro:

Imagen

Y la segunda donde el color está estrictamente ligado a la distancia y solo aparecen bolas blancas o negras cuando se alcanzan los acercamientos máximo y mínimo:

Imagen

Yo entiendo lo que dices, y reconozco que el efecto 3D es más coherente en la segunda, pero al menos a mí no me supone una gran diferencia y casi me quedo con la primera porque siempre tiene más gradiente de grises. Me interesa que cuentes si tú ves una gran diferencia.

Salu2!
Avatar de Usuario
Guillermo Luijk
 
Mensajes: 9634
Registrado: Dom Ene 31, 2010 6:37 am
Ubicación: Madrid (a ratos Alicante)

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor C2020 » Jue Ene 26, 2023 10:47 pm

No, ya lo siento, no lo veo. Quería decir que las bolas se comportan como objetos enteros, que la luz que reflejan no se atenúa por la distancia y que al rotar el grupo se aclaran por la esquina con toda su hilera. Lo natural es que las bolas estén hechas de manera que cada una se vea más atenuada en función de la distancia, pero para eso cada bola debe percibirse más o menos atenuada en sus partes, no con el efecto en toda la bola completa. Digo si por ejemplo avanzan hacia mi saliendo de una sombra yo vería que a determinada distancia dejan de estar a la sombra y varía a esa distancia aunque giren todas entrando en la luz, pero ahora cambian de tono al girar y no simplemente con la cercanía o lejanía al frente. El efecto de aclarado oscurecimiento debería estar ligado solo a la distancia al observador. Puede ser muy complicado.
Un saludo.
C2020
 
Mensajes: 458
Registrado: Mié Ene 15, 2020 2:17 pm

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor Pau » Jue Ene 26, 2023 11:14 pm

Guillermo tu no eres de letras verdad?
Avatar de Usuario
Pau
 
Mensajes: 7136
Registrado: Lun Dic 29, 2014 7:33 pm
Ubicación: Vulcano

Re: Proyección geométrica lineal de una cámara (3D -> 2D)

Notapor Guillermo Luijk » Jue Ene 26, 2023 11:56 pm

C2020 escribió:cada bola debe percibirse más o menos atenuada en sus partes, no con el efecto en toda la bola completa
(...)
El efecto de aclarado oscurecimiento debería estar ligado solo a la distancia al observador.

Vale, ahora te entiendo. Lo que dices es sombrear las bolas, pero no pretendía hacer algo así. Solo quería probar el efecto de profundidad de tipo perspectiva atmosférica, por ejemplo como hice aquí con la Sierra de Montserrat.
Cada bola es de un color plano, pero ese color es función de la distancia al observador eso te lo aseguro :D

Pau escribió:Guillermo tu no eres de letras verdad?

Va a ser que no jeje. Si pudiera vivir varias vidas me gustaría estudiar varias carreras, y ninguna sería de Letras :D (física, estadística, informática, arquitectura,...).

Salu2!
Avatar de Usuario
Guillermo Luijk
 
Mensajes: 9634
Registrado: Dom Ene 31, 2010 6:37 am
Ubicación: Madrid (a ratos Alicante)

Vídeo 3D con música

Notapor Guillermo Luijk » Lun Ene 30, 2023 3:18 am

He sincronizado el vídeo con música, creando una corta coreografía 3D. No sé hacer videos ni tengo ningún programa de montaje de vídeo, así que todo se ha programado a mano. Video final generado con FFmpeg desde línea de comandos.

http://guillermoluijk.com/datosimagenso ... mation.mp4

Salu2!

PD: mola más con cascos :D
Avatar de Usuario
Guillermo Luijk
 
Mensajes: 9634
Registrado: Dom Ene 31, 2010 6:37 am
Ubicación: Madrid (a ratos Alicante)


Volver a PhotoLab



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 12 invitados