Image processing 如何在Mathematica中生成这样的图像

Image processing 如何在Mathematica中生成这样的图像,image-processing,wolfram-mathematica,Image Processing,Wolfram Mathematica,考虑到Mathematica强大的图像处理能力,我正在考虑在Mathematica中生成图像。有人能告诉我怎么做吗 非常感谢。这里有一个版本,使用纹理。它当然不是真正的镜头,只是以重叠的方式重复部分图像 t = CurrentImage[]; (* square off the image to avoid distortion *) t = ImageCrop[t, {240,240}]; n = 20; Graphics[{Texture[t], Table[ Pol

考虑到Mathematica强大的图像处理能力,我正在考虑在Mathematica中生成图像。有人能告诉我怎么做吗


非常感谢。

这里有一个版本,使用纹理。它当然不是真正的镜头,只是以重叠的方式重复部分图像

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
]
下面是应用于()的上述代码

“我认为这可以用每个单元格中的图像计算出的偏移量很好地近似”——Wizard先生

没错!从重建图像中可以看到,并没有镜头效果,瓷砖只是位移


您需要的是一个简单的算法,用于计算每个六边形从选定中心点(重量/2,高度/2)的位移。

当然可以。你只需要做一个小程序来跟踪离轴非傍轴近似镜头。可行吗?对有用吗?我对此表示怀疑。有很多光线追踪软件包。@belisarius这真的有必要吗?我认为这可以很好地近似于每个单元中计算出的图像偏移量。+1很好的重建!六边形镶嵌正是布雷特在回答中所做的。顺便说一句-你是如何获得重建图像的?@Ross是的,你到底是如何重建的?@Simon@acl-Gimp+手部选择。更科学的方法是在瓷砖上分割并使用一些特征匹配。我已经在我的评论“Gimp+手部选择”@Brett,+1中解释了这一点,它看起来很棒。但是我只有Mma 7.0,它没有
vertexturecordinations
选项。无法尝试。Mma7.0中是否有变通方法或类似的东西?再次感谢!我可以,在我的脑海里,想到两种可能性。首先,使用
ParametricPlot
ColorFunction
将六边形绘制为一组从纹理图像着色的小多边形。(如果你想要一个像样的分辨率,这将是一个缓慢且内存密集的过程。)其次,找出一个从六边形到
图像的映射,并以某种分辨率进行你自己的离散化。任何一种方法都应该有效;基本上,您将编写一个函数来转换单个
多边形
给定的结果总体大小信息,这将需要一些努力。祝你好运如果有人不知道,从第6版IIRC开始,Lena就可以作为Mathematica中的
ExampleData[{“TestImage”,“Lena”}]
直接使用
ExampleData[“TestImage”]
将列出其他测试图像,并且
ExampleData[]
所有可用类型的。。。示例数据=)@Michael最初的Lena图片比Mma提供的示例更具启发性。。。