什么是 6 抽头滤波器以及它们在编解码器之间有何不同?
我在 一项关于 VP8 解码短语的研究中发现“在任何情况下 6 抽头滤波器都将是6 抽头滤波器,差异通常仅在于系数”。那么什么是 6 抽头滤波器,它是如何工作的呢?
那么谁能解释一下什么是 6-tap 滤波器以及它们在编解码器之间有何不同?
I found in one research on VP8 decoding phrase "6-tap filter in any case will be a 6-tap filter, and the difference is usually only in the coefficients". So what is 6-tap filter, how it works?
So can any one please explain what is 6-tap filter and how they differ across codecs?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
视频编解码器中有两个地方通常使用这些滤波器:
运动估计/补偿
视频编解码器的压缩效果比静态图像编解码器好得多,因为它们还消除了帧之间的冗余。他们使用运动估计和运动补偿来做到这一点。编码器将图像分割成矩形图像数据块(通常为 16x16),然后尝试在先前编码的帧中查找与当前正在编码的块尽可能相似的块。然后,编码器仅传输差异以及指向找到良好匹配的位置的指针。这是视频编解码器获得约 1:100 压缩而图像编解码器获得 1:10 压缩的主要原因。现在,您可以想象有时场景中的相机或对象并没有移动整个像素,而是实际上移动了一半或四分之一像素。如果图像被缩放/插值,那么就会找到更好的匹配,并且这些过滤器用于做到这一点。每个编解码器执行此过滤的确切方式通常有所不同。
去块
使用此类过滤器的另一个原因是从正在使用的变换中删除伪影。就像在静态图像编码中一样,有一种变换可以将图像数据变换到“压缩能量”的不同空间。例如,在此转换之后,那些具有统一颜色(如蓝天)的图像部分将生成仅具有单个颜色数字的数据,然后其余数据全部为零。与存储所有像素蓝色的原始数据相比,大量冗余已被删除。变换(Google 的 DCT、KLT、整数变换)之后,通常会丢弃零,而剩下的其他不那么相关的数据则使用比原始数据更少的位数进行编码。在图像解码期间,由于数据被丢弃,这通常会导致 8x8 或 16x16 相邻块之间出现边缘。有一个单独的平滑过滤器可以再次平滑这些边缘。
There are two places in video codecs where these filters are typically used:
Motion estimation/compensation
Video codecs compress much better than still image codecs because they also remove the redundancy between frames. They do this using motion estimation and motion compensation. The encoder splits up the image into rectangular blocks of image data (typically 16x16) and then tries to find the block in a previously coded frame that is as similar as possible to the block that's currently being coded. The encoder then only transmits the difference, and a pointer to where it found this good match. This is the main reason why video codecs get about 1:100 compression, where image codecs get 1:10 compression. Now, you can imagine that sometimes camera or object in the scene didn't move by a full pixel, but actually by half or a quarter pixel. There's then a better match found if the image is scaled/interpolated, and these filters are used to do that. The exact way they do this filtering often differs per codec.
Deblocking
Another reason for using such a filter is to remove artifacts from the transform that's being used. Just like in still-image coding, there's a transform that transforms the image data into a different space that "compacts the energy". For instance, after this transform, those image sections that have a uniform color, like a blue sky, will result into data that has just a single number for the color, and then all zeros for the rest of the data. Comparing this to the original data, which stores blue for all of the pixels, a lot of redundancy has been removed. After the transform (Google for DCT, KLT, integer transform), the zeros are typically thrown away, and the other not so relevant data that's left is coded with fewer bits than in the original. During image decoding, since data has been thrown away, this often results in edges between the 8x8 or 16x16 of neighboring blocks. There's a separate smoothing filter that then smoothens these edges again.
6 抽头滤波器是 6 阶 FIR 或 IIR 滤波器(可能是 FIR)。这些系数将决定滤波器的频率响应。如果不了解结构、系数和采样率,您就无法真正了解有关滤波器的更多信息。
A 6 tap filter is a 6th order FIR or IIR filter (probably FIR). The coefficients will determine the frequency response of the filter. Without knowing the structure, coefficients and the sample rate you can't really say much more about the filter.