Estoy experimentando con la función ImageTransformation para intentar hacer versiones anamórficas de imágenes, pero con un progreso limitado hasta el momento. Estoy buscando los resultados que obtienes al usar la imagen reflejada en un espejo cilíndrico, donde la imagen se curva alrededor del espejo central unos 270 grados. El wikipedia article tiene un par de buenos ejemplos (y también les pedí prestado el cráneo de Holbein).Cómo hacer que ImageTransformation produzca una versión anamórfica de la imagen
i = Import["../Desktop/Holbein_Skull.jpg"];
i = ImageResize[i, 120]
f[x_, y_] := {(2 (y - 0.3) Cos [1.5 x]), (2 (y - 0.3) Sin [1.5 x])};
ImageTransformation[i, f[#[[1]], #[[2]]] &, Padding -> White]
Pero no puedo persuadir a Mathematica para mostrarme toda la imagen, o para doblar correctamente. La imagen anamórfica debe rodear el espejo colocado "dentro" del centro de la imagen, pero no será así. Encontré los valores adecuados para las constantes poniéndolo dentro de un manipular (y bajando la resolución :). Estoy usando la fórmula:
x1 = a(y + b) cos(kx)
y1 = a(y + b) sin(kx)
Cualquier ayuda que produce un mejor resultado sería muy apreciada!
¿Cómo se refleja esta "(una) imagen en un espejo cilíndrico" como describe el OP? No estoy diciendo que esto esté mal, solo que no lo entiendo. –
@heike - excelente respuesta, ¡muchas gracias! – cormullion
@Mr Wizard - Pega un espejo cilíndrico en el centro y el reflejo muestra la imagen correctamente, aunque la imagen anamórfica distorsionada sea (o sea, excepto para los matemáticos) irreconocible. – cormullion