尼康z7的动态范围-极限测量

尼康z7的动态范围-极限测量

前言

上一篇文章,我介绍了自己研发的测量动态范围(dr)的超级扫描脚本,本文用这个工具对尼康的z7进行了2组极限测量,并将结果与之前的测试结果进行对比,来展现尼康z7的真正的DR,并以此证明脚本算法的稳定性,以及高精度靶图的高精度。

超硬核动态范围测量方案:自动扫描生成亿级ROI

方法很简单,我使用相机拍摄灰阶值以1递减的显示器纯灰色背景,拍摄了2组1500多张raw共3000张,用于测量,来探寻dr测量的工程极限。这2组原图就暂时简称“极限测量素材”。

先说结论:

  • 超级脚本的算法极其稳定,针对同一组“极限测量素材”,使用完全不同的采样策略和区域,可以获得几乎完全相同的dr值。
  • 通过与“极限测量素材”进行结果对比,高精度靶图的结果非常接近,因而已经触及工程极限。

下面一一展开。


测试方法详情

首先用py写一个脚本,显示一个全屏纯色界面,左上角显示当前灰阶值,用上下箭头进行加减,左右箭头快速回到边界值。

拍摄使用85mm镜头从f4开始,这是我手里有的暗角最小的镜头。fx画幅下左右仅有1/3ev的失光。将镜头紧贴显示器,对焦距离无穷远。

上述组合可以获得一个相当好的单一亮度均匀灰阶目标。

使用照度计进行测量,灰阶值从255变化到180,照度计测得的照度数值减半,即-1ev。意味着可以用显示器,在1ev空间内生成75个亮度递减级别,平均值0.013ev。先调整参数(iso64,F4.0,1/2)到所有通道全部恰好过曝,从255-180的灰阶值变化过程中,灰阶值每-1,就拍摄1张。为了保证信号连续,会一直拍摄到170的灰阶值,一档快门拍摄85张。然后逐档提高快门速度,每档快门都从255再次拍摄85张到170.直到1/8000,收光圈继续拍摄。总共拍摄了17组*85张/组 = 1445张;在快门和光圈都到达极限以后,继续拍摄169-0灰阶值,每个灰阶值拍摄1张。加上黑场总共获得约1616张。

1ev获得75级亮度变化是默认gamma=2.2的情况
还可以调整系统gamma,
使得155灰阶值亮度正好减半,
获得1ev100级亮度变化的效果。

拍摄就是按一下箭头键再按一下快门。所以总共按了6000多次。

这是机械快门拍摄fx画幅的文件详情:raw+jpg共3272个文件。电子快门拍摄的删掉了,和它类似

最后运行脚本,将从这些raw中测到ev-snr数据进行汇总输出即可。

由于文件数量非常大,每个文件都仅采样较少数量的roi,每图约40k roi,最终的roi数量级别控制在60M-70M的级别,4500-5000秒之内完成采样,使得最终结果可以与使用高精度靶图扫描60M roi的结果进行对比。

所以设计了2种采样策略。一种是以32px stride,32*32的roi在全图滑动,对全图完成全面但不重叠采样;另一种是在中心262*262区域(比BL测量区域稍大),以1px stride进行穷举采样,每通道恰好获得1万个roi。使用同一个黑场raw保证读出噪声一致。第一组素材是电子快门以dx画幅拍摄,所以使用16px stride来维持roi总数。

snr图线中的数据点,只做无效过滤和从左到右的非单调递增过滤,不会修改原值或进行拟合。(所以有些缺口可能数据是被过滤形成)

一个需要重点说明的点:我的每通道dr,只由snr等高线上下两侧最近的2点线性插值得到,然后四通道平均。也就是说这个值只由8个采样点确定。不同的测量,获得的roi完全不同。两次测量结果相同,意味着两组完全不同的采样,真的能算出同样的8个数据点,最后得到一个相同的数字:算法靠大数据提取出了物理真值。

测量结果

由于在性能优化过程中发现算法的一个小问题并已修正,前三组对比失效,直接看第四组补充对比即可。

第一组对比

先看电子快门dx画幅拍摄的素材的测试结果。

这是16px stride全图取样的测量结果,包含日志:

这是262*262中心区域穷举扫描的测量结果

由于出了小bug,没有日志截图

以上两个图对比,各项DR差异如下:

20dB:0.02ev

PDR:0.05ev

6dB:相同

0dB:相同

还可以发现snr点线形状差异很大,中心取样这组波动明显,造成了较高snr阈值下的相对较高的差异。

在这样的情况下,6dB和0dB这两个低信号区的重要阈值下,dr完全相同,证明超级脚本的统计计算方法,稳定性极高,可以排除随机因素影响。

中心采样出现波动,证明全图采样效果更佳。


同时还可以顺便看一下ptp非常喜欢提及的“非线性区”。

放大图表可以看到,最低iso下,非线性区仅有0.01ev,完全可忽略。

低信号区图表放大如下,有效数据点十分密集:

本组对比结论:

超级脚本在低snr阈值的dr测量上展现了惊人的稳定性,素材拍摄质量足够高的情况下,不同的采样策略可以获得完全一致的dr测量结果。


第二组对比

由于上一组对比,电子快门的暗区信号与机械快门的略有差异,没有已有数据进行对比,并且pdr附近的图线差异过大,我又拍摄了一组机械快门fx画幅的素材,重新扫了一遍。

结果如下。

这是32px stride的全图全面扫描结果,图线较平滑:

这是中心262*262区域,1px stride穷举扫描的结果,图线小幅度波动明显:

可以看到中心区域穷举扫描还是波动较大。

各项dr差异如下:

20dB:0.04ev

PDR:相同

6dB:0.01

0dB:0.01

如果不看20dB,这次PDR完全相同了,6dB和0dB差异0.01,比上一组稍稍逊色,但是仍然可以认为低信号区dr完全一致。

这是图线的放大,可以看到有效数据点十分密集,没有任何问题。


结论1

全图稀疏采样 vs 中心密集采样,2组不同素材都在低信号区获得了0.00-0.01ev的差异,说明超级脚本的大规模采样,加上P90等效法统计计算,在roi量级接近时,结果对采样策略不敏感。在不同空间覆盖度与采样密度下,关键阈值动态范围保持高度一致,算法稳健性达到计量基准水平。



第三组对比

接下来使用机械快门拍摄的“极限测量素材”的测量结果,与之前的高精度靶图测量结果进行对比。

高精度靶图测量结果我这里选择了之前文章里用过的“z7_hr_grid_1”的结果,以2px stride扫描:

二者差异汇总如下:

20dB:相同

PDR:0.02ev

6dB:0.01

0dB:相同

我认为这两组数据几乎完全一样。

可以看到20dB这个点,高精度靶图也采样出了B通道的曲线异常上扬,有一大段红色没有被蓝色覆盖,并获得完全一样的8.97。


“z7_hr_grid_1”和“z7_hr_grid_2”两组高精度靶图的差异也极小,:

20dB:0.01

PDR:相同

6dB:相同

0dB:0.02

引用文章里的这组对比,20dB是8.92,比本文的结果-0.05,是因为使用了4px stride,roi总数只有2px下的1/4,有一些关键区域有时仍然可能扫不到。


结论2

由于第一和第二组对比证明了结论1,即采样法和统计算法的稳定性,本组对比证明了高精度靶图可以获得极其接近“极限测量素材”的测量结果,精度非常高,典型误差为0.00-0.02ev。

另外,高精度靶图获得的snr点线十分平滑,效果比仅从中心取样的极限测量更佳。


第四组补充对比

根据之前的经验,对于同一组格子ev间隔较大,且总量较小的图,使用1px stride的穷举扫描,获得的结果通常明显好于32px stride的,图线更平滑,dr值可能稍高。但是由于极限测量素材的穷举扫描数据量太大无法进行,这个现象是否会继续存在,目前无法验证。

因为在优化算法性能的时候,顺手移除了一个数据预过滤,发现预过滤对结果有影响,移除以后可以获得更稳定的结果。

重新进行测量,对“极限测量素材”采用32px stride(约0.75亿roi),8px stride(约11亿roi),以及高精度靶图z7_hr_grid_1穷举扫描(6亿roi)这三组,现在可以获得完全一样的结果:

注意高精度靶图的-13.45稍微左移,“极限测量素材”箭头处有细微变化。

另外,

“z7_hr_grid_1”和“z7_hr_grid_2”这两组进行穷举扫描,约6亿roi,结果对比如下:

可以看到图线右侧有明显区别,左侧形态相似但是完全不一样。4个DR点会轻微移动但是数值基本相同,仅snr=2处差异0.01。dr测量结果可以视为完全相同。

这2组图是连续拍摄的,没有经过补拍。

以上3+1组采样策略和精度各不相同的测量,都获得了完全相同的结果。

我觉得单独看这个3+1对比,就已经能证明算法稳定性达到了极致,并且高精度靶图与“极限测量素材”的测量效果,在20dB及以下的snr阈值下,完全等价。虽然“极限测量素材”的snr点线更平滑。再次强调,这里没有拟合和算法平滑,全都是真实数据计算得来。


总结

通过使用超级脚本和高精度靶图,dr的测量精度已经达到0.01ev精度下的工程极限。

另外,根据引用文章提供的实测,使用NefUtil配合高精度靶图,也能达到同等级别的精度。读者也可自行验证。

编辑于 2026-05-19 · 著作权归作者所有