Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
实况照片(Live Photo)这段时间风靡全网,Android 品牌以及各大社交软件都加入了对其的支持。不少人觉得实况照片就是拍照的同时多录了一段视频。但它其实远比一段视频复杂。
最显而易见的是,Live Photo 的开始时间是早于按下快门的时间的。也就是说相机需要缓存过去 2-3s 的视频帧。

另外,Live Photo 的主图位置并不总在视频中间。其实 Apple 在相机中还会实时检测加速度的变化,如果加速度大于一定阈值就会提前触发实况照片保存,这也就避免了按下快门后立刻收起手机、Live Photo 会录到那些无意义的画面。
Live Photo 保存之后,Apple 又为其加入了更多维度的数据:相机内会实时运行一套实况照片打分机制,来区分实况中的是一动不动的文档,还是藏着另一个精彩瞬间。这里的得分会用于相册的智能推荐中;相机也会自动判断在你滑动浏览照片时,是否应该触发实况照片前半段的自动播放,如果你拍摄的是文档,相册中的实况照片开关就会自动关闭。

决定这些体验的实际数据,都隐藏在实况照片视频的全局元数据中。
其中一个细节是,相机的预览是没有防抖的,但拍出来的视频却特别稳定,也就是说实况照片在合成时还要跑一遍增稳算法。但如果你用过剪辑软件的防抖效果的话,你就会发现它对性能的要求很高,并且很慢。具体流程如下:
- 扫描视频片段的每一帧,提取画面中所有可用的特征点
- 使用特征匹配找到相邻帧中对应的特征点
- 构建出画面每个特征点的屏幕运动轨迹并得出整个画面的运动数据
- 利用算法平滑处理轨迹,并生成每个帧所需要的变换矩阵
- 在视频帧上应用变换
Live Photo 这种对实时性要求很高、算力限制严格的场景,Apple 还有秘密武器。在视频中,每一帧都有单独的元数据,这些数据记录了相机的加速度、角速度等位移情况。有了这些数据,再加上固定的镜头内参,可以做到不需要分析每个视频帧,就能得出运动轨迹。
这种算法减少了运算所需要的时间,也能够获得更好的效果。不过防抖裁切带来的另一个问题,就是拍摄的主图和视频的取景范围不一样。在播放结束时如果直接从视频切到主图,就无法实现完美的位置匹配,而是会出现瞬移。
所以这里 Apple 还单独生成了视频相对主图的透视变换矩阵,当视频播放结束时,可以按照这个透视矩阵将视频完美贴合在主图的对应位置上。

iPhone 16 摄影风格的推出,更是将实况照片又提升到了一个新的高度。Apple 在一个 mov 文件中直接封装了 6 个视频!

这里我们使用 ffmpeg 将视频分别输出,可以看到六条视频分别是:
- 主视频
- 低分辨率缩略图(作用未知)
- 天空蒙版
- 人物蒙版
- 皮肤蒙版
- 10-bit 补充色彩信息

并且,在视频的每一帧都有 2KB 的摄影风格元数据,用于辅助摄影风格调整。

可以说 Apple 将计算摄影完全融会贯通在了所有的流程当中,这也算是将科技隐于无形的完美诠释。而且不要忘了,以上技术是 Apple 早在 11 年前的 iPhone 6s 上发布的。不禁感叹 Apple 曾经研发能力的恐怖以及对细节的执着追求。
最好其实不仅是 Live Photo,Apple 在 HEIF 格式上的 HDR、人像模式、摄影风格也隐藏着不少技术细节。下期我们就来聊聊,如果你也想了解的话别忘了点个关注。
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀