Dudas obligatorio3

Dudas obligatorio3

de Damian Gerona Pereira -
Número de respuestas: 2

Buenas,

Tengo algunas dudas con respecto a los valores de las filas y columnas en la función crearLienzoCompleto y no se si estoy razonándolas bien.

Si por ejemplo tengo una matriz M de la siguiente forma:

M=1 0 1.4

      0 1 0

      0 0 1 

y una imagen 2x2. Cuando transformo los pixeles estos me quedan en:

[0,0]—>[1.4,0]

[0,1]—>[1.4,1]

[1,0]—>[2.4,0]

[1,1]—>[2.4,1]

Entonces si estoy buscando mantener la imagen completa, las dimensiones de la nueva imagen deberían ser 4x2? O se redondearía para abajo y la inicializo 3x2?

Y otra duda, en la interpolación bilineal, luego de calcular el valor del pixel de la imagen de salida con esta fórmula,


tengo que redondear al entero mas cercano el valor de Is(o,p)?

Muchas gracias, saludos.

En respuesta a Damian Gerona Pereira

Re: Dudas obligatorio3

de Leopoldo Agorio -
1) Es necesario redondear para arriba para que el lienzo completo no pierda información, que es el objetivo. Sugiero la función ceil de la biblioteca standard math. (Concretamente en tu pregunta la imagen resulta de 4x2, si la redondeas para abajo perdés información.)
2) La fórmula no se copió en tu mensaje pero es la que define la interpolación bilineal. Es claro que esa fórmula multiplica por valores flotantes por lo que el resultado es flotante, pero la variable en la que la almacenamos es entera. Acá no hace falta redondear al entero más cercano, basta el truncamiento que surge automáticamente del cast a entero. Sugiero que hagas esto así podés comparar con nosotros luego.