我试图牢牢掌握其工作原理。每个宏块都有一个与之关联的运动矢量(如果矢量为[1,0]),则表示为
all the pixels in this block move 1 in the x direction and 0 in the y direction for the next frame.
。如果所有运动矢量均未正确对齐,则不会遗漏图像的面积(例如面积)吗? 例如,我发现以下问题。
在时间t考虑以下图像:
7 7 7 7
7 7 5 5
7 5 5 8
8 8 8 8
9 9 9 9
9 9 9 9
此图像被分解为2x2宏块,并发送了以下运动矢量来重新创建它:
(0,0) (0,0) (0,1) (-1,1) (0,0) (0,0)
上一个时间步t-1的图像如下所示:
7 7 7 7
7 7 5 4
7 7 7 7
7 5 8 8
8 9 8 9
9 9 9 9
传递了哪些错误?
您将如何解决?这个吗?
#1 楼
为了简化您的困惑-有两个过程:1。运动估计2。运动补偿
在讨论估计值之前,我们应该先谈一下运动补偿。
比方说,$ Image_ {t}(x,y)$被分成块$ Blocks_ {t} [k](x',y')$。
运动补偿的任务是从
$ Image_ {t-1}(x,的任何区域生成$ Blocks_ {t} [k](x',y')$ y)$。
因此,另一个不一定与16x16边界对齐的块是最佳匹配$ Blocks_ {t-1} [k](x'+ mx,y'+ my)$
这里,$ mx,我的$被称为运动向量。
我们可以计算目标与参考之间的误差为
$$ Err_ {t} [k] (x,y)= Blocks_ {t} [k](x',y')-Blocks_ {t-1} [k](x'+ mx,y'+ my)$$
因此,现在,编码器基本上为每个块发送$ Err_ {t} [k](x,y)$(具有DCT和量化)和$ {(mx,my)} [k] $。
编码器有2个工作要做:
1。运动估计
以最小化$ Err_ {t} [k](x,y)$的方式对每个$ k $估计$ {mx,my} [k] $的过程称为运动估计。
2。运动补偿后生成错误图像
从$ I_ {t} $图像像素和$ {(mx,my)}构造$ Blocks_ {t} [k](x',y')$的过程[ k] $称为运动补偿。
错误图像将被传输。
最后,解码器可以使用运动矢量和误差图像自行重新进行运动补偿,以最终重建图像。
现在我们实现了几点:最佳运动估计有助于最大程度地减少需要传输的能量,从而针对给定的质量优化比特。
但是,即使$ {((mx,my)} [k] $]不理想,或者场景比上一张图片有明显变化,$ Err_ {t} [k](x,y)$也会始终发送到接收器-因此,重构始终是完美的(对量化所产生的损耗进行模运算)。因此,即使您具有次优的运动矢量或多余的冗余也不多,但重构仍然总是完美的,尽管有更多的位!
每个块$ Blocks_ {t} [k](x',y')$本身都是运动补偿的-因此,即使任何相邻块的实际运动矢量在构造中均不起作用。因此,不必将运动矢量完美对齐即可实现完美的重建。
尽管存在算法,但他们足够聪明地猜测$ Blocks_ {t} [k] $是否具有运动矢量$(mx, my)[k] $对$ Blocks_ {t} [k + 1] $的猜测可能与之接近。
最后,假设下一张图片完全不同,则$$能量(Err_ {t} [k](x,y))>能量(Blocks_ {t} [k](x',y '))$$。
在这种情况下,不发送预测而直接发送块比发送差值更可取。在编码器中,也可以通过称为INTRA块的设置来实现这一点。
#2 楼
不,它不会留下漏洞,因为矢量是从未知帧(P或B)到已知帧(I帧)的。它使人想起了如何计算图像变换-您使用向后变换来避免出现孔/
#3 楼
与许多标准信号处理例程一样,它在纸上非常简单,而且在实践中有些棘手。您将图像分成六个块$ B(i,j)$,其中$ i = \ {0,1,2 \} $和$ j = \ {0,1 \} $。每个块的坐标为$(2i,2j)$(我们考虑每个块的左上角以标识其位置)。因此,我们现在在(0,0) (0,2) (2,0) (2,2) (4,0) (4,2)有六个块,您为每个块计算的运动矢量$ M(i,j)$是
现在,要计算结果图像,我们必须首先知道每个块的移动位置。为此,我们只需将上面的坐标矩阵添加到其运动矩阵中:$ B'(i,j)= B(i,j)+ M(i,j)$。我们得到
(0,0) (0,0) (0,1) (-1,1) (0,0) (0,0)
为了避免您所说的“空洞”,我们不会简单地移动原始框架的块来获得新的原始的作为参考,并注入新计算的块。为此,我们首先复制原始框架。然后,我们取每个$ B'(i,j)$并替换为对应的$ B(i,j)$的像素。 “运动中”(将两个块移动到重叠的位置)。有多种方法可以解决此问题,但这超出了此响应的范围。现在,我们将使用要移动到其位置的块重写所有像素,这样即使以前有块移动到那里,它们也会被覆盖。
现在,进行按照您在问题中的排列顺序,我们将每个$ B'(i,j)$替换为其对应的$ B(i,j)$。我们得到了跟踪估计框架$ F_e $
(0,0) (0,2) (2,1) (1,3) (4,0) (4,2)
在估计框架$ F_e $和我们试图预测$ F的框架之间发现了错误$ E $。 $由$ E = F-F_e $找到,我们将其计算为
7 7 7 7 7 7 5 7 7 7 7 8 7 5 5 8 8 9 8 9 9 9 9 9
评论
$ \ begingroup $
虽然我认为到目前为止,信号处理社区是提出这个问题的最佳场所,但是,像这样的主题以及与此紧密相关的技术都需要有自己的空间。问与答站点广播和媒体技术有一个新建议。请加入并做出贡献。
$ \ endgroup $
– Dipan Mehta
2012年1月17日下午4:13
$ \ begingroup $
@DipanMehta太酷了! =)
$ \ endgroup $
– Phonon
2012年1月17日14:26