
Photons to Photos同款能量谱(Energy Spectrum)
前言
ptp网站有一项很权威的功能,就是它可以抓出raw里的强制降噪,并且在pdr图表里用下三角标标出来。
例如:

上图苹果14pm所有iso档位都有降噪(别的手机应该也是如此),尼康zf从iso16000开始有降噪,a7m5则是只有高iso扩展档位有降噪。
PTP判定标准
虽然看起来很权威,但是他的判断方法很有意思。根据a7m5发布时我给他发的邮件询问获得的回答:

就是说没有客观方法来进行判断,他用的是judgement call(基于个人经验和直觉做出的决定,通常没有明确的对错标准),通过观察FFT图进行对比和判断。a7m5数据发布以后,不知受了什么影响,又连夜把降噪标记移除。
那事情就有趣了。我也能做裁判。人人都能做裁判。
Energy Spectrum Analyzer
隆重介绍本人最新开发的Energy Spectrum Analyzer[手动狗头]:

这是个很有趣的小脚本,它在实现了能量谱算法并输出与ptp外观基本一致的图表的基础上,增加了一些UX优化:
- 图形界面
- 打开一个文件之后,可以用左右键切换同文件夹下的其余文件,便于快速查看各档ISO以及切换对比
- 使用上下键改变y轴图线放大比例
- 可选多种中央切片尺寸
从上图可以看到,在放大到可用的最大级别±0.0625以后,a7m5的图线呈现出一个非常明显的V字凹陷,这就是有强制降噪的证据。
同样的设置下,尼康zf的蓝线就是完全平直的,橙色线极其轻微的凹陷可能是pdaf的低通效应导致。这是没有强制降噪的表现,很符合像我这种原教旨主义键盘摄影爱好者的喜好。

ptp网站的图表,用的是256*256的切片,±0.25的纵轴,a7m5的凹陷还是可以辨别出来,zf这边就看不太清。

说明得益于可以选择大面积切片,我的脚本的极限分辨率明显更高。
网站的图表也可以自由放大,但是很难将多图缩放到同样尺度进行对比。
算法和验证
我的脚本是使用ai辅助开发的,用的就是最基本的算法,FFT计算功率谱,移除DC点计算平均功率,再log2(P/P_avg)。
ptp的normalization是bclaff自己设计的,可能是为了防止别人复刻,说得也十分遮掩:
The y-axis is Normalized Energy expressed as log2. This normalization may differ from similar charts you may have seen elsewhere.
The y-axis values of -1, 0, and 1 represent minimum possible, average, and maximum possible energy respectfully.
在与ptp网站案例进行匹配的过程中,很神奇的事情发生了。我将得到的数据除以8:
norm_h[0:] = np.log2((data_h[0:]) / (avg_h)) / 8
norm_v[0:] = np.log2((data_v[0:]) / (avg_v)) / 8使用ptp网站上的如下测试图片:


就能与网站的图线完全一致。

另一张测试图:



与ptp的图线叠图发现,幅度相同,但是橙色线位置不同。不知道他是怎么算的,我已经尽力了。但是这不重要。幅度一样就可以了。(如果有大佬读者知道ptp的算法,可以评论区或私信教我一下,非常感谢)
然后如果用于静态raw黑场分析,选择256切片大小,得出来的图线几乎是和ptp网站完全一样的。
例如这是z7的对比,256切片,纵轴±0.25,v线中央尖峰接近0.1:

这也是标题叫做“Photons to Photos同款能量谱”的原因。其实我的还是个增强版。
强制降噪的客观判定
由于2048切片和±0.0625纵轴极值的组合(max模式,还可使用3072,4096),可以获得极高的分辨能力,以zf为例,可以明确区分出水平方向的完全平直和垂直方向的轻微凹陷,我们现在有了可以进行客观判定的条件:
在max模式下,
- 两条线平直:无降噪。
- 一条平直另一条轻微凹陷:无降噪,图线形状受pdaf点影响。
- 两条线明显凹陷:有降噪。
“明显凹陷”的判断标准,理论上待明确,但是实际上加了降噪的raw,凹陷非常明显,索尼这个已经算是力度很轻微的了。
还可以用别的方法判断,但是目前没有公开的系统性方案。
至少下面的方法对a7m5的判断很有效。
这是a7m5的40个靶图拍摄raw文件的超精细snr扫描结果:

注意看黑线,它是用ptp PTC页面图表顶部,实测的三参数(σ_read, k_adc, P_n)拟合得到的ptc-snr理论线。正常情况下,所有实测点都不应该超过黑线很多,这里可以看到很明显的分离。如何量化“明显”呢:看纵轴snr的dB数。每个大格,也就是每6dB,的提升,需要降低2档ISO才能达成。注意看20dB处的蓝线,比黑线高了整整半格,也就是1档ISO。这绝对是非常明显的作弊行为。
下面是更多的我手里有的机身的实拍测量情况,只挑选几个典型iso。
d700,iso 200,800,6400, 51200。ptp没有三角标,能量谱线基本平直。d700的raw有BL预校正,仅用于参考。其实我还拍了d80,但是形态比较奇特。

Zf,下列图中仅iso51200(从16000开始)有降噪,以NR标记

平心而论,前三张橙色线形态基本一致,蓝色线有一些变化的但是也不算明显。最后一张也比较符合“双线凹陷”的特征。
a7m5,ptp标记原生ISO全程无降噪。

a7m5的“iso100无降噪”和zf iso 51200有降噪的对比:

我觉得可以就用zf这个形态作为客观判定的参考点:
2048切片下,双线中央凹陷,然后中心线整体振幅明显高于0.02(上图绿区),就可判定为有降噪。
个人意见仅供参考。
分享
按照目前的情况,新机发布以后,只能等热心网友给bclaff发布数据才能看到结果,实在是有点无聊。我也不觉得我的这项工作很有原创性,独创性倒是有一点。网盘分享给大家:
通过网盘分享的文件:20260414黑场分析和satDR计算
链接: https://pan.baidu.com/s/1XVy7ExeuKpJ9hFTBhfwDOQ?pwd=1111 提取码: 1111
这个脚本可以看成是“黑场分析”的一部分,单独下载es_builder_gui.py文件即可。也可以把别的东西下载下来玩玩。
简易的黑场分析和动态范围计算脚本结论
使用es_builder_gui,选择2048切片大小,再将y轴放大到最大,任何强制降噪效果都可以明确辨别。
但是有一个小缺点,就是需要真实拍摄的黑场raw,不能使用dpreview标版进行云评测,略有遗憾。
其实个人觉得分通道显示更易判断,例如只有某个通道有能量减小,就一定是pdaf。但是之前找朋友问了另一个业内人士,他也说混合通道更好,就暂且相信。
扩展
本人对能量谱相关的理论知识了解比较有限,本文提供的方案,以实用为主。如果有兴趣了解更多,可以在评论区找到姜老师 @姜尧耕(渔樵耕牍) 的相关文章。