2

我正在尝试使 Mathematica 示例正常工作。这是Theo Gray 博客上的那个。在 Mathematica 9.0 中它不起作用。我已经在 mathematica 8.0 的 stackoverflow上搜索了答案。我使用heike给出的代码。

imagePool =Map[With[{i = Import[#]}, {i, N@Mean[Flatten[ImageData[i], 1]]}] &,FileNames["/Users/xunyanan/Desktop/webwx_img/*.jpg"]];
closeMatch[c_] :=RandomChoice[Nearest[imagePool[[All, 2]] -> imagePool[[All, 1]], c, 20]]
ImageAssemble[Map[closeMatch, ImageData[Import["/Users/xunyanan/Desktop/me.tif"]], {2}]]

我认为它几乎可以成功运行。响应截图: 出内容

当我单击“显示完整输出”时。我会得到如下结果或 Mathematica 9.0 exit off-normal 截图:

在此处输入图像描述

我现在使用 Mathematica 9.0,没有经验。所以有人能推荐一个适用于 Mathematica 9 的代码版本吗?我很感激你能给我一些建议。

谢谢你们编辑这个问题。我的 PC ENV:mac OS X 版本 10.9 和 Mathematica 9.0

4

1 回答 1

1

正如评论所指出的,您的问题是因为您使用的图像imagePool的频道数量并不相同,这会破坏Nearest功能。解决此问题的简单方法可能是:

imagePool = Map[With[{i = Import[#]}, {i, 
  N@Mean[Flatten[ImageData[RemoveAlphaChannel[i]], 1]]}] &, 
    FileNames["*.png", "/tmp"]]

RemoveAlphaChannel在您导入图像时应用。对您的源图像也应用相同的预防措施是明智的。

指出不同:

之前(没有RemoveAlphaChannel):

前

后:

后

于 2013-11-26T11:27:59.647 回答