Iphone 里的HDR 照片如何玩?是不是只能在相册里看HDR效果?
Iphone从12开始,加入了local HDR,拍摄的照片可以显示出真HDR效果,而非以前那种模拟的HDR效果,其他手机厂商,如oppo,小米,华为,三星等也陆续推出类似的功能,2023年 google I/O 大会也宣布安卓14将带来了Ultra HDR照片,但这些目前都只能在本地相册看到实际效果,就算想分享也无法通过任何平台分享,而且目前也没有任何网络浏览器支持该类型的图片显示。那是否能向之前系列分享过的文章来实现转换成avif等格式分享呢?答案是可以的。
真HDR图片制作之raw文件在photoshop制作HDR图片
真HDR图片制作系列之非RAW格式如何在photoshop制作HDR图片
首先,这种格式的HDR图片采用的是一种HDR Gain Map的方式,一张图片里包含两层图片,通过分离可以得到两张PNG,一张是颜色正常的SDR图片,一张是黑白的增益图。
利用黑白层作为亮度增益层,在支持的相册里读取的时候采用调取适配的gamma值,从而实现线性的亮度增益,达到亮部提升的效果。粗略的看,黑白图层颇有类似蒙版的效果。既然可以分离,就可以合成,并利用编码成其他格式。如之前提到的exr或者avif等格式,来达到与其他软件交互甚至分享的目的。
第一部是分离图片,借用mac系统举例,这些工具在win或者linux系统也是存在的,需要安装几个依赖库。
Python 3.9 or later
libheif v1.10 or later
NumPy
OpenImageI
Mac系统里采用“终端”来实现
假设图片名称是IMG0000.heic,只需要在图片所在路径里,运行:“heif-convert --with-aux --no-colons IMG_0000.heic IMG_0000.png”

就可以得到两张png文件:

IMG_0000.png 主画面

IMG_0000-urn_com_apple_photo_2020_aux_hdrgainmap.png HDR增益图层
分离出文件以后可以选择合成其他HDR图片文件,常见的还是使用EXR和avif。
EXR属无压缩文件,mac上配合XDR屏幕是可以直接预览HDR效果,也可以进其他图形图像软件作为交互使用。但如果是要在网络上分享,目前最理想的还是使用avif格式。无论哪种方式,还是要从
https://github.com/m13253/heif-hdrgainmap-decode 下载另外三个python工具。(如无法访问,可以在网盘下载:https://pan.baidu.com/s/1SmSQ2fIa1QeWdH435nHvRg?pwd=6666 提取码: 6666 ,包含了所用命令文件与及测试图片)
heif-hdrgainmap-decode-scrgb.py 基于SRGB线性
heif-hdrgainmap-decode-y4m.py 基于BT.2100
heif-hdrgainmap-decode-aces.py 基于aces
用以合成EXR或者y4m格式
一般用户如果不需要进入调色软件使用aces,基本上使用的多的就是前两个命令。
同样是将下载的命令与图片放置于同一个目录下,以第一个命令为例,在终端运行
./heif-hdrgainmap-decode-scrgb.py IMG_0000.heic IMG_0000-urn_com_apple_photo_2020_aux_hdrgainmap.png IMG_0000.exr

这里导入的文件不是分离的两张png,而是原始的heic与其中一张HDR增益的黑白图片,并合成成EXR文件,合成的文件就是带HDR的32bit的exr文件。合成的exr文件可以导入photoshop,在输出32bit的tiff文件。由于photoshop只支持在ACR里导出avif,可以在ACR里开启支持导入tiff文件,再将tiff文件导入后输出avif。
如果采用的是第二个命令,合成的文件格式为y4m文件,Y4M 是 YUV4MPEG 格式,里面是未压缩的 YCbCr 数据,而不是 RGB 数据。可以使用以下命令合成y4m。
./heif-hdrgainmap-decode-y4m.py IMG_0000.heic IMG_0000-urn_com_apple_photo_2020_aux_hdrgainmap.png IMG_0000.y4m

同时,可以直接使用以下命令把 Y4M 编码成 AVIF 图片:
avifenc --cicp 9/16/9 --min 1 --max 12 IMG_0000.y4m IMG_0000.avif

但是,这个程序输出的 Y4M 是 12-bit 色彩,很多 AVIF 看图软件只能解码 8-bit 或 10-bit 的图片。 如果你遇到了这样的情况,可以使用 FFmpeg 来把 12-bit Y4M 转换为 10-bit Y4M:
ffmpeg -i IMG_0000.y4m -pix_fmt yuv444p10le -strict -1 IMG_0000-10bit.y4m

然后再用 avifenc 来编码成 AVIF:
avifenc --cicp 9/16/9 --min 1 --max 12 IMG_0000-10bit.y4m IMG_0000.avif

就可以得到一张10bit的avif图片。
推荐可以使用ADOBE的一款HDR 图片查看器来浏览检测图片:Gain Map Demo app
下载传送门:
https://helpx.adobe.com/camera-raw/using/gain-map.html
有HDR环境的(HDR显示设备+支持的HDR Avif的网络浏览器 如:桌面版chrome)可以在http://home.hdr-nga.top:8881/articles/2023/05/18/1684412044914.html
看到转换后的HDR avif效果。
如果没有可以在这里看视频演示效果:
微博:
https://video.weibo.com/show?fid=1034:4902844818718811video.weibo.com/show?fid=1034:4902844818718811
视频号:HDR-NGA
这就是目前阶段,把HDR Gain Map的图片转成通用格式的一个简单流程,过程稍微有些折腾,希望后续有更成熟,更直观的图形化软件实现这些转换编码过程。AVIF本身是一个扩展性很强的格式,还可以支持做HDR动图,又或者带透明通道的HDR图片,如:
https://laichi.cc/article/avif-viewing-test#f9fe746a849141c6b7a6da4bc286de3elaichi.cc/article/avif-viewing-test#f9fe746a849141c6b7a6da4bc286de3e
有兴趣一起交流探讨相关HDR图片视频制作,HDR影音终端经验资源交流,沉浸声终端使用交流等问题可以添加我进群,一起学习探讨!
