项目实测:万物皆可重建图像———六种算法画同一张蒙娜丽莎

起因是我看到一个 13k stars 的项目 primitive——用几百个三角形"画"出一张照片。一查发现这是个大家族:emoji、字符、小图拼贴、遗传算法……都能重建图像。干脆把同一条蒙娜丽莎喂给六种工具,看谁画得最像。

全家福:同一张蒙娜丽莎,六种方式各画一遍。 从上到下:几何图元、字符画、三角剖分、表情拼贴、表情马赛克、基因进化。

六宫格同屏进化: 六种算法同时从 0 到 1——看谁先"认出"蒙娜丽莎。

1⃣ primitive — 几何图元(13.2k⭐)⭐重点

玩法: 算法每次随机放一个三角形/矩形/圆,盖上去算和原图的误差,不满意就变异重来(爬山算法),颜色直接按覆盖像素算最优值。放几百个形状后,色块渐渐"长成"蒙娜丽莎。

实测: 没预编译 Windows 版,得自己装 Go 编译(winget 装 Go 还失败了,只能下绿色版 zip)。跑 200 个形状只要 5.5 秒,出图 1024px。动图是 150 个形状的渐进过程——看着色块一点点拼出人脸,非常解压。

唯一槽点: 结果带随机性,同一张图跑两次长得不一样。

2⃣ ascii-image-converter — 字符画(3.4k⭐)

玩法: 图片转字符,每个字符按亮度映射( .-+#@),支持彩色。

实测: 下载 exe 直接跑,秒出。彩色版 100 字符宽,远看是蒙娜丽莎,近看全是 @#$%。

3⃣ esimov/triangle — 三角剖分(2.1k⭐)

玩法: 不是逐形状逼近,而是先把图采样成 2500 个点,直接做 Delaunay 三角剖分,每个三角形填平均色。

实测: 同样秒出。跟 primitive 的"贪心逼近"不同,它是"一张网直接罩上去"——几何感更强,线条更锐利。

4⃣ emojillate — 表情拼贴(351⭐)

玩法: 图片切网格,每格找颜色最接近的 emoji 填进去。

实测: 纯网页在线玩,拖图进去等几秒就出。调整分辨率滑块,格子越细越像原图。槽点: 作者自己都觉得项目过时了,页面标题带删除线写着 emojillate——但 demo 居然还活着。

5⃣ OpenMoji 马赛克 — 表情小图拼贴(自写)

玩法: 和 emojillate 同思路但反过来——用 4495 个 OpenMoji 表情小图当"瓷砖",每格选平均色最接近的表情铺上去。

实测: 原本想用官方 photomosaic 库,结果它跟新版 skimage 不兼容一跑就报错,干脆 40 行自己写了一个。24×24 网格用了 273 个不同表情。

6⃣ EvoLisa — 基因进化(经典)

玩法: 2008 年火遍全网的"遗传算法画蒙娜丽莎"网页版。50 个半透明多边形随机变异,像的留下不似的扔掉——模拟退火。

实测: 在线 demo 还活着。跑了 90 秒、2.3 万次变异,能看出人形轮廓但离原图还远。纯 JS 跑得慢,当年这玩意能让人盯一晚上。

🪨 槽点合集

  1. 老项目通病: primitive 没 Windows 预编译包,装 Go 还差点翻车

  2. 兼容性: photomosaic 官方库跟新版 skimage 不兼容,直接报错

  3. 进化慢: EvoLisa 跑 2.3 万次变异才刚出人形

  4. 随机性: primitive 每次结果不一样,强迫症慎用

不是滤镜,是算法在"画"——六种方式,六个世界。

⭐ 六工具实测 | 项目链接:github.com/fogleman/primitive ·

github.com/TheZoraiz/ascii-image-converter ·

github.com/esimov/triangle ·

github.com/notwaldorf/emojillate ·

alteredqualia.com/visualization/evolve

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com