Registrarse
Resultados 1 al 3 de 3
  1. #1
    Ingreso
    07 Mar, 06
    Ubicación
    Madrid (a ratos Alicante)
    Mensajes
    9,450
    Post Thanks / Like

    Programar transformaciones no lineales de la imagen

    Es muy habitual aplicarle a la imagen transformaciones que la deforman para conseguir por ejemplo eliminar la distorsión geométrica de la lente, o "corregir" la perspectiva de un angular. Pero os habéis preguntado alguna vez cómo se hacen?

    Hasta que el otro día un forero pedía ayuda para mapear una foto sobre una esfera nunca me había puesto a aplicar desde dentro de un programa (y por tanto con total flexibilidad) transformaciones a una imagen. Y el motivo era que sabía que no podía obtener un buen resultado por el siguiente motivo: para deformar una imagen A y convertirla en una imagen B no se proyectan los pixels de A sobre B de acuerdo a la regla de transformación, sino que el proceso es inverso: se acude a la imagen B por formar y se hace el cálculo de qué pixeles de A han de interpolarse (podríamos decir promediarse) para obtener cada pixel de B.

    Para mí es fácil establecer una relación uno a uno, es decir calcular un solo pixel de A que sea el que más correspondería al pixel de B que estoy calculando. Esto sin duda da un resultado muy malo lleno de aliasing y dientes de sierra por todas partes.

    Pero se me ha ocurrido un truco, y es aprovechar la capacidad de PS de interpolar con calidad las imágenes para delegar en él la tarea de hacer una buena interpolación de pixels, y yo me centro en la transformacion. Para eso hacemos:

    1. Reescalamos en PS (interpolación bicúbica) la imagen a un tamaño N veces mayor del que tiene.
    2. Realizamos la transformación no lineal pixel de A -> pixel de B. La imagen resultante tiene aliasing y poca definición, pero es muy grande lo que da margen para devolverla a su tamaño original ganando en calidad así que...
    3. Reescalamos de nuevo en PS la imagen transformada a su tamaño original.


    El resultado es buenísimo. Aquí os pongo 3 ejemplos: a la izquierda la imagen original, en el centro como queda si aplicamos la transformación directamente, y a la derecha con el reescalado previo.
    Los ejemplos son lo de menos, lo que quiero es enseñaros la calidad que se consigue con el aumento previo del tamaño de la imagen. El que sea un poco habilidoso programando puede hacer cualquier tipo de transformación desde un programa con gran calidad de interpolación sin hacerla él mismo.


    MAPEADO EN ESFERA

    ORIGINAL / TRANSF. SIN REESCALADO / TRANSF. CON REESCALADO


    ONDAS

    ORIGINAL / TRANSF. SIN REESCALADO / TRANSF. CON REESCALADO


    ESPIRAL

    ORIGINAL / TRANSF. SIN REESCALADO / TRANSF. CON REESCALADO



    .
    "En ocasiones veo halos."

    http://www.guillermoluijk.com para suscribirte haz clic aquí
    Último contenido: EL MITO DEL TRÍPODE QUE ASESINÓ A UN ESTABILIZADOR

  2. #2
    Ingreso
    27 Sep, 05
    Ubicación
    Bilbao
    Mensajes
    3,553
    Post Thanks / Like
    Que bueno GUI, no dejas nunca de sorprenderme, por cierto me encanta el aspecto limpio y sencillo de tu web.

    Un saludo,

  3. #3
    Ingreso
    01 Mar, 05
    Ubicación
    Gijon
    Mensajes
    1,980
    Post Thanks / Like
    Interesante y a la vez sumamente sencillo y obvio lo que dices.En cuanto al escalado y rescalado quiero decir.
    No aporto nada pero como siempre no puedo pasar por un hilo tuyo y no darte las gracias.
    Estoy por hacer una lista de cosas que querria hacer con una foto y dartelas para plantearte retos
    Un saludo
    Daniel
    Dejemos que el aire corra entre los dos, a ver que nos cuenta el viento.
    Dejemos que el mundo gire y gire, hasta que nos encontremos de nuevo...

    www.foto.grafi.as


 

Marcadores

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •