任何人都可以用简单明了的方式解释MPEG4如何工作来压缩数据。我最感兴趣的是视频。我知道有不同的标准或部分。我只是寻找主流的整体压缩方法,如果有MPEG4的压缩方法。MPEG4压缩如何工作?
回答
MPEG-4是一个巨大的标准,并采用多种技术来实现高压缩率,这是可以胜任的。
一般来说,视频压缩涉及扔掉尽可能多的信息可能同时具有对最终用户的观看体验的影响最小。例如,使用二次采样的YUV而不是RGB可以将视频尺寸直接剪切一半。这是可能的,因为人眼对颜色不敏感而不是亮度。在YUV中,Y值是亮度,U和V值表示颜色。因此,您可以丢弃一些减少文件大小的颜色信息,而观众不会注意到任何区别。
之后,大多数压缩技术特别利用了2个冗余。第一个是时间冗余,第二个是空间冗余。
时间冗余注意到视频序列中的连续帧非常相似。通常情况下,视频大约为每秒20-30帧,而在1/30秒内没有什么变化。拿起任何DVD并暂停播放,然后将其移动到一帧,并注意两张图像的相似程度。因此,MPEG-4(和其他压缩标准)不是独立编码每个帧,而是仅编码连续帧之间的差异(使用motion estimation找出帧之间的差异)。
空间冗余利用了这样的事实:遍布图像的色彩趋向于相当低的频率。我的意思是说,相邻的像素倾向于具有相似的颜色。例如,在穿着红色跳线的图像中,代表跳线的所有像素颜色都非常相似。可以使用DCT将像素值转换为频率空间,其中可以丢弃一些高频信息。然后,当执行反向DCT(在解码期间)时,图像现在没有被丢弃的高频信息。
要查看扔掉高频信息的影响,开MS油漆和绘制一系列重叠的水平和垂直黑线的。将图像保存为JPEG(也使用DCT进行压缩)。现在放大图案,注意线条的边缘如何不再尖锐,并且有点模糊。这是因为一些高频信息(从黑色到白色的过渡)在压缩过程中被丢弃。Read this for an explanation with nice pictures
对于进一步阅读,this book是相当不错的,如果有点沉重的数学。
像任何其他流行的视频编解码器一样,MPEG4使用discrete cosine transform和各种运动补偿技术(如果有帮助,您可以将其视为运动预测)的变体,以减少后续帧所需的数据量。 This page概述了普通MPEG4的功能。
这与JPEG使用的技术并不完全不一样。
锋利的边缘肯定包含高频率。减少或消除高频会降低边缘的清晰度。包括尖锐边缘在内的精细细节可以高频移除 - 可以解决2个小物体被高频移除 - 然后您只能看到一个。
- 1. 将压缩帧写入mpeg4 chuncks C++
- 2. Zip文件压缩如何工作?
- 3. LZMA压缩方法如何工作?
- 4. 压缩不zlib库工作
- 5. KOA-压缩不工作
- 6. 压缩域中的运动检测(JPEG/Mpeg4/H264)
- 7. 使用硅压缩机在android不工作的视频压缩
- 8. Django的multivaluefield&multiwidget - 压缩和/或解压缩不工作
- 9. 压缩正在工作,但解压缩不是
- 10. Tomcat和压缩:CSS/JS压缩工作...有时
- 11. 如何解压缩压缩的内核
- 12. 如何压缩文件时不压缩
- 13. Jammit压缩工作在开发模式,但不是作为压缩JS
- 14. rsync压缩及其工作原理
- 15. 的zlib压缩在java中不工作
- 16. 在socket.io,压缩perMessageDeflate不工作
- 17. express.js压缩中间件不工作
- 18. 咕噜压缩文件夹不工作
- 19. Gzip压缩不工作通过HTTPS
- 20. gzip压缩代码不工作
- 21. npm安装不工作gzipped压缩包
- 22. Express.js压缩模块不工作
- 23. PNG压缩在opencart不工作
- 24. 压缩不工作在网页上
- 25. 启用gzip压缩不工作
- 26. 图像压缩是不工作
- 27. gzip压缩不工作的XAMPP
- 28. 如何压缩javascript?
- 29. 如何压缩UIImage?
- 30. 如何压缩CSS
尖锐的边缘不是高频的,因为它们不重复。它们实际上是每个频率的总和,这就是为什么DCT压缩和某些图像缩放会在线条周围增加噪点而不是模糊它们。 – 2009-04-28 02:03:39