一种基于HEVC压缩域的运动感知图提取方法与流程

文档序号:13476600阅读:479来源:国知局
一种基于HEVC压缩域的运动感知图提取方法与流程

本发明涉及数字视频编码领域,具体涉及一种基于hevc压缩域的运动感知图提取方法。



背景技术:

随着视频信息技术的快速发展,高清1080p(1920×1080)视频已经普及,超高清4k(3840×2160)视频正逐渐进入我们的生活和工作。为了获得高效的视频编码效率,国际标准化组织itu-t的视频编码专家组(vceg)和iso/iec的运动图像专家组(mpeg)于2013年共同推出了新一代的高效率视频编码标准(hevc)。与上一代编码标准h.264相比,hevc采用了更为先进的编码技术,在相同视频图像质量的条件下可以节约50%左右的视频码流。

为了灵活有效地编码视频图像,hevc采用了新的处理单元划分机制(见g.j.sullivan,j.r.ohm,w.j.han,andt.wiegand,overviewofthehighefficiencyvideocoding(hevc)standard,即“高效率视频编码标准概述”,ieeetransactionsoncircuitsandsystemsforvideotechnology,vol.22,no.12,pp.1649-1668,dec.2012),包括编码单元(cu)、预测单元(pu)和变换单元(tu)。这种划分机制有利于编码器根据视频图像内容特点自适应选择最佳的划分方式。在hevc中,一帧视频图像被划分成多个不同尺寸的正方形cu进行编码,其尺寸可以为64×64、32×32、16×16或8×8,每个cu又被进一步划分为一个或多个pu进行预测,pu的预测模式可以为帧内预测模式(intra模式)或帧间预测模式(inter模式),同一个cu下的pu预测模式相同。pu的帧间预测模式包括skip(pu的skip模式不会对残差进行编码,划分方式为2n×2n)、merge、2n×2n、n×n、n×2n、2n×n、2n×nu、2n×nd、nl×2n和nr×2n。若cu的尺寸为8×8时,不进行n×n、2n×nu、2n×nd、nl×2n和nr×2n的pu划分方式。对于一个32×32尺寸的cu,若其采用inter编码模式,则它的pu划分方式可为以下八种情况之一:一个32×32的pu、四个16×16的pu、左右各一个16×32的pu、上下各一个32×16的pu、上方32×8与下方32×24的pu、上方32×24与下方32×8的pu、左边8×32与右边24×32的pu、左边24×32与右边8×32的pu。在intra编码模式下,每个pu没有运动矢量;在inter编码模式下,每个pu都有运动矢量,其中运动矢量幅值的单位为四分之一像素位移。

虽然视频编码的数据压缩效率已经不断提升,然而在很多实际应用过程中,视频编码系统依然存在网络带宽、存储容量和计算性能等资源受限制的问题,在这样的情况下,优先保证人眼的主观视频质量尤为重要。现有的视频编码标准本身都没有涉及感兴趣区域编码,因此基于感兴趣区域的视频编码方法是数字视频编码领域的一个研究热点,然而其中的核心问题就是如何有效的提取出感兴趣的区域。申请号为201710000884.4的专利采用像素域的帧间差分法分离出运动区域与静止区域,在hevc上实现了感兴趣区域的编码。申请号为201110161017.1的专利利用h.264压缩域产生的运动矢量建立4×4像素块的运动矢量场,然后求取运动矢量的幅度与相位,并利用宏块的分割与时空相关性建立mrf模型提取运动目标区域。申请号为20101015249.7的专利利用h.264在压缩域中获得的运动矢量建立概率分布函数,计算每个像素点的运动矢量值的时间相关性熵值并建立运动模型,利用视频图像亮度信息进行mean-shift和区域生长法得到空间域分割模型,采用边缘判定法将二者融合得到时空域运动感知模型。

上述方法主要是针对h.264的压缩域信息,不能完全适用于具有全新编码划分结构的hevc。相比纹理和色彩信息,人眼视觉系统对运动的敏感度更高。因此,提取准确的运动感知图是实现hevc感兴趣区域编码的关键。由于hevc具有灵活的块划分机制,其压缩过程中产生的cu、pu划分方式以及pu运动矢量等编码信息反映了视频图像运动的状态,可以用于快速、有效地提取运动感知图。



技术实现要素:

为了根据视觉感兴趣区域合理分配hevc编码的码率资源和计算资源,本发明主要针对背景区域基本静止的视频场景,提出了一种基于hevc压缩域的运动感知图提取方法,所述方法包括以下步骤:

(1)输入一帧已编码帧的编码信息

所述已编码帧为前向预测编码帧,即p帧,输入的编码信息包括其亮度分量子帧所有的cu尺寸、cu编码模式、pu划分方式以及4×4像素块水平和垂直方向上的运动矢量mvx和mvy。若cu的编码模式为帧内编码模式,即intra模式,则将该cu所包含的4×4像素块的mvx和mvy都设为0,若cu的编码模式为帧间编码模式,即inter模式,则该cu所包含的4×4像素块的mvx和mvy为所属pu的运动矢量。在hevc编码过程中,最小的帧间预测pu尺寸为8×4和4×8,因此本发明中取运动矢量的基本粒度为4×4像素块,各种尺寸的帧间预测pu都可以用若干个具有相同运动矢量的4×4像素块来表示。

(2)全局运动检测

由于摄像机在拍摄视频的过程中可能存在全局的转动或者距离前景运动物体很近,导致视频画面存在全局运动或者运动范围较大,从而使人眼视觉难以获取到真正感兴趣的区域。为了能在有限的计算量下准确的检测出真正感兴趣的区域,需要检测出当前画面是否存在全局运动,具体的检测子步骤如下:

(2-1)对当前帧所有4×4像素块的运动矢量mvx和mvy由小到大分别进行排序,若当前帧4×4像素块的个数为奇数,则分别选取排在中间的数值作为水平方向的全局运动矢量值gmvx和垂直方向的全局运动矢量值gmvy,若当前帧4×4像素块的个数为偶数,则分别选取中间两个数值的平均值作为gmvx和gmvy。

(2-2)用weightlum来表示每个像素点的感知权重值,weightlum∈[0,255],取值越大表明运动越强,用tgmv表示全局运动矢量阈值。若gmvx与gmvy都在[-tgmv,tgmv]之间,认为视频图像没有全局运动,则进行下一步,即从步骤(3)继续执行后面的步骤,计算当前帧每个像素点的weightlum。若gmvx与gmvy至少一个不在[-tgmv,tgmv]之间时,则认为视频图像存在全局运动或者运动范围很大,将当前帧每个像素点的weightlum赋值为255,并结束当前帧的处理,跳到步骤(1)等待处理下一帧。tgmv取值范围为[0,4],即小于等于一个像素位移,取值越大表明当前帧存在大范围运动且整体运动幅度越大。

(3)运动矢量幅值计算

物体的运动可以分解为水平方向和垂直方向两个分量,为了能更好的反映出物体运动的幅度,对当前帧所有4×4像素块根据从上到下从左到右的顺序按式(1)计算其运动矢量幅值mvamp,所有mvamp按顺序组成一幅二维的运动矢量幅值图,该图水平方向的幅值个数为当前帧水平方向上4×4像素块的个数,垂直方向的幅值个数为当前帧垂直方向上4×4像素块的个数。

mvamp=|mvx|+|mvy|(1)

(4)运动矢量幅值滤波

为了减小噪声运动矢量对运动感知图生成的影响,以pu为单位对当前帧的运动矢量幅值进行滤波,具体步骤如下:

(4-1)对运动矢量幅值进行空间中值滤波

经过编码后的视频图像在静止的区域会存在一些噪声运动矢量,这些噪声相对孤立,而真正运动的物体是以区域的形式在图像中表现出来,因此本发明利用相邻pu块的运动矢量信息将非真正运动区域的噪声运动矢量滤除。

选取当前pu左上角4×4像素块的运动矢量幅值为当前pu的运动矢量幅值,记作mvpu。根据当前帧pu的最终划分形式,以pu为单位对当前帧的运动矢量幅值进行空间中值滤波:若当前pu不在图像边界,则选取与当前pu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻的4×4像素块作为中值滤波参考块,并获取这四个参考块的mvamp,分别标记为mvampl、mvampu、mvampr、mvampd。将这四个参考块的运动矢量幅值与mvpu进行排序,选取中间值作为当前pu中所有4×4像素块的运动矢量幅值。

若当前pu块位于图像的边界且非四个顶角处,则选取当前pu中左上角4×4像素块左侧相邻和上侧相邻,右上角4×4像素块右侧相邻以及左下角4×4像素块下侧相邻的4×4像素块中存在的三个4×4像素块作为参考块,将这三个参考块的运动矢量幅值进行排序选取中间值作为当前pu中所有4×4像素块的运动矢量幅值。

若当前pu块位于图像的顶角处,则选取当前pu左上角4×4像素块左侧相邻和上侧相邻,右上角4×4像素块右侧相邻以及左下角4×4像素块下侧相邻4×4像素块中存在的两个4×4像素块作为参考块,将这两个参考块的运动矢量幅值与mvpu进行排序,选取中间值作为当前pu中所有4×4像素块的运动矢量幅值。

(4-2)基于块尺寸的幅值滤波

采用(4-1)中的滤波方式可以将周围运动矢量幅值为0的非0运动矢量噪声滤掉,但依然存在区域性幅值较小的运动矢量噪声,这些噪声不能表示真实的运动目标。根据hevc编码特性,尺寸较大的块所包含图像的运动活跃性相对较小,因此本专利利用编码块的尺寸进一步滤波。

利用每个pu所属cu的尺寸对每个pu的4×4像素块按式(2)进行基于块尺寸的运动矢量幅值滤波,式中cusize表示所属cu的尺寸;t64、t32、t16、t8分别表示cusize为64×64、32×32、16×16、8×8时的运动矢量幅值滤波阈值,三者关系需满足式(3),且t64∈[1,8]、t32∈[1,6]、t16∈[1,4]、t8∈[0,2]。

t64≥t32≥t16≥t8(3)

(4-3)基于skip模式的幅值滤波

运动显著区域的pu其预测模式通常不会选择skip模式,当pu的预测方式为skip模式时它会选取相邻已有的运动矢量来作为自身运动矢量,如果只对skip模式自身的运动矢量进行处理,这样的区域也会被判定为运动区域。基于这样的特性分析,本发明利用相邻pu的预测模式信息对这部分噪声进行滤除。

对于所有预测模式为skip模式的pu进行运动矢量幅值滤波:若当前pu为位于图像边界pu,则将所包含4×4像素块的运动矢量幅值直接设为0。若当前pu不在图像边界,则选取当前pu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻的4×4像素块作为skip模式pu参考块,并统计这四个参考块所在pu的编码模式为skip模式的个数numskip,对当前pu中所包含的4×4像素块按式(4)更新mvamp,其中tskip为基于skip模式的幅值滤波阈值,tskip∈[2,4]。

(5)更新intra模式cu的运动矢量幅值

hevc在进行预测时会根据率失真代价来选择最佳的编码模式,对于一些帧间预测率失真代价较大的运动区域,也会存在intra模式的cu,而这部分同样需要成为感知图的一部分。本发明利用相邻4×4像素块的编码信息来判断每个intra模式的cu是否位于运动区域,以及更新其运动矢量幅值。

由步骤(4-3)得到了滤波后运动矢量幅值图,对所有4×4像素块的非零运动矢量幅值按从小到大进行排序,若统计的个数为奇数,则取中间值作为intra模式cu运动矢量幅值参考值,并记为mvintra;若统计的个数为偶数,则选取中间两数的平均值作为mvintra。

对每个intra模式cu,若该cu不在图像边界,则选取当前cu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻的4×4像素块作为intra模式cu参考块。若当前intra模式cu位于帧的边界且非顶角处,则选取当前cu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻4×4像素块中存在的三个4×4像素块作为参考块。若当前intra模式的cu位于帧的顶角处,则选取当前cu左上角4×4像素块左侧相邻和上侧相邻,右上角4×4像素块右侧相邻以及左下角4×4像素块下侧相邻4×4像素块中存在的两个4×4像素块作为参考块。

统计参考块中运动矢量幅值大于tamp的个数tnum1以及参考块中对应cu的编码模式为intra模式的个数tnum2,并计算tnum1与tnum2的和,记为tnum,其中tamp∈[0,8]。当前cu为非边界cu时,若tnum值大于tintra,则将当前cu下所有4×4像素块的mvamp设为mvintra,否则设为0,其中tintra∈[0,3]。当前cu为边界cu时,若tnum大于tintra2,则将当前cu下所有4×4像素块的mvamp设为mvintra,否则设为0,其中tintra2∈[0,1]。

(6)运动矢量幅值图的膨胀

对于连续运动的物体,其在下一帧的位置区域会与当前帧有一定的变化,因此为了能更好的给下一帧编码作参考,当前帧的感知图需要尽量包括下一帧的运动区域。本发明对当前帧的运动矢量幅值图进行非零运动矢量幅值膨胀,每个4×4像素块得到膨胀后的mvamp,具体方法如下:

对当前帧中的每个4×4像素块,若其mvamp不为0,则该块在当前步膨胀之后的mvamp为膨胀前的mvamp,即保持不变,否则选取当前块及其左上方、上方、右上方、左方、右方、左下方、下方和右下方相邻且存在的4×4像素块组成运动矢量幅值膨胀参考块,统计这些参考块中mvamp大于0的个数nzamp,若nzamp小于texp,则膨胀之后的mvamp仍为0,否则先获取这些参考块中最小且非0的mvamp,记为minmvamp,再将膨胀后的mvamp设置为minmvamp,其中texp∈[1,3],取值越小膨胀效果越显著。

(7)基于时间域的运动矢量幅值滤波

前面的滤波过程主要是在空域上进行滤波,仍然存在着时域上的运动矢量噪声,由于物体的运动是存在惯性的,即如果当前帧的某一块区域存在运动,那么上一帧相应块的邻近区域也会存在着运动。本发明利用相邻帧之间的相关性滤除时间域上的运动矢量噪声。

由步骤(6)获取到了膨胀后的运动矢量幅值图,若当前帧的前一帧不为p帧则不进行时间域的滤波操作,跳到下一步,否则按以下方法进行处理:

对于当前帧的每个4×4像素块,若其运动矢量幅值为0,则滤波之后的运动矢量幅值仍为0,否则先选取当前4×4像素块在前一p帧膨胀后的运动矢量幅值图中相同位置4×4像素块,以及此位置左上方、上方、右上方、左方、右方、左下方、下方、右下方相邻且存在的4×4像素块组成时间域滤波参考块,接着统计参考块中运动矢量幅值大于0的个数,记为ampnum,最后对当前4×4像素块的运动矢量幅值按照式(5)进行更新。

(8)运动感知图生成

经过上一步的处理后对当前帧运动矢量幅值图中的非零运动矢量幅值进行统计,选取最大值作为感知图阈值mvthr,利用mvthr和每个4×4像素块的mvamp对当前帧每个像素点的感知权重值weightlum进行设置,若mvthr大于4,按照式(6)计算得到;若mvthr小于等于4,按照式(7)计算得到。每个像素的weightlum最终组成当前帧的运动感知图。

本发明的技术构思为:首先从hevc压缩域中获取p帧的运动矢量、编码模式、划分方式、cu尺寸等编码信息,通过运动矢量判断当前帧是否存在全局运动,并对当前帧的运动矢量求取幅值得到运动矢量幅值图;接着利用cu的尺寸、pu的划分信息与编码模式对运动矢量幅值进行滤波以及进行intra模式cu的运动矢量幅值处理;然后对运动矢量幅值图进行膨胀;最后利用相邻帧的相关性进行时间域的运动矢量幅值滤波,得到当前帧的运动感知图。

与现有技术相比,本发明具有以下有益效果:

本发明提出一种基于hevc压缩域的运动感知图提取方法。该方法与现有技术相比,具有如下特点和优点:通过hevc压缩域得到的运动矢量信息获取感兴趣区域;利用cu的尺寸、pu的划分方式与编码模式等编码信息对运动矢量幅值进行空域上的滤波,利用相邻帧的相关性进行时域上的滤波,去除了非感兴趣区域上产生的运动噪声。本发明充分利用了hevc编码过程中产生的编码信息,能够有效的提取单目标或者多目标的运动区域,相比像素域的处理方法极大的减少了计算复杂度。

附图说明

图1为本发明的方法流程图;

图2为本发明的中值滤波中pu不在图像边界的参考块与pu相对位置示意图;

图3为本发明的中值滤波中pu在图像边界的参考块与pu相对位置示意图;

图4为本发明的实施例中basketballdrill序列第17帧原始帧(a)、分割图(b)、感知图(c)对比;

图5为本发明的实施例中basketballdrill序列第22帧原始帧(a)、分割图(b)、感知图(c)对比。

具体实施方式

下面结合实施例和附图来详细描述本发明,但本发明并不仅限于此。

本发明采用编译工具为visualstudio2012编译器,hevc编码软件为官方参考软件x265_1.8,处理器为inter-core-i5-4590@3.30ghz。x265编码器的配置如下:帧率30fps,没有b帧且i帧后面全是p帧,关闭wpp功能,开启amp与rect划分方式。输入的视频源为hevc测试序列basketballdrill序列,分辨率大小为832×480,背景是静止的且包含多个运动目标。

如图1所示,一种基于hevc压缩域的运动感知图提取方法,包括以下步骤:

(1)输入一帧已编码帧的编码信息;

(2)全局运动检测;

(3)运动矢量幅值计算;

(4)运动矢量幅值滤波;

(5)更新intra模式cu的运动矢量幅值;

(6)动矢量幅值图的膨胀;

(7)基于时间域的运动矢量幅值滤波;

(8)运动感知图生成;

步骤(1)具体包括:

当前编码帧类型为p帧,获取当前帧亮度分量子帧所有的cu尺寸、cu编码模式、pu划分方式以及4×4像素块水平和垂直方向上的运动矢量mvx和mvy。若cu的编码模式为帧内编码模式,即intra模式,则将该cu所包含的4×4像素块的mvx和mvy都设为0,若cu的编码模式为帧间编码模式,即inter模式,则将该cu所包含的4×4像素块的mvx和mvy为所属pu的运动矢量。

步骤(2)具体包括:

(2-1)对当前帧所有4×4像素块的运动矢量mvx和mvy由小到大分别进行排序,若当前帧4×4像素块的个数为奇数,则分别选取排在中间的数值作为水平方向的全局运动矢量值gmvx和垂直方向的全局运动矢量值gmvy,若当前帧4×4像素块的个数为偶数,则分别选取中间两个数值的平均值作为gmvx和gmvy。

(2-2)用weightlum来表示每个像素点的感知权重值,其取值范围为[0,255]。用tgmv表示全局运动矢量阈值。若gmvx与gmvy都在[-tgmv,tgmv]之间,认为视频图像没有全局运动,则进行下一步,即从步骤(3)继续执行后面的步骤,计算当前帧每个像素点的weightlum。若gmvx与gmvy至少一个不在[-tgmv,tgmv]之间时,则认为视频图像存在全局运动或者运动范围很大,则将当前帧每个像素点的weightlum赋值为255,并结束当前帧的处理,跳到步骤(1)等待处理下一帧。tgmv取值范围为[0,4],此处取值为2。

步骤(3)具体包括:

对当前帧所有4×4像素块的运动矢量根据从上到下从左到右的顺序按式(1)计算其运动矢量幅值mvamp,所有mvamp按顺序组成一幅二维的运动矢量幅值图,该图水平方向的幅值个数为当前帧水平方向上4×4像素块的个数,垂直方向的幅值个数为当前帧垂直方向上4×4像素块的个数。

mvamp=|mvx|+|mvy|(1)

步骤(4)是对当前帧所有4×4像素块的运动矢量幅值进行滤波,具体包括以下步骤:

(4-1)对运动矢量幅值进行空间中值滤波,具体方法如下:

选取当前pu左上角4×4像素块的运动矢量幅值为当前pu的运动矢量幅值,记作mvpu。根据当前帧pu的最终划分形式,以pu为单位对当前帧的运动矢量幅值进行空间中值滤波:若当前pu不在图像边界,则选取与当前pu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻的4×4像素块作为中值滤波参考块,并获取这四个参考块的mvamp,分别标记为mvampl、mvampu、mvampr、mvampd。将这四个参考块的运动矢量幅值与mvpu进行排序,选取中间值作为当前pu中所有4×4像素块的运动矢量幅值。

若当前pu块位于图像的边界且非四个顶角处,则选取当前pu中左上角4×4像素块左侧相邻和上侧相邻,右上角4×4像素块右侧相邻以及左下角4×4像素块下侧相邻的4×4像素块中存在的三个4×4像素块作为参考块,如图3所示,例如当前pu位于图像左侧边界时,选取当前pu中左上角4×4像素块上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块,左下角4×4像素块下侧的相邻的4×4像素块作为参考块。将这三个参考块的运动矢量幅值进行排序选取中间值作为当前pu中所有4×4像素块的运动矢量幅值。

若当前pu块位于图像的顶角处,则选取当前pu左上角4×4像素块左侧相邻和上侧相邻,右上角4×4像素块右侧相邻以及左下角4×4像素块下侧相邻4×4像素块中存在的两个4×4像素块作为参考块,如图3所示,例如当前pu位于图像左上角时,选取当前pu中右上角4×4像素块右侧相邻的4×4像素块与左下角4×4像素块下侧相邻的4×4像素块作为参考块。将这两个参考块的运动矢量幅值与mvpu进行排序,选取中间值作为当前pu中所有4×4像素块的运动矢量幅值。

(4-2)基于块尺寸的幅值滤波,具体方法如下:

利用每个pu所属cu的尺寸对每个pu下的4×4像素块按式(2)进行基于块尺寸的运动矢量幅值滤波,式中cusize表示当前cu的尺寸;t64、t32、t16、t8分别表示cusize为64×64、32×32、16×16、8×8时的滤波阈值,t64取值范围为[1,8],此处取值为4;t32取值范围为[1,6],此处取值为2;t16取值范围为[1,4],此处取值为1;t8取值范围为[0,2],此处取值为0,且三者关系需满足式(3)。

t64≥t32≥t16≥t8(3)

(4-3)基于skip模式的运动矢量幅值滤波,具体方法如下:

对于所有预测模式为skip模式的pu进行运动矢量幅值滤波:若当前pu为位于图像边界pu,则将所包含4×4像素块的运动矢量幅值直接赋值为0。若当前pu不在图像边界,则选取当前pu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻的4×4像素块作为skip模式pu参考块,并统计这四个参考块所在pu的编码模式为skip模式的个数numskip,对当前pu中所包含的4×4像素块按式(4)更新mvamp,其中tskip为基于skip模式的幅值滤波阈值,tskip取值范围为[2,4],此处取值为3。

步骤(5)具体包括:

由步骤(4-3)得到了滤波后运动矢量幅值图,对所有4×4像素块的非零运动矢量幅值进行由小到大排序,若统计的个数为奇数时,取中值作为intra模式运动矢量幅值的参考值,并记作mvintra;若统计的个数为偶数时选取中间两数平均值作为mvintra。

对每个intra模式cu,若该cu不在图像边界,则选取当前cu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻的4×4像素块作为intra模式cu参考块。若当前intra模式cu位于帧的边界且非顶角处,则选取当前cu中左上角4×4像素块左侧相邻和上侧相邻的4×4像素块,右上角4×4像素块右侧相邻的4×4像素块以及左下角4×4像素块下侧相邻4×4像素块中存在的三个4×4像素块作为参考块。若当前intra模式的cu位于帧的顶角处,则选取当前cu左上角4×4像素块左侧相邻和上侧相邻,右上角4×4像素块右侧相邻以及左下角4×4像素块下侧相邻4×4像素块中存在的两个4×4像素块作为参考块。

统计参考块运动矢量幅值大于tamp的个数tnum1与参考块对应cu的编码模式为intra模式的个数tnum2,并计算tnum1与tnum2的和,记作为tnum,其中tamp的取值范围为[0,8],此处取值为4。当前cu为非边界cu时,若tnum值大于tintra,则将当前cu下所有4×4像素块的mvamp设为mvintra,否则设为0,其中tintra的取值范围为[0,3],此处取值为1。当前cu为边界cu时,若tnum大于tintra2,则将当前cu下所有4×4像素块的mvamp设为mvintra,否则设为0,其中tintra2的取值范围为[0,1],此处取值为0。

步骤(6)具体包括:

对当前帧中的每个4×4像素块,若其mvamp不为0,则该块在当前步膨胀之后的mvamp为膨胀前的mvamp,即保持不变,否则选取当前块及其左上方、上方、右上方、左方、右方、左下方、下方和右下方相邻且存在的4×4像素块组成运动矢量幅值膨胀参考块,统计这些参考块中mvamp大于0的个数nzamp,若nzamp小于texp,则膨胀之后的mvamp仍为0,否则先获取这些参考块中最小且非0的mvamp,记为minmvamp,再将膨胀后的mvamp设置为minmvamp,其中texp∈[1,3],此处取值为1。

步骤(7)具体包括:

由步骤(6)获取到了膨胀后的运动矢量幅值图,若当前帧的前一帧不为p帧则不进行时间域的滤波操作,跳到下一步,否则按以下方法进行处理:

对于当前帧的每个4×4像素块,若其运动矢量幅值为0,则滤波之后的运动矢量幅值仍为0,否则先选取当前4×4像素块在前一p帧膨胀后的运动矢量幅值图中相同位置4×4像素块,以及此位置左上方、上方、右上方、左方、右方、左下方、下方、右下方相邻且存在的4×4像素块组成时间域滤波参考块,接着统计参考块中运动矢量幅值大于0的个数,记为ampnum,最后对当前4×4像素块的运动矢量幅值按照式(5)进行更新。

步骤(8)具体包括:

经过上一步的处理后对当前帧运动矢量幅值图中的非零运动矢量幅值进行统计,选取最大值作为感知图阈值mvthr,利用mvthr和每个4×4像素块的mvamp对当前帧每个像素点的感知权重值weightlum进行设置,若mvthr大于4,按照式(6)计算得到;若mvthr小于等于4,按照式(7)计算得到。每个像素的weightlum最终组成当前帧的运动感知图。如图4、图5分别为basketballdrill序列第17帧和22帧原始视频图像、分割图与感知图的对比,感知图中亮度越高的区域表示物体运动的幅度越大。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1