我是接口一个嵌入式设备与相机模块,返回一个jpeg压缩帧,每次我触发它。
我想采取三个连续的镜头(约1帧每1/4秒),并进一步压缩为一个单一的文件。这里的假设是存在大量的时间冗余,因此在三个帧之间有更大的压缩空间(与发送三个单独的jpeg图像相比)。
我将在C中的嵌入式设备上实现该解决方案,没有任何库,也没有操作系统。
相机将在一个很少移动的区域拍摄照片(背景中没有访客或屏幕,可能是一棵树枝摇曳的树),所以我认为我关于冗余的假设是非常可靠的。
当文件最终在pc/mac上被查看时,我不介意写一些东西来提取这三个帧(所以它可以是一个非标准的集群)
所以我想实际的问题是:考虑到这三幅图像已经采用了JPEG格式,那么将它们压缩到一起的最佳方法是什么(这可能是将其转换回原始图像,但如果我没有.)
发布于 2010-04-27 23:33:05
我将此作为第二个答案,因为它与我的第一个完全不同,因为我更好地理解了您的问题。
我发现您不太可能直接处理jpeg文件。在压缩文件中,一个小的更改往往会传播到文件的很大一部分,导致这两个文件在许多地方无法进行比较。
我有两个建议。
1:把图片拉上来。看起来太简单了,您可能已经想到它了,但是zip协议是众所周知的,并且是免费可用的,并且会自动利用它的任何相似之处。再一次,只要拿一台相机,拍三张照片,把它们拉链起来,看看效果如何。
2:稍微复杂一点,但您可以将三个jpeg解压缩为bmps,将bmps连接起来(将它们一个接一个地排列起来),然后再压缩到jpeg。jpeg协议应该充分利用这三个图像中的相似之处,从您的角度来看,工作非常少。
发布于 2010-04-27 20:37:17
JPEG图像上的任何解码/修改/重新编码可能会降低图像质量,但由于您的相机只能捕获JPEG,我猜最终的图像质量不太可能是关键的要求。
我想不出一种简单的方法,你可以在JPEG频域做这件事,但你可以解压缩然后从图像1中减去图像2和3以获得增量图像。这些应该压缩得更好,并将被添加到图像#1的接收器。
事实证明,在压缩域中可以执行的一些操作可能会有所帮助。您需要解压缩jpeg的Huffman/RLE阶段,然后直接处理DCT系数。你完全可以这样做图像减法,而且它不应该引入更多的人工制品。
发布于 2010-04-27 20:12:00
虽然我从uni开始就没有研究过信号,但我认为你是在寻找一种无损视频编解码器。
赫夫是一个已经存在,并且有可用的源代码。基本概念是预测每个帧之间的像素变化,并编码(并压缩)预测和实际变化之间的差异。
拉加里思是另一个开源编解码器。
您需要将解码后的JPEG帧输入到每个编解码器中。
https://stackoverflow.com/questions/2724616
复制相似问题