您的问题是双重的:
- 图像噪声/由于黑暗导致的低 SNR
- 由于 JPEG 压缩导致的平均问题
第一点是我们本身无法真正改变的东西。你的平均方法肯定是一个很好的方法。
现在的第二个问题是由于 JPEG 压缩在您的相机中的工作方式:
- Gamma 校正首先应用于 RGB 图像。这是一种非线性操作,将高值“推到一起”并拉伸低值。这样一来,您就不会因为黑暗的图像而到处“漆黑”。可悲的是,这也使我们的量化噪声问题变得更加困难。
- 生成的 R'G'B' 像素数据将转换为 Y'C b C r颜色空间,这意味着您将三维红、绿、蓝信号转换为三维亮度、蓝差、红差信号。
- C b/r通道经过低通滤波和下采样
- 原始分辨率 Y' 和降低分辨率的 C b和 C r图像分别被分割成 8x8 像素块
- 这些块是单独的 DCT'ed
- 根据挑选质量/压缩折衷选择量化矩阵。这导致不同的 DCT 系数被省略,以更少或更多位保存。
如另一个答案所示,对重建的 RGB 图像进行平均是一个坏主意,因为随机噪声必须导致您基本上看到每个块中量化矩阵的 IDCT 的影响——嗯。
因此,首先,请注意,对于定义恒定强度偏移(“DC 分量”,EE 会说)的 DCT 系数,可以确定选择了最高量化级别。
相反,至少对于 8x8 块中的大多数高频分量,量化误差能量更高。
因此,从本质上讲,DCT 的常数 bin 是最可靠的——而且,它恰好是块中 64 个像素的平均值,因此已经减少了噪声(如果噪声的频率分布是白色的,那么所有组件都是这种情况,但它在相机中既不是可靠的白色,也不是伽马校正线性......)。
所以,你可能想做的第一步是
- 在 Y'C b C r上工作,而不是 RGB 重建
- 只看Y分量
- 忽略每个 8x8 块中不是直流分量的所有内容
你会得到一张的图像,即原始照片的宽度和高度。它可能仍然会很嘈杂——散粒噪声可能与低光设置相关,这会影响每帧的平均值。但是,随着时间的推移平均会减少这种影响。18
您也可以通过将非零频率系数相加,用因子 < 1 对它们进行加权,然后从直流分量中减去它们来降低噪声。这背后的想法是,当您在 8x8 帧中设置单个像素时,您会在所有系数中获得能量(如果您考虑一下,狄拉克的余弦变换在所有频率上都有能量)。既然你不获得所有系数,其中大多数被丢弃或大量量化,您将永远无法从平均系数中完全消除散粒噪声的影响 - 但至少平均而言,您可以减少影响。该因子的选择取决于相机传感器、伽马因子、量化矩阵、DCT 的实现方式(截断固定点?),因此未知数太多,但您可能只是凭经验尝试几个值并最小化方差多帧的结果。