Image processing 如何在Mathematica中生成这样的图像
考虑到Mathematica强大的图像处理能力,我正在考虑在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
非常感谢。这里有一个版本,使用纹理。它当然不是真正的镜头,只是以重叠的方式重复部分图像
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提供的示例更具启发性。。。