Wolfram mathematica Mathematica中的照片马赛克:2008年的一个例子';我不在数学系工作

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

我想让一个数学例子起作用。这是我穿的那件

我认为Mathematica在编写代码(2008年5月)后肯定已经改变了,因为我无法从中得到任何合理的东西,尽管几乎改变了一切。我是否使用ImageData而不是导入?有人能推荐一个适用于Mathematica 8的代码版本吗

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}]]