为什么同一场景的某些 JPEG 文件比其他文件大得多?

信息处理 JPEG
2021-12-30 08:58:57

我正在使用 Foscam FI8910W 网络摄像机在恒定光照条件下查看静态场景。当我拉回一个帧抓取时,它的大小约为 35 KB。我可以一遍又一遍地这样做,它总是在 35 KB 左右,但由于电子图像捕捉固有的各种噪声而有所波动。这种随机波动最多只有 1 KB 的量级。

大约每 2500 帧,一帧的图像大小突然达到 70 KB 的量级。如果您在相机预热时考虑热噪声,则不会逐渐向上蠕动。1 帧将是 70 KB(ish),然后它们返回到 35 KB 大小的帧。

这种情况以前发生过,另一次跑步是在看不同的场景。当时常见的文件大小为 39 KB,在 10,000 帧中,有 4 帧约为 77 KB。图像大小直方图如下所示:-

JPEG 大小直方图

在你问之前,我已经设法保存了其中一帧,它看起来与所有其他帧一模一样,除了预期的噪音波动。它们的独特颜色数量大致相同,约为 23,000 种。所以它不是一只飞蛾随机降落在镜头上一帧然后飞走。为了完整起见,我做了另一组图像,这是一个典型的图像示例(反射是红外照明器):-

37K 典型图像

这是异常图像:-

73K 异常图像

你可以看到没有区别。原谅河马。我对 JPEG 算法相当熟悉,除了 Foscam 实现的编码错误之外,我看不出这是如何发生的。但是,在某些 JPEG 变换函数(如离散余弦变换或量化)中是否存在固有的混乱?从统计上看,人们会期望文件大小呈正态分布,这就是我看到的大约 39 KB。然后有几个 77 KB 的异常值。所以它看起来不是随机的。

这是在 CS 中而不是在硬件中的原因是我在问这可能是与 JPEG 编码算法有关的编程代码现象吗?似乎不太可能,但异常是随机且不常见的,并且没有人与设备交互。JPEG编码稳定吗?

您可能不熟悉这种现象的原因是,由于图像看起来相同,没有人真正关注文件大小。文件大小对我来说至关重要,所以我注意到了。大约每 2500 帧怎么会发生这种情况?

补充:-

发布这些图片是行不通的,因为 imgur 软件会重新采样上传的文件。因此,当我发布 37K 和 73K 文件时,imgur 已将两者重新采样为 35K。这似乎是一个 Stack Exchange 问题,对于处理图像处理、数据压缩和分析的站点而言,这似乎具有讽刺意味。

这是我对图像的处理。这是正常图像和异常图像之间的标准化差异。图像如您所料,在高频区域有 JPEG 噪声。这是一个 RGB 图像,即使它看起来是单色的。颜色立方体中有 8000 种独特的颜色(代表噪声)。

37K 和 73K 图像之间的标准化差异

补充2:-

根据要求,可以从样本帧中下载 4 个正常帧和 2 个异常帧这是不同的场景,但异常行为仍然发生,所以这证明它是一致的。

2个回答

我的猜测是自动对焦或光圈以某种方式短暂改变,结果图像包含更多高频元素。

例如,如果焦点从一个光滑的对象移动到一个有纹理的对象(如光滑的河马到布料褶皱),而后者的细节纹理表面,JPEG 将倾向于采用相当大的尺寸。

正如其他人已经说过的那样:检查图像 EXIF 数据以了解光圈和焦距等核心参数的变化似乎是个好主意。对于图像大小的如此显着差异,相机认为某些基本参数很可能是不同的。

“CMOS”传感器通常会遇到称为“紫边”的现象或可能的“传感器光晕”问题,我将在稍后详细解释。

我必须先说明这一点,但是通过告诉您实际上存在一些争论,即 PF 是否是传感器 Bloom 的原因或反之亦然,但底线是:两者都可能是镜头或相机传感器本身异常的结果 - 或两者兼而有之。这些影响可能是累积效应的结果,如果您将在传感器中导致过载,则会导致捕获的光出现尖峰。使文件更大。

我相信过载发生在洋红色(或紫色)范围内,这种现象非常罕见。

将传感器想象成一个巨大的冰块托盘.....以网格状布局。如果一个隔间因异常而溢出水(光)......它可能会溢出到相邻的隔间等,从而导致该批次的一批体积稍大的冰块。(可能解释更大的文件大小......和颜色数据)

现在这是一个最好的猜测,我找到了一个链接,您可能会发现对上述更多信息有帮助 - 以及一些额外的技术信息,如果我的评估不正确,它们可能有助于为您隔离问题。

查看此链接 http://toothwalker.org/optics/chromatic.html

记住 RGB 是减色空间。通过光(相对于颜料)的颜色是通过去除某些波长的光来控制的。一些颜色的波长比其他的长。

页面上有一个很棒的光学课程,也可以帮助解释异常。