我正在尝试使用Mathematica示例。这是Theo Gray's blog上的那个。在Mathematica 9.0中它不起作用。我已经在stackoverflow in mathematica 8.0上搜索了答案。我使用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退出正常 截图:
我现在使用Mathematica 9.0,没有经验。那么有人可以推荐一个适用于Mathematica 9的代码版本吗?我很感激你能给我一些建议。
谢谢你们编辑这个问题。 我的PC ENV:mac OS X版本10.9和Mathematica 9.0
答案 0 :(得分:1)
正如评论所指出的那样,您的问题是因为您用于imagePool
的图片的通道数量并不完全相同,这会让Nearest
功能感到不安。解决这个问题的简单方法可能是:
imagePool = Map[With[{i = Import[#]}, {i,
N@Mean[Flatten[ImageData[RemoveAlphaChannel[i]], 1]]}] &,
FileNames["*.png", "/tmp"]]
即。导入图像时应用RemoveAlphaChannel
。将相同的预防措施应用于您的源图像也是明智的。
发现差异:
之前(没有RemoveAlphaChannel
):
后: