打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Matrix67: My Blog ? Blog Archive ? 牛!Mathemat...
牛!Mathematica还能这样用!自己制作马赛克拼图
Tough Computer |
2008-05-19 1:03|
47 Comments | 本文内容遵从CC版权协议 转载请注明出自matrix67.com
Wolfram的Blog上更新了一段非常牛的Mathematica代码,真的让我大开眼界。只需要三行代码,你就可以自己做一个马赛克拼图。
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["MasterImage.tif"][[1, 1]], {2}]], Spacings -> {0, 0}]
其中,"Pool/*.jpg"是你的图库,我估计最少也得有几百张吧。我用Photoshop把我的collection全部处理成了35x35的小图;为了让最终效果更佳,我特地把它们全部处理成单色的,并且减小了对比度。"MasterImage.tif"是你的目标图片,Mathematica会把这个图片中的每一个像素用图库中一个合适的图来代替。我把我的照片剪裁了一下,然后压成19x22的大小。Mathematica首先把所有照片以及每个照片的RGB值的中位数存成一个list,函数closeMatch将图片按照RGB值的均方根排序,然后随机从头20个中选出一个。第三行用Grid函数输出我们所要的马赛克拼图。最后我们就得到了——由众MM图所组成的Matrix67的肖像画!!如果你还看不出来的话,站远点儿眯着眼睛就能看出来了。
Mathematica 5.0貌似没有SortBy和Grid等函数,因此这段代码在5.0下面不能用。为此我专门把Mathematica升到了6.0,改进不小,建议还在用5.x的朋友都去试一试。起初在网上找Mathematica 6.0的下载找了半天,结果在北大数院的FTP里找到了,下载速度贼快。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Matrix67: My Blog ? Blog Archive ? 聆听函数的声音:Mathematica的声音函数试验
听说你还不会画热图
Matrix67: My Blog ? Blog Archive ? 大开眼界:世上最无敌...
安装激活 Mathematica v10.3
超实用小众软件
Mathematica 9.0自定义函数库保存
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服