基础概念
**标准动态范围 (SDR)**:这是最常见的图片动态范围格式,大部分图片都使用SDR。
**高动态范围 (HDR)**:这种格式能够捕捉和显示更多的亮度和颜色细节。苹果的HDR照片由于其亮丽的效果而广受欢迎。
**参考白 (Reference White)**:这是SDR的最大亮度在HDR中的对应亮度。例如,在HDR中使用的“白色”作为字幕会显得过于刺眼,此时参考白就是在HDR中看起来类似于SDR的亮度。
**额外动态范围 (Headroom)**:这是HDR的最大亮度相对于参考白的比率。使用对数曲线计算,可被看作是SDR之上的“动态范围”,一档曝光即为1 stop。
**映射 (Tone Mapping, TMAP)**:这是确保显示效果符合创作者意图的过程。由于不同显示设备的动态范围和环境不同,需要在显示时进行计算,以确保用户的观感一致。
ISO HDR:这是苹果参与开发的一种HDR照片标准,支持纯HDR照片或SDR+Gainmap。
**映射到SDR (Tone Mapping to SDR)**:由于目前绝大多数软件仅支持SDR,因此HDR照片需要重新映射回SDR才能在大部分设备上正确显示(SDR+GainMap具有兼容性)。
HDR技术演进
Apple GainMap:这是SDR图片加上一张存储了亮度信息的GainMap,从iPhone 12开始支持。
ISO HDR:苹果提交了上述技术到ISO组织,编号为ISO/TS 22028-5。2023年10月左右,Adobe产品逐步实现对该标准的支持。
Adaptive HDR:苹果基于ISO HDR提出的新技术,旨在解决以下问题:
- 向后兼容SDR显示:SDR部分可在不支持HDR的设备上正常显示。
- 双渲染:可同时存储SDR和HDR信息(并非存储HDR的照片)。
- 映射优化:便于SDR和HDR互转,并在不同设备上控制亮度。
GainMap计算公式:G=log2(HDR+khdr/SDR+ksdr),其中k值的技术细节由于草案尚未公开暂无法得知。此公式是动态范围的变种。
Adaptive HDR由SDR+GainMap组成,HDR照片根据SDR+GainMap计算得出。苹果也将该技术提交到HEIC标准(草案)。
苹果设备拍照
旧设备和系统使用Apple GainMap,即SDR图片加一张灰度的GainMap。iOS 18和iPhone 15系列的Adaptive HDR的GainMap层支持RGB通道,使得HDR色彩空间支持了P3-PQ。
iOS上的HDR标准映射策略
ISO GainMap:
- 旧版本:使用固定的ITU曲线,由系统决定(硬件最高支持亮度或用户指定)。
- 新版本:采用Apple Reference White Tone Mapping Operator,据称效果更好,大幅降低高光裁切并提升色彩表现。
Adaptive HDR:
根据GainMap对每个像素单独处理,只需用公式乘以显示器的动态范围即可得出对应的亮度信息。然而,苹果似乎并非直接使用GainMap,而是将其作为某个公式的参数(技术细节尚未公开)。
开发者相关
iOS 18允许开发者根据需求读取Adaptive HDR照片,系统会自动转换为所需格式。
开发者可以选择:
- 只处理SDR:当作普通照片处理,无需额外操作。
- 只处理HDR:最简单的实现方式,但系统只能预估GainMap,SDR显示可能出现问题。
- 处理SDR + GainMap:系统会自动计算HDR结果,但某些操作可能对GainMap产生意外效果。
- 处理SDR + HDR:分别处理两张照片,系统自动计算GainMap值,操作较为复杂。
关于显示
iOS 18提供了新的映射API,UIImageView和Swift UI可以自动处理,开发者只需指定图片在系统界面上的目标亮度即可。在显示之前,需根据不同的读取策略进行相应的映射处理。
关于保存
- 只编辑HDR:保存为ISO HDR(原生HDR格式,如avif、jpeg xl)。
- 编辑SDR和HDR:保存为Adaptive HDR,系统会自动计算GainMap并保存。
- 编辑SDR和GainMap:保存为Adaptive HDR,HDR部分由系统自行处理。
个人看法
目前林檎是所有厂商中对 HDR 支持最好的一个,现在的问题在于三方APP什么时候适配。去年开始的HDR照片到了今年也只有寥寥几家厂商实现(就连林檎都不算好),考虑到三方用的都是自己的库和实现,这次还兼容了SDR,我很怀疑厂商会有动力去适配这个功能,反而如果林檎宣布iOS18起只支持ISO HDR照片,说不定三方的支持就快多了,不过这就牺牲了很大一部分的兼容性,没有实际操作可能。
如果想把自己用其他设备拍摄的raw照片导入到苹果设备里欣赏HDR效果,可以考虑输出格式为 jpeg + hdr,也就是 ISO HDR(GainMap)那套方案,这是目前对 SDR 兼容最好的方案,缺点是空间占用大。另外输出一份avif,导入到iPhone设备里(记得单独分个相册,因为 iOS17 的支持不太好,如果 iOS18 修复了还能方便删掉重新导入。)
关于iOS17的支持,17.5.1仍然不支持 Adobe 的 hdr jpg照片(没有HDR效果),Adobe 说是林檎不认他的彩色 GainMap。对于avif这种纯hdr的格式也有问题,例如:
- 从iPad导入会出现色彩断层、偏色问题(只能用OLED的iPhone导入)
由于单HDR照片不包含到SDR的下变换,林檎在【导入时】就在内部转换为了heic照片用作预览,这个处理的算法刚好存在问题。只有点击【编辑】按钮后才会实际加载avif照片(这时候显示是正常的)。
- 照片缓存机制问题,iPhone重置后,从iCloud同步回的avif照片hdr信息就全丢了,只剩下sdr的部分
Workaround:
将显示异常的照片旋转90度,保存。批量复制粘贴,然后再旋转270度,保存。由于对照片进行了更改,iOS会重新渲染一份正确的HDR。(注意不能直接转360度,林檎会认为没有更改,不会触发重渲染)
Update:Beta3 起已失效,林檎会识别为无更改
截至 iOS 18 Beta 4 还不支持将 jpg+hdr 照片转换为 heic(会丢失hdr信息),所以在目前的时间节点想要享受HDR,只能是放弃兼容性,或者牺牲存储空间。
Update: Beta4 可以使用快捷指令正确转换 avif 照片到 Heic,同时保留 hdr
(我觉得林檎大概率不会修旧照片的bug了,这个问题太冷门,全网都没几个反馈的,估计吃螃蟹的人也太少了,只有关心摄影和技术的才会发现。从iOS17 beta反馈了十几次了都是石沉大海)
结论
目前只建议将 avif 格式的照片存储在手机中,如果没有 mac,最好单独存放在一个相册里。等到正式版发布后再根据情况决定是否重新导入。从 iOS 17 beta 1 开始的问题反馈多次仍未解决,希望在 iOS 18 中能有更好的体验。