救命,我不小心拍出了一堆 wigglegram

查看原文 HN 讨论

文章摘要

这篇文章讲述了作者如何”意外地”发现自己拍出了大量 wigglegram。所谓 wigglegram,是”一种立体图像,把若干帧循环拼在一起(比如做成 GIF)就能制作出来”。这种技术通过在同一主体的若干个略有差异的视角之间快速来回切换,营造出一种逼真的 3D 立体效果。

意外的发现:作者是个有些”选择困难”的摄影师,习惯从不同角度对同一场景连拍多张。他意识到,多年累积下来,自己的手机里其实藏着数百组无意中拍成的 wigglegram。与其手动翻遍成千上万张照片,他干脆开发了一个自动化方案。

技术实现:作者采用了感知哈希(perceptual hashing)——这正是 TinEye 等反向图片搜索引擎所用的技术。与密码学哈希函数不同,感知哈希会为视觉上相近的图片生成相近的哈希值。通过计算图片两两之间的汉明距离(hamming distance),并设定一个阈值(约 10 个比特),脚本就能自动提取出适合制作 wigglegram 的连续序列。

结果:这个流程在各种主题上产出了数百个 wigglegram,涵盖迪士尼景点、动物、建筑细节和设计作品。其中许多更像是”小小的无意拍成的电影”,而非真正的立体图像,营造出的是动感效果而非景深效果。最后,作者把脚本公开发布在了 GitHub 上,邀请其他人处理自己的图库,去发现那些被无意捕捉到的 wigglegram。

HN 评论精华

aleyan(631 分)解释了两种制作 wigglegram 的方法:一是上世纪 80 年代带同步快门的多镜头相机,二是利用深度图合成视角。他指出,由于 OP 的样张拍摄不对齐、且非同步采集,缺乏 Nishika/Nimslo 这类专用相机有意拍摄时那种”强烈的视差效果”。

rtkwe 也补充道,那些精良的范例使用的是沿单一轴线、固定距离上的同时采集,而无意拍成的作品由于运动不一致,结果更显跳跃,破坏了视差错觉。

strickinato(633 分)强调了一个关键的后期处理步骤——wiggle 内部的图像对齐,并演示了焦点选择如何极大地影响感知到的 3D 质量和观看体验。

scottshambaugh(626 分)推广了自己用 matplotlib 制作 wigglegram 和立体图(stereogram)的库,认为这种伪 3D 可视化对于理解数据是”被低估的”手段。

wibbily(作者本人)承认”意外”的性质正是结果较差的原因;他指出,有意拍摄的 wigglegram 效果更好——诀窍是让主体保持居中,同时让相机”绕轨”移动以制造视差。

nkrisc 则反映说,无意拍成的样张让他产生了晕动感(motion sickness),与精心制作、能产生平滑舒适 3D 效果的版本形成对比。