【问题标题】:Photo Mosaic in Mathematica: an example from 2008 doesn't work in Mathematica 9Mathematica 中的照片马赛克:2008 年的示例在 Mathematica 9 中不起作用
【发布时间】:2013-11-25 06:16:01
【问题描述】:

我正在尝试让 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 exit off-normal 截图:

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

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

【问题讨论】:

  • @Cole 谢谢,一个严重的错误
  • @Cole 你知道怎么把问题发给这些人吗
  • 我不确定你是否可以在堆栈溢出时做到这一点,除了@提到他们的名字
  • @Heike 我明白了。非常感谢
  • 确保所有图像的颜色类型相同(确保Dimensions@Imagedata 都相同)

标签: wolfram-mathematica mosaic


【解决方案1】:

正如 cmets 所指出的,您的问题是因为您用于 imagePool 的图像的通道数并不完全相同,这会扰乱 Nearest 功能。解决这个问题的简单方法可能是:

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

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

找出不同之处:

之前(没有RemoveAlphaChannel):

之后:

【讨论】:

  • @george 好主意。我对最初链接的 Q 和 A 有着美好的回忆 - 我的第一个 StackExchange 问题...... :)
  • @cormullion 那时你是一只小蚱蜢 :)
猜你喜欢
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 2011-10-10
  • 2012-12-05
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
相关资源
最近更新 更多