how to generate such an image in Mathematica

╄→гoц情女王★ 提交于 2019-12-03 11:29:07

问题


I am thinking of process an image to generate

in Mathematica given its powerful image processing capabilities. Could anyone give some idea as to how to do this?

Thanks a lot.


回答1:


Here's one version, using a textures. It of course doesn't act as a real lens, just repeats portions of the image in an overlapping fashion.

t = CurrentImage[];

(* square off the image to avoid distortion *)
t = ImageCrop[t, {240,240}];

n = 20; 
Graphics[{Texture[t], 
   Table[
     Polygon[
       Table[h*{Sqrt[3]/2, 0} + (g - h)*{Sqrt[3]/4, 3/4} + {Sin[t], Cos[t]}, 
         {t, 0., 2*Pi - Pi/3, Pi/3}
         ], 
       VertexTextureCoordinates -> Transpose[{
         Rescale[
           (1/4)*Sqrt[3]*(g - h) + (Sqrt[3]*h)/2., 
           {-n/2, n/2}, 
           {0, 1}
           ] + {0, Sqrt[3]/2, Sqrt[3]/2, 0, -(Sqrt[3]/2), -(Sqrt[3]/2)}/(n/2), 
         Rescale[
           (3.*(g - h))/4, 
           {-n/2, n/2}, 
           {0, 1}
           ] + {1, 1/2, -(1/2), -1, -(1/2), 1/2}/(n/2)
         }]
      ], 
      {h, -n, n, 2}, 
      {g, -n, n, 2}
    ]
  }, 
  PlotRange -> n/2 - 1
]

Here's the above code applied to the standard image test (Lena)




回答2:


"I think this could be well approximated with a calculated offset for the image in each cell" - Mr.Wizard

Exactly! As you can see from reconstructed image there is no lens effect and tiles are just displacements.

What you need is a Hexagonal_tessellation and a simple algorithm to calculate displacement for each hexagon from some chosen central point (weight/2, height/2).



来源:https://stackoverflow.com/questions/6272309/how-to-generate-such-an-image-in-mathematica

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!