Deformación de perspectiva en una sola dimensión

Estoy buscando una deformación de perspectiva que sea capaz de distorsionar una imagen en una sola dirección, es decir, cambiando gradualmente la escala y las posiciones de los objetos dentro de la imagen verticalmente mientras mantiene su escala y posición horizontales.

La "deformación de perspectiva" en Photoshop y herramientas similares en After Effects, como "pin de esquina", siempre mueven objetos tanto vertical como horizontalmente.

Aquí hay un ejemplo de lo que quiero lograr:

ingrese la descripción de la imagen aquí

Observe cómo las líneas verticales de la cuadrícula no se mueven en el resultado deseado.

¿Hay alguna forma de lograr esto en herramientas como Photoshop, Illustrator, After Effects o Gimp?

Debo aclarar que mi ejemplo no es específicamente lo que quiero lograr, sino simplemente una imagen de demostración. Quiero poder hacer esto con cualquier imagen sin obtener el "desplazamiento" que trae la deformación de perspectiva habitual.

Eso no es realmente perspectiva.
@Tetsujin Tal vez me falta el vocabulario. ¿Sería justo decir "perspectiva en una dimensión e isométrica en la otra"?
No realmente "isométrico", sino más bien "proyección en perspectiva en una dimensión y proyección paralela en la otra".
@Scott, deberías recuperar tu respuesta. La cuestión es que, a menudo, es necesario modificar un poco el modelo. Entonces, asumir que el software X hace lo que quieres es una oportunidad. Pero si al usar la mitad de lo que ofrece lo logra, entonces está en el camino hacia el dominio. ¿Por qué? Bueno, cada vez que haces algo, es mejor tener un modelo mental que te lleve a casa que apostar a que alguien tenga tu caso de uso particular como objetivo principal. Eventualmente sucederá que su objetivo no es el objetivo más común.
@joojaa está bien...:)

Respuestas (4)

Supongo que quieres que funcione con cualquier imagen, no solo con cajas rectangulares. La distorsión que desea no es la perspectiva, desea una escala Y que depende linealmente de X. Algunos programas lo permiten sin tener complementos ni escribir un script. El que conozco es Affinity Photo. Allí puede usar distorsión con ecuaciones: escribe una fórmula para las coordenadas desde donde se toma el píxel de la imagen original (x, y) a la imagen distorsionada.

Este es mi original:

ingrese la descripción de la imagen aquí

Tiene 1100 píxeles de ancho y 400 píxeles de alto. Lo coloqué para comenzar desde x = 0, y = 0 (esa es la esquina superior izquierda) para tener fórmulas fáciles sin compensaciones.

Un ejemplo de distorsión:

ingrese la descripción de la imagen aquí

el píxel (x,y) se toma de las coordenadas de la imagen original

(x, y/(1-x/2200))

Ejemplo 2:

ingrese la descripción de la imagen aquí

el píxel (x,y) se toma de las coordenadas de la imagen original

(x, y/(1+x/1100))

Las fórmulas que se muestran son bastante elementales, pero Photoshop y GIMP no tienen forma de usarlas sin complementos o scripts. Lamentablemente no soy programador, pero seguro que alguien sabe programarlos como script.

Uso del complemento "Paquete de filtros G'MIC"

G'MIC está disponible para GIMP, Photoshop, Krita y Paint.NET. Tiene mapeo de imágenes con fórmulas matemáticas al menos en los filtros de categoría de deformación. Hay "transformación cartesiana" y "mapeo conforme". El primero usa fórmulas x e y. Este último se basa en números complejos, por lo que la función deseada al menos necesita algunas matemáticas no tan obvias. Al menos el nombre "Conformal" sugiere que no está diseñado para dar los resultados que desea: conforme significa mantener los ángulos al menos localmente. Marque esto si está familiarizado con las funciones matemáticas https://gmic.eu/reference/mathematical_expressions.html#top

Los usuarios de la versión de línea de comandos de G'MIC con conocimientos de matemáticas y programación pueden ver fácilmente cómo usarlos de manera efectiva. Me salto más adivinanzas.

Un par de pruebas revelaron que la transformación cartesiana puede hacer lo mismo que Distorsionar con ecuaciones de Affinity Photo. Un ejemplo:

ingrese la descripción de la imagen aquí

El punto (x,y) en la imagen distorsionada se toma de (x, y(1-x/(2w)). Los parámetros w y h presentan el ancho y el alto de la imagen en píxeles.

Se puede utilizar la distorsión envolvente de Illustrator con malla 1x1. La idea ya está dicha de forma general por el usuario Julian Steinman. Pero quiero agregar que Envelope Distortion también funciona con vectores e imágenes rasterizadas.

Como se dijo, puede ser tedioso hacerlo bien, incluso con una malla de 1x1. Pero puede liberar la distorsión envolvente y usar la misma malla para otras imágenes aplicando Distorsión envolvente > Crear con objeto superior. La malla se puede estirar a un nuevo tamaño para una nueva imagen y aún funciona.

Sí, tienes razón en que quiero que funcione para cualquier imagen, debo aclarar eso. Me temo, como dijiste, que no es posible en PS/GIMP sin complementos. Creo que podré escribir un complemento para él, ya que quería esta transformación anteriormente, pero solo llevará tiempo... Gracias por aclarar la semántica de mi pregunta. Lo dejaré un poco más para ver si alguien puede encontrar una manera en Adobe/GIMP, de lo contrario, revisaré Affinity.

Separa las verticales.

Lo que buscas no es perspectiva. En perspectiva real, lo que está más cerca del espectador se alarga, más grande, a medida que se aleja. Lo que ha mostrado como "deseado" es en realidad lo contrario de esto.

Usando ilustrator ..

  • Separar las verticales internas para que no formen parte de la grilla
  • Deformar las horizontales
  • Úselo Pathfinder > Dividepara crear cajas individuales.

ingrese la descripción de la imagen aquí

Nunca haría esto con Photoshop. Photoshop simplemente no está diseñado para este tipo de operaciones de ruta. Puedo hacerlo, pero no hay Pathfinder en Photoshop, por lo que tendría que haber muchas modificaciones manuales en la ruta. Siempre puede hacer esto con Illustrator y luego copiar/pegar en Photoshop como objeto inteligente o capa de forma.

Debo aclarar que mi ejemplo no es específicamente lo que quiero lograr, sino simplemente una imagen de demostración. Quiero poder hacer esto con cualquier imagen sin obtener el "desplazamiento" que trae la deformación de perspectiva habitual.
Eres tan rápido como la luz. Impresionante.
RE: Votante negativo: tenga en cuenta que fue solo después de que publiqué esta respuesta que el interrogador dejó en claro que la pregunta era solo representativa .

Para Gimp existe el ofn-trapeze-transformscript/complemento. Después de la instalación, compruebe que Filters > Distortsel complemento es bastante lento, ya que procesa la imagen línea de píxeles tras líneas de píxeles.

Tenga en cuenta que lo que quiere distorsiona las líneas rectas:

ingrese la descripción de la imagen aquí

De hecho, este complemento se ha escrito para demostrar todos los efectos secundarios negativos de tal transformación :)

Puedes hacer eso con la transformación 'warp'

Es muy complicado hacerlo, pero estoy bastante seguro de que no hay otra manera...

Tendrá que configurar la cuadrícula de forma predeterminada para que tenga menos puntos para moverse (es posible que no haya una función bastante nueva para cambiar la cuadrícula si la versión no está actualizada)

ingrese la descripción de la imagen aquí

Sí, también he descubierto este método, pero todo ese jugueteo aún no equivaldrá a una deformación perfecta.
Puedes hacerlo perfecto. Pero solo toma una eternidad... Mi enfoque probablemente sería dibujar algunas pautas y determinar dónde deben colocarse todos los puntos de deformación. Después de todo, si puedo hacerlo casi en 20 segundos, debería poder hacerlo todo perfecto de una forma u otra si pasa una hora en ello. – no es una forma fácil de hacer esto, lo siento... no es una transformación común – nunca necesité hacer esto antes