Embedded 压缩三个包含时间冗余的单独jpeg图片?

Embedded 压缩三个包含时间冗余的单独jpeg图片?,embedded,compression,jpeg,redundancy,Embedded,Compression,Jpeg,Redundancy,我正在将一个嵌入式设备与一个摄像头模块连接,该模块在每次触发时返回一个jpeg压缩帧 我想连续拍摄三张照片(大约每1/4秒1帧),并进一步将图像压缩到一个文件中。这里的假设是存在大量的时间冗余,因此在三个帧之间有更多的压缩空间(与发送三个单独的jpeg图像相比) 我将在没有任何库和操作系统的C嵌入式设备上实现该解决方案 相机将在一个很少移动的区域拍照(背景中没有访客或屏幕,可能是一棵树枝摇曳的树),因此我认为我关于冗余的假设是非常可靠的 当文件最终在pc/mac上查看时,我不介意写一些东西来提取

我正在将一个嵌入式设备与一个摄像头模块连接,该模块在每次触发时返回一个jpeg压缩帧

我想连续拍摄三张照片(大约每1/4秒1帧),并进一步将图像压缩到一个文件中。这里的假设是存在大量的时间冗余,因此在三个帧之间有更多的压缩空间(与发送三个单独的jpeg图像相比)

我将在没有任何库和操作系统的C嵌入式设备上实现该解决方案

相机将在一个很少移动的区域拍照(背景中没有访客或屏幕,可能是一棵树枝摇曳的树),因此我认为我关于冗余的假设是非常可靠的

当文件最终在pc/mac上查看时,我不介意写一些东西来提取这三个帧(因此它可能是非标准的cluge)


所以我想实际的问题是:考虑到这三幅图像已经是JPEG格式(可能需要转换回原始图像,但如果我没有太多…)的事实,压缩这三幅图像的最佳方式是什么?

虽然我从uni开始就没有研究过信号,但我认为你在寻找无损视频编解码器

是一个已经存在并且有可用源代码的。基本概念是预测每个帧之间的像素变化,并对预测变化和实际变化之间的差异进行编码(和压缩)

是另一个开源编解码器


您需要将解码后的JPEG帧输入到每个编解码器中。

如果我是您,我现在会使用您的系统手动拍摄三张照片,这样您可以在进一步操作之前检查您的假设

我的猜测是,即使你不打算做任何动作,你也需要稍微翻译一下。设备的振动、风甚至热膨胀可能足以让你失去一两个像素,这会破坏像素到像素的直线压缩

其他因素可能是云穿过太阳引起的光线变化,或地面上飘散的热放大,甚至jpeg压缩伪影

我不是说这行不通,只是说我会先手动运行一个


存储空间非常便宜,你可以在相机上增加一张更大的sim卡(或其他什么),从而获得更高的性价比。

对JPEG图像进行任何解码/修改/重新编码都可能会降低图像质量,但由于你的相机只能捕获JPEG图像,我猜最终的图像质量不太可能是一个关键要求

我想不出一个简单的方法,你可以在JPEG频域中这样做,但你可以解压缩。这些应该压缩得更好,并由接收器添加回图像#1


事实证明,这可能会有所帮助。您需要解压缩jpeg的Huffman/RLE阶段,然后直接处理DCT系数。你完全可以用这种方法做图像减法,它不应该引入更多的人工制品。

我将此作为第二个答案添加,因为它与我的第一个答案非常不同,现在我更好地理解了你的问题

我发现您不太可能直接使用jpeg文件。在压缩文件中,一个小的更改往往会传播到文件的很大一部分,导致两个文件在许多地方无法进行比较

我有两个建议

1:把图片拉上拉链。看起来太简单了,您可能已经想到了,但是zip协议是众所周知的,并且可以免费使用,并且会自动利用它可以利用的任何相似之处。再拿一个相机拍三张照片;拉上拉链,看看进展如何


2:稍微复杂一点,但您可以将三个jpeg解压缩为BMP,连接BMP(一个接一个地排列),然后重新压缩为jpeg。jpeg协议应该充分利用三幅图像的相似性,从您的角度来看,这项工作非常简单。

hmm,huffyuv和lagarith都是无损的(太大了),需要我对jpeg文件进行解码。我假设这是一个固定的安全摄像头,而且图像必须被压缩以用于GSM上行链路或某些昂贵的传输机制。。。也许我错了?我同意无论发生什么,照片都会有一些变化。因此,jpeg文件的大小将略有不同,这意味着对文件进行直线增量处理是不可行的(除非我实现了一些可以采用可变大小数组的增量计算函数)。我希望有人能提出一个建议,利用图片中的冗余,而不是提供一个需要将图像恢复为原始bmp,然后用其他东西重新压缩的解决方案。是的,链接很昂贵(大部分是电力)。但是,与无线电使用的发射功率相比,驱动嵌入式系统的电力成本相对较低。可能最好将三幅图像中最大的一幅作为关键帧,将另外两幅图像进行增量处理……也许将相关图像存储为增量的空间优势将被图像中噪声伪影的可见性增加所抵消重新组合的图像。这是因为jpeg压缩算法通常是通过感知度量(而不是简单的数字偏差)来判断噪声的,因此引入到三角洲的噪声在重新组合时将与感知模型相抵触。当添加到基础图像中的颜色时,在灰色三角形中几乎看不见的图案可能会跳出。为了应对可能的溢出,也有必要将delta对比度减半——增加伪影的威力。我开始认为我应该尝试一种简单的压缩机制,例如在所有三个图像上使用RLE。这正是我在所有三个方面的想法(通过压缩文件传播小的更改,以及两种解决方案)。我要试试这个例子