La facil es usar una matriz de escalado. Para tu ejemplo la matriz es:
[[.5 0][0 .5]]
Entonces cuando queres pintar el pixel 0,0 de la imagen destino lo
pasas por la matrix y te da 0,0 de la imagen origen.
despues cuando queres pintar el pixel 1,1 haces lo mismo y te da .5
.5, redondea y saca el pixel de la imagen origen 0 0 o 1 1, depende de
tu politica de redondeo.

Para hacerlo un poquito mas complicado podes hacer una interpolacion
lineal, entonces cuando te da que tenes que buscar .5 .5 en lugar de
redondear hacer el promedio entre los pixels en 0 0 y 1 1...obviamente
si te da .75 tendras que hacer un promedio ponderado y sacar 25% de
uno y 75% de otro. La contra de este metodo es que se esfuman un poco
los bordes, por eso no se suele usar.

Tambien se pueden hacer interpolaciones mas complicadas como
cuadratica y cubica(esta ultima es bastante comun) (de mas orden no se
suelen usar). Buscate un libro de analisis numerico, la palabra clave
es 'interpolar'.

Saludos

2008/4/27 Andres Pittaresi <[EMAIL PROTECTED]>:
>
>  Hola, por favor necesitaría saber alguna forma o algoritmo para ampliar una
> imagen en c++. Yo recibo una imagen y la tengo que sacar ampliada en un
> factor k tanto para x como para y. Si la imagen era por ejemplo de 50x50 y
> el factor es 2, tengo que generar una imagen de 100x100 (no es que la salida
> tiene que ser la misma imagen de 50x50 con la mitad de su contenidoen x y la
> mitad en y). Gracias de antemano. Saludos.
>
>
> ________________________________
> Ingresá ya a MSN Deportes y enterate de las últimas novedades del mundo
> deportivo. MSN Deportes
> _______________________________________________
>  Lista de correo Programacion.
>  [email protected]
>  http://listas.fi.uba.ar/mailman/listinfo/programacion
>
>

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a