Wolfram mathematica Mathematica中的照片马赛克:2008年的一个例子';我不在数学系工作
我想让一个数学例子起作用。这是我穿的那件 我认为Mathematica在编写代码(2008年5月)后肯定已经改变了,因为我无法从中得到任何合理的东西,尽管几乎改变了一切。我是否使用ImageData而不是导入?有人能推荐一个适用于Mathematica 8的代码版本吗Wolfram mathematica Mathematica中的照片马赛克:2008年的一个例子';我不在数学系工作,wolfram-mathematica,backwards-compatibility,mathematica-8,Wolfram Mathematica,Backwards Compatibility,Mathematica 8,我想让一个数学例子起作用。这是我穿的那件 我认为Mathematica在编写代码(2008年5月)后肯定已经改变了,因为我无法从中得到任何合理的东西,尽管几乎改变了一切。我是否使用ImageData而不是导入?有人能推荐一个适用于Mathematica 8的代码版本吗 imagePool = Map[With[{i = Import[#]}, {i, Mean[Flatten[N[i[[1, 1]]], 1]]}] &, FileNames["Pool/*.jpg"]]; cl
imagePool =
Map[With[{i = Import[#]}, {i, Mean[Flatten[N[i[[1, 1]]], 1]]}] &,
FileNames["Pool/*.jpg"]];
closeMatch[c_] :=
RandomChoice[Take[SortBy[imagePool, Norm[c - #[[2]]] &], 20]][[1]];
Grid[Reverse[
Map[closeMatch, Import["MendeleevIcon.tif"][[1, 1]], {2}]],
Spacings -> {0, 0}]
以下作品(感谢@yoda在评论中指出了Reverse[]
的内容):
可能稍微简化一些:
imagePool = Map[With[{i = Import[#]}, {i, N@Mean[Flatten[ImageData[i], 1]]}] &,
FileNames["Pool/*.jpg"]];
closeMatch[c_] := RandomChoice[
Nearest[imagePool[[All, 2]] -> imagePool[[All, 1]], c, 20]]
ImageAssemble[Map[closeMatch, ImageData[Import["mendeleevIcon.tif"]], {2}]]
编辑
原始代码在版本8中停止工作的原因是,在Mathematica版本6之前,
Import[“file.jpg”]
将返回一个Graphics[Raster[]
对象。要提取图像数据本身,只需执行Import[“file.jpg”][[1,1]]
。但是,在版本8(我怀疑是版本7)中,默认情况下光栅图像作为图像导入
,这意味着您需要ImageData
从导入的文件中提取图像数据。您仍然可以使用import[“file.jpg”,“Graphics”]
将光栅图像作为Graphics[raster[]]
导入,因此,如果您调整import
语句,原始代码应该仍然可以工作,但使用Image
对象的优点是,您可以使用imageassembly
等函数(加上Mathematica 8附带的一系列其他图像处理工具)。天哪,南半球……总是在翻转东西around@yoda是倒着的吗?我看不懂那张图片中的任何东西!@yoda如果是倒着的,请移除反转[]
是的,是倒着的。图片两侧的两个黑色补丁在下层第三中间的“FE-ES FM -ES”条带是眼睛。从这一点开始,如果你遵循从左眼向上的较暗的图像(图片左),它形成了鼻子的阴影,最后在上面三分之一处分叉,变成了胡子。我看到了的反面…现在不那么有趣了,因为我最初认为你是故意的:)
imagePool = Map[With[{i = Import[#]}, {i, N@Mean[Flatten[ImageData[i], 1]]}] &,
FileNames["Pool/*.jpg"]];
closeMatch[c_] := RandomChoice[
Nearest[imagePool[[All, 2]] -> imagePool[[All, 1]], c, 20]]
ImageAssemble[Map[closeMatch, ImageData[Import["mendeleevIcon.tif"]], {2}]]