视频错误掩藏方法及装置制造方法

文档序号:7819222阅读:247来源:国知局
视频错误掩藏方法及装置制造方法
【专利摘要】本申请提出视频错误掩藏方法及装置。方法包括:接收压缩编码后的视频码流,从该视频码流中提取出每一视频帧;对于每一视频帧,从该视频帧的每一slice中解析出该slice的描述信息,根据相邻两slice的描述信息,判断该相邻两slice之间是否有slice丢失,若该视频帧有slice丢失,则对该视频帧进行错误掩藏,错误掩藏完毕发送给解码器进行解码;若该视频帧无slice丢失,则直接将该视频帧发送给解码器进行解码。本申请更具方便性、灵活性、普适性,成本更低。
【专利说明】视频错误掩藏方法及装置

【技术领域】
[0001] 本申请设及视频处理【技术领域】,尤其设及视频错误掩藏方法及装置。

【背景技术】
[0002] 现有的基于解码端的视频错误掩藏策略嵌入在解码器内部,依赖于解码器,在解 码的同时进行差错检测,然后在每解完一帖时进行错误掩藏。
[0003] 现有的基于网络传输的视频错误掩藏方法,主要分为3大类;基于时域的错误恢 复方法;基于空域的错误恢复方法;基于识别的错误恢复方法。其中,基于时域的错误恢复 方法主要是W已经接收到的历史正确数据为基础,使用不同的权值或者判别方法从历史数 据中得到已受损宏块的最优的替代数据;基于空域的错误恢复方法主要W当前帖的未受损 部分为基础,根据受损部分周围的纹理特性、色彩特性、形状特性,通过图像修复的方法来 恢复出受损数据;基于识别的错误恢复方法是W人脸识别、场景识别算法为基层,对历史数 据中已经出现的人脸、场景等建模,并且对当前帖进行分析,识别出受损物体来自已经建模 物体的哪个部分,然后从模型中找出对应部分,补偿受损区域。
[0004] 对于基于解码端的视频错误掩藏策略,现有的方法只是将错误掩藏功能嵌入在解 码器内部,该样导致的结果是错误掩藏功能完全依赖于解码器,当对解码器进行更新时,错 误掩藏功能也就必须得做更新,没有灵活性。并且对于现有的方法,硬件解码器的更新也会 给产品增加更大的成本,其中包括错误掩藏功能更新的时间成本和人力成本。
[0005] 目前大多数视频通信是按字节数或者是宏块个数将数据分成slice (条带)进行 打包传输,如果网络传输出现抖动或者丢包,势必会对视频质量有极大影响。现有的方法大 多只是针对宏块的丢失,对实际的打包方式下所产生的丢包,比如较大面积的slice丢失, 恢复效果较差。
[0006] 现有的3类主要的视频错误掩藏方法都存在一定的问题,具体如下:
[0007] 一、对于基于时域的视频错误掩藏,现有的方法有的只是简单地拷贝前一帖相同 位置的数据,或者在前一帖到多帖中,用边界匹配的方法捜索边界最适合的块,该样的方法 恢复质量太差,或者耗时太久,难W在智能设备、嵌入式系统中满足实时性的需求。
[000引二、对于基于空域的视频错误掩藏,现有的方法只是使用了各种不同的插值方法, 用受损宏块边缘的像素来插值出受损的宏块数据。但目前大部分方法都偏于理论化,条件 过于理想化,例如受损宏块周围的宏块往往都是正确的,但在实际视频编码、网络传输中, 是不可能将每个宏块单独打包传输,并且很大一部分视频宏块滴编码是上下文相关,也就 是说如果前面的宏块丢失,后面的宏块就是收到也是无法正确解码使用的;并且插值算法 过于复杂,在嵌入式设备上也难W达到实时。
[0009]=、对于基于识别的视频错误掩藏,现有的方法只停留在实验室阶段,一个视频的 内容十分复杂,根本难W使用现有的方法对所有的场景物体进行建模,目前对人脸的建模 掩盖比较成熟,只能应用在有人脸出现并且人脸部分出现丢失的情况下,才能有效,并且对 未在历史帖中出现过的人脸部分也难W准确地估计,并且难W达到实时。


【发明内容】

[0010] 本申请提供视频错误掩藏方法及装置,W提高视频错误掩藏的普适性、灵活性。
[0011] 本申请的技术方案是该样实现的;
[0012] 一种视频错误掩藏方法,该方法包括:
[0013] 接收压缩编码后的视频码流,从该视频码流中提取出每一视频帖;
[0014] 对于每一视频帖,从该视频帖的每一条带slice中解析出该slice的描述信息,根 据相邻两slice的描述信息,判断该相邻两slice之间是否有slice丢失,若该视频帖有 slice丢失,则对该视频帖进行错误掩藏,错误掩藏完毕发送给解码器进行解码;若该视频 帖无slice丢失,则直接将该视频帖发送给解码器进行解码。
[0015] 所述对该视频帖进行错误掩藏包括:
[0016] 判断该视频帖是否为P帖,若为P帖,则针对该视频帖中的每一丢失slice中的每 一受损宏块,若该受损宏块为帖间宏块,则按照该宏块在该slice中的奇、偶位置,按照奇、 偶、奇的顺序依次对各受损帖间宏块进行错误掩藏。
[0017] 所述对各受损帖间宏块进行错误掩藏包括:
[0018] 对于任一受损帖间宏块,选择该宏块的各预设方向上的邻接可利用宏块的运动矢 量作为该宏块的候选运动矢量;
[0019] 分别利用每个候选运动矢量对该宏块进行预测;
[0020] 对于每次预测后得到的宏块,将该预测宏块与周围的所有可利用宏块进行压缩域 边界匹配,得到压缩域边界匹配值;
[0021] 当计算出所有预测宏块对应的压缩域边界匹配值时,将最小压缩域边界匹配值对 应的预测宏块作为错误掩藏宏块。
[0022] 所述计算出所有预测宏块对应的压缩域边界匹配值之后、将最小压缩域边界匹配 值对应的预测宏块作为错误掩藏宏块之前进一步包括:
[0023] 判断最小压缩域边界匹配值是否小于第一预设阔值,若是,则执行所述将最小压 缩域边界匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对于每次预测后得到的 宏块,针对该预测宏块的每条边界,根据该边界上的每个像素与本宏块内相邻像素的差值, 估计出每个像素的最小差值方向,根据该边界上每个像素的最小差值方向,计算出该边界 的最小差值方向,将该预测宏块的所有边界的最小差值方向相加,得到该预测宏块的最佳 方向匹配值,当计算出所有预测宏块的最佳方向匹配值时,将最小的最佳方向匹配值对应 的预测宏块作为错误掩藏宏块。
[0024] 所述计算出所有预测宏块的最佳方向匹配值之后、将最小的最佳方向匹配值对应 的预测宏块作为错误掩藏宏块之前进一步包括:
[0025] 判断最小的最佳方向匹配值是否小于第二预设阔值,若小于,则执行所述将最小 的最佳方向匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对当前受损帖间宏块 的邻接可利用宏块进行双线性插值,得到错误掩藏宏块。
[0026] 所述对该视频帖进行错误掩藏包括:
[0027] 判断该视频帖是否为I帖,若为I帖,则对该视频帖中每个丢失slice中的每个 受损宏块,判断该宏块的边缘是强边缘还是弱边缘,若是强边缘,则计算出该宏块的边界方 向,然后采用两点方向延伸插值方法对当前受损宏块进行错误掩藏;否则,w该视频帖的前 一帖为参考帖,在(〇,〇)运动矢量和该前一帖同位置处的运动矢量中选择一个作为最佳运 动矢量,采用最佳运动矢量对当前受损宏块进行错误掩藏。
[002引所述判断该宏块的边缘是强边缘还是弱边缘包括:
[0029] A、预先将prewitt算子的角度分为q方向,其中,q〉l ;
[0030] B、分别在当前受损宏块的左上、上、右上邻接可利用宏块中选择最下方的预设行 数的像素;分别在当前受损宏块的左下、下、右下邻接可利用宏块中选择最上方的预设行 数的像素;对于所选择的每个像素,计算该像素点的幅度和角度,其中,像素点的角度W prewitt算子的角度表示;
[0031] C、根据所选择的每个像素点的角度,将所选择的所有像素点分为q类;针对每类 像素点,计算该类像素点的幅度和mag[index],其中,index表示该类像素点的角度;在q个 mag[index]中,选择最大的mag[index]值,设为max_mag对应的index为当前受损宏块的 最佳方向,设该最佳方向index = best_arc ;
[003引 D、初始化num = 0,遍历mag[index],当(mag[index]〉0. 65*mag[best_arc] I I dir_ f lag = = 0 I I conditionl〉= 3)时,num = num+1 ;
[003引其中,"II "为或运算符号,dir_flag为宏块明显方向性标识,如果q个mag[index] 中的最大值max_mag远远大于其它q-1个值,则dir_flag = 1,conditionl为q个 mag[index]中除最大值max_mag之外的q-1个值中与max_mag接近的值的个数;
[0034] E、判断(max_mag > 1111*311111_1]13肖 I I num《化。&&max_mag > Th3 是否成立,若是, 确定当前受损宏块的边缘为强边缘,该受损宏块的边界方向估计为best_arc;否则,确定 当前受损宏块的边缘为弱边缘;
[003引 其中,为与运算符号,sum_mag为q个mag[index]的和值,化1、化1、化3为 预设阔值。
[0036] 所述采用两点方向延伸插值方法对当前受损宏块进行错误掩藏包括:
[0037] 对于当前受损宏块内的任一像素点,W该受损宏块的best_arc为斜率,W该像素 点为必经点划一条直线,选择该直线与左方向上第一个邻接可利用宏块第一次相交的点作 为第一插值点,选择该直线与右方向上第一个邻接可利用宏块第一次相交的点作为第二插 值点,将第一插值点与该像素点的距离作为第一权值,将第二插值点与该像素点的距离作 为第二权值,对该两个插值点进行插值计算,得到该像素点的错误掩藏像素值。
[003引一种视频错误掩藏装置,该装置包括:
[0039] 帖提取模块;接收压缩编码后的视频码流,从该视频码流中提取出每一视频帖;
[0040] 丢失检测及恢复模块:对于每一视频帖,从该视频帖的每一条带slice中解析 出该slice的描述信息,根据相邻两slice的描述信息,判断该相邻两slice之间是否有 slice丢失;若该视频帖有slice丢失,则对该视频帖进行错误掩藏,错误掩藏完毕发送给 解码器进行解码;若该视频帖无slice丢失,则直接将该视频帖发送给解码器进行解码。
[0041] 所述丢失检测及恢复模块对该视频帖进行错误掩藏包括:
[004引判断该视频帖是否为P帖,若为P帖,则针对该视频帖中的每一丢失slice中的每 一受损宏块,若该受损宏块为帖间宏块,则按照该宏块在该slice中的奇、偶位置,按照奇、 偶、奇的顺序依次对各受损帖间宏块进行错误掩藏。
[0043] 所述丢失检测及恢复模块对各受损帖间宏块进行错误掩藏包括:
[0044] 对于任一受损帖间宏块,选择该宏块的各预设方向上的邻接可利用宏块的运动矢 量作为该宏块的候选运动矢量;
[0045] 分别利用每个候选运动矢量对该宏块进行预测;
[0046] 对于每次预测后得到的宏块,将该预测宏块与周围的所有可利用宏块进行压缩域 边界匹配,得到压缩域边界匹配值;
[0047] 当计算出所有预测宏块对应的压缩域边界匹配值时,将最小压缩域边界匹配值对 应的预测宏块作为错误掩藏宏块。
[0048] 所述丢失检测及恢复模块计算出所有预测宏块对应的压缩域边界匹配值之后、将 最小压缩域边界匹配值对应的预测宏块作为错误掩藏宏块之前进一步包括:
[0049] 判断最小压缩域边界匹配值是否小于第一预设阔值,若是,则执行所述将最小压 缩域边界匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对于每次预测后得到的 宏块,针对该预测宏块的每条边界,根据该边界上的每个像素与本宏块内相邻像素的差值, 估计出每个像素的最小差值方向,根据该边界上每个像素的最小差值方向,计算出该边界 的最小差值方向,将该预测宏块的所有边界的最小差值方向相加,得到该预测宏块的最佳 方向匹配值,当计算出所有预测宏块的最佳方向匹配值时,将最小的最佳方向匹配值对应 的预测宏块作为错误掩藏宏块。
[0050] 所述丢失检测及恢复模块计算出所有预测宏块的最佳方向匹配值之后、将最小的 最佳方向匹配值对应的预测宏块作为错误掩藏宏块之前进一步包括:
[0051] 判断最小的最佳方向匹配值是否小于第二预设阔值,若小于,则执行所述将最小 的最佳方向匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对当前受损帖间宏块 的邻接可利用宏块进行双线性插值,得到错误掩藏宏块。
[0化2] 所述丢失检测及恢复模块对该视频帖进行错误掩藏包括:
[0053] 判断该视频帖是否为I帖,若为I帖,则对该视频帖中每个丢失slice中的每个 受损宏块,判断该宏块的边缘是强边缘还是弱边缘,若是强边缘,则计算出该宏块的边界方 向,然后采用两点方向延伸插值方法对当前受损宏块进行错误掩藏;否则,W该视频帖的前 一帖为参考帖,在(〇,〇)运动矢量和该前一帖同位置处的运动矢量中选择一个作为最佳运 动矢量,采用最佳运动矢量对当前受损宏块进行错误掩藏。
[0化4] 所述丢失检测及恢复模块判断该宏块的边缘是强边缘还是弱边缘包括:
[0化5] A、预先将prewitt算子的角度分为q方向,其中,q〉l ;
[0056] B、分别在当前受损宏块的左上、上、右上邻接可利用宏块中选择最下方的预设行 数的像素;分别在当前受损宏块的左下、下、右下邻接可利用宏块中选择最上方的预设行 数的像素;对于所选择的每个像素,计算该像素点的幅度和角度,其中,像素点的角度W prewitt算子的角度表示;
[0057] C、根据所选择的每个像素点的角度,将所选择的所有像素点分为q类;针对每类 像素点,计算该类像素点的幅度和mag [index],其中,index表示该类像素点的角度;在q个 mag[index]中,选择最大的mag[index]值,设为max_mag对应的index为当前受损宏块的 最佳方向,设该最佳方向index = best_arc ;
[0化引 D、初始化num = 0,遍历mag[index],当(mag[index]〉0. 65*mag[best_arc] I I dir_ f lag = = 0 I I conditionl〉= 3)时,num = num+1 ;
[0059] 其中,"II "为或运算符号,dir_flag为宏块明显方向性标识,如果q个mag[index] 中的最大值max_mag远远大于其它q-1个值,则dir_flag = 1,conditionl为q个 mag[index]中除最大值max_mag之外的q-1个值中与max_mag接近的值的个数;
[0060] E、判断(max_mag > 1111*311111_1]13肖 I I num《化。&&max_mag > Th3 是否成立,若是, 确定当前受损宏块的边缘为强边缘,该受损宏块的边界方向估计为best_arc;否则,确定 当前受损宏块的边缘为弱边缘;
[006U 其中,"&&"为与运算符号,sum_mag为q个mag[index]的和值,Thl、Thl、Th3为 预设阔值。
[0062] 所述丢失检测及恢复模块采用两点方向延伸插值方法对当前受损宏块进行错误 掩藏包括:
[0063] 对于当前受损宏块内的任一像素点,m亥受损宏块的best_arc为斜率,m亥像素 点为必经点划一条直线,选择该直线与左方向上第一个邻接可利用宏块第一次相交的点作 为第一插值点,选择该直线与右方向上第一个邻接可利用宏块第一次相交的点作为第二插 值点,将第一插值点与该像素点的距离作为第一权值,将第二插值点与该像素点的距离作 为第二权值,对该两个插值点进行插值计算,得到该像素点的错误掩藏像素。
[0064] 可见,本申请中,错误掩藏功能位于解码器之前,即在解码之前已经错误掩藏完 毕,错误掩藏功能独立于解码器之外,从而当解码器切换或更新时,错误掩藏功能不必随之 切换或更新,更具方便性、灵活性、普适性,成本更低。

【专利附图】

【附图说明】
[0065] 图1为本申请一实施例提供的视频错误掩藏方法流程图;
[0066] 图2为本申请实施例提供的错误掩藏模块检测视频帖是否有slice丢失的方法流 程图;
[0067] 图3为本申请实施例提供的错误掩藏模块对视频帖进行错误掩藏的方法流程图;
[0068] 图4为本申请实施例提供的错误掩藏模块对P帖内的受损帖间宏块进行错误掩藏 的方法流程图;
[0069] 图5为本申请实施例提供的错误掩藏模块对P帖内的受损帖间宏块通过压缩域边 界匹配方法进行错误掩藏的方法流程图;
[0070] 图6为本申请实施例提供的错误掩藏模块对P帖内的受损帖间宏块通过方向边界 匹配方法进行错误掩藏的方法流程图;
[0071] 图7为本申请实施例提供的对I帖进行错误掩藏的方法流程图;
[0072] 图8为本申请实施例提供的视频错误掩藏装置的组成示意图。

【具体实施方式】
[0073] 图1为本申请一实施例提供的视频错误掩藏方法流程图,其具体步骤如下:
[0074] 步骤101 ;客户端接收视频码流,将该视频码流传输到解复用模块,解复用模块对 该视频码流进行解析,得到该视频码流的文件信息如;文件格式等。
[0075] 步骤102 ;解复用模块将该视频码流传输到解析器,解析器从该视频码流中提取 出每一视频帖,将每一视频帖输出到错误掩藏模块。
[0076] 步骤103 ;对于每一视频帖,错误掩藏模块检测该视频帖是否有slice丢失,若是, 执行步骤105 ;否则,执行步骤104。
[0077] 步骤104 ;错误掩藏模块将该视频帖直接输出到解码器,解码器对该视频帖进行 解码后显示,本流程结束。
[007引步骤105 ;错误掩藏模块对该视频帖中的丢失slice进行错误掩藏,然后将该视频 帖输出到解码器,解码器对该视频帖进行解码后显示。
[0079] 图2为本申请实施例提供的错误掩藏模块检测视频帖是否有slice丢失的方法流 程图,其具体步骤如下;
[0080] 步骤201 ;对于视频帖的每一 slice,错误掩藏模块从该slice中解析出该slice 的描述信息。
[0081] slice的描述信息包括:该slice自身的描述信息和该slice包含的各宏块的描 述信息,宏块的描述信息如:宏块的坐标等。
[0082] 传输视频帖前,先将每一视频帖分成多个slice,然后分别将每个slice打成一个 包进行传输。每个slice中包含多个宏块。slice包由slice的描述信息与压缩编码后的 宏块数据组成。
[0083] 本步骤中,无需对宏块数据进行解码。
[0084] 步骤202 ;错误掩藏模块根据接收到的每相邻两个slice的描述信息,判断该相邻 两个slice之间是否有slice丢失,若是,执行步骤203 ;否则,执行步骤204。
[0085] 错误掩藏模块可将当前slice的描述信息中包含的起始宏块的宏块坐标与前一 个slice的描述信息中包含的最后一个宏块的宏块坐标进行比较,W判断是否有slice丢 失。
[0086] 步骤203 ;错误掩藏模块将该丢失slice中的所有宏块都标记为受损宏块,转至下 一 slice,返回步骤201。
[0087] 步骤204 ;错误掩藏模块转至下一 slice,返回步骤201。
[008引图3为本申请实施例提供的错误掩藏模块对视频帖进行错误掩藏的方法流程图, 其具体步骤如下:
[0089] 步骤301 ;错误掩藏模块通过步骤201?204确认当前视频帖存在丢失slice。
[0090] 步骤302 ;对于当前视频帖的每一丢失slice,错误掩藏模块根据该slice的邻接 可利用slice,判断当前slice的画面是否平滑,若是,执行步骤303 ;否则,执行步骤304。
[0091] 根据该slice的邻接可利用slice,判断当前slice的画面是否平滑属于成熟技 术,该里不再寶述。
[0092] 步骤303 ;错误掩藏模块在压缩域对当前视频帖的受损宏块进行错误掩藏,对当 前视频帖错误掩藏完毕,将当前视频帖输出到解码器,解码器对当前视频帖进行解码后显 示,本流程结束。
[0093] 步骤304 ;错误掩藏模块判断当前视频帖是否为I帖,若是,执行步骤305 ;否则, 执行步骤306。
[0094] 步骤305 ;对当前视频帖的每一受损宏块,错误掩藏模块检测该受损宏块的边缘 的强弱,若为强边缘,则采用两点方向延伸插值方法对当前受损宏块进行错误掩藏;若为弱 边缘,则采用运动矢量预测方法对当前受损宏块进行错误掩藏;对当前视频帖错误掩藏完 毕,将当前视频帖输出到解码器,解码器对当前视频帖进行解码后显示,本流程结束。
[0095] 步骤306 ;对于当前视频帖中的每一受损宏块,错误掩藏模块判断该受损宏块为 帖内宏块还是帖间宏块,若为帖内宏块,执行步骤307;若为帖间宏块,执行步骤308。
[0096] 步骤307 ;错误掩藏模块对该受损宏块采用双线性插值方法进行错误掩藏,错误 掩藏完毕,转至当前视频帖的下一受损帖内宏块,返回步骤307,直至所有受损帖内宏块都 错误掩藏完毕。
[0097] 双线性插值方法即,对受损宏块的预设方向的邻接可利用宏块进行双线性插值计 算,得到受损宏块的错误掩藏宏块。
[009引步骤308 ;错误掩藏模块根据各受损帖间宏块在当前帖的奇、偶位置,按照奇、偶、 奇的顺序依次对各受损帖间宏块采用压缩域的边界匹配,或方向边界匹配,或双线性插值 方法进行错误掩藏。
[0099] 目P,错误掩藏模块首先对各受损帖间宏块中在当前帖中处于奇数位置的宏块进行 错误掩藏,然后对处于偶数位置的宏块进行错误掩藏,最后重新对处于奇数位置的宏块进 行错误掩藏,W优化错误掩藏效果。
[0100] 图4为本申请实施例提供的错误掩藏模块对P帖内的受损帖间宏块进行错误掩藏 的方法流程图,其具体步骤如下:
[0101] 步骤401 ;对于当前P帖的所有受损帖间宏块,根据各受损帖间宏块的宏块坐标X、 Y,计算 X~Y~0、X~Y~1,X~Y~2。
[0102] 宏块坐标指的是W宏块为单位,宏块在当前帖中的坐标,其中,X为横坐标,Y为纵 坐标。
[0103] 步骤402;当对当前帖的所有受损帖间宏块的X、Y计算完毕时,错误掩藏模块确定 对所有受损帖间宏块进行错误掩藏的顺序为;X'Y'O == 1的宏块最先,X'Y'l == 1的宏 块次之,X'Y'O = = 2的宏块最后。
[0104] 步骤403 ;按照步骤402确定的错误掩藏顺序,错误掩藏模块依次从受损帖间宏块 中选择一个作为当前受损帖间宏块F。
[0105] 步骤404;错误掩藏模块选择当前受损帖间宏块F的N(N> 1)个邻接的可利用宏 块的运动矢量作为宏块F的候选运动矢量。
[0106] 例如;预先设定可W选择宏块F的左上、上、右上、下、左、右方向的6个邻接宏块的 运动矢量作为宏块F的候选运动矢量,若任一候选运动矢量不可用则将其丢弃。
[0107] 步骤405 ;错误掩藏模块分别利用宏块F的每个候选运动矢量对宏块F进行预测, 得到F' n(n二1、2、…、脚。
[0108] 步骤406 ;对于每个预测后的宏块F'。,错误掩藏模块将F'。与四周的可利用宏 块进行压缩域边界匹配,当对所有F' D(n = 1、2、…、脚的压缩域边界匹配都完成时,判断 其中最小的压缩域边界匹配结果是否小于预设第一阔值,若是,执行步骤470;否则,执行 步骤408。
[0109] 步骤407 ;错误掩藏模块将最小的压缩域边界匹配结果对应的F'。作为宏块F的 错误掩藏宏块,转至下一个受损帖间宏块,返回步骤404。
[0110] 步骤408 ;对于每个预测后的宏块F'。,错误掩藏模块将F'。与四周的可利用宏 块进行方向边界匹配,当对所有F' D(n=l、2、…、脚的方向边界匹配都完成时,判断其 中最小的方向边界匹配结果是否小于预设第二阔值,若是,执行步骤409 ;否则,执行步骤 410。
[0111] 步骤409 ;错误掩藏模块将最小的方向边界匹配结果对应的F'。作为宏块F的错 误掩藏宏块,转至下一个受损帖间宏块,返回步骤404;否则,执行步骤408。
[0112] 步骤410;错误掩藏模块采用双线性插值方法对当前帖间受损宏块F进行错误掩 藏,错误掩藏完毕,转至下一个受损帖间宏块,返回步骤404。
[0113] 图5为本申请实施例提供的错误掩藏模块对P帖内的受损帖间宏块通过压缩域边 界匹配方法进行错误掩藏的方法流程图,其具体步骤如下:
[0114] 步骤501 ;错误掩藏模块从当前受损帖间宏块F的N个候选运动矢量中依次选择 一个候选运动矢量M"(n= 1、2、…、脚,利用选择的候选运动矢量M。对宏块F进行预测,得 到预测后的宏块F'。。
[0115] 步骤502 ;针对宏块F'。的每个方向上的边界,错误掩藏模块在压缩域计算该边 界与该方向的邻接可利用宏块的边界的边界差值,将四个方向上的边界差值相加,得到候 选运动矢量M。对应的压缩域边界匹配值。
[0116] 宏块F'。共有四个边界;上边界、下边界、左边界、右边界,则分别根据W DCT值iscrete Cosine Transform,离散余弦变换)系数表示的宏块的像素值,计算宏块 F'。的上边界上的所有像素点与上邻宏块的下边界上的所有像素点的差值和,计算宏块 F'。的下边界上的所有像素点与下邻宏块的上边界上的所有像素点的差值和,计算宏块 F'。的左边界上的所有像素点与左邻宏块的右边界上的所有像素点的差值和,计算宏块 F'。的右边界上的所有像素点与右邻宏块的左边界上的所有像素点的差值和,将四个方向 的差值和相加,得到候选运动矢量M。对应的压缩域边界匹配值。
[0117] 步骤503 ;错误掩藏模块在计算得到的N个压缩域边界匹配值中选择最小的压缩 域边界匹配值。
[0118] 步骤504 ;错误掩藏模块判断最小的压缩域边界匹配值是否小于第一预设阔值, 若是,执行步骤505 ;否则,执行步骤506。
[0119] 步骤505 ;错误掩藏模块将最小的压缩域边界匹配值对应的候选运动矢量作为宏 块F的最佳运动矢量,将最佳运动矢量对应的预测后的宏块作为宏块F的错误掩藏宏块,本 流程结束。
[0120] 步骤506 ;错误掩藏模块开始采用方向边界匹配方法选择最佳运动矢量。
[0121] 本步骤506的具体实现见图6所示实施例。
[0122] 图6为本申请实施例提供的错误掩藏模块对P帖内的受损帖间宏块通过方向边界 匹配方法进行错误掩藏的方法流程图,其具体步骤如下:
[0123] 步骤601;针对当前受损帖间宏块F的任一预测后的宏块F'。(11=1、2、…、脚, 错误掩藏模块将宏块F'。的左上顶点作为原点,将水平向右方向作为X坐标的正方向,将 垂直向下方向作为y坐标的正方向;从宏块F'。的左上顶点开始在上边界上从左向右依次 选取像素点,针对每个选取的像素点(x,y)(设为上边界的第j个像素点)进行如公式(1) 所示的差值计算:
[0124]

【权利要求】
1. 一种视频错误掩藏方法,其特征在于,该方法包括: 接收压缩编码后的视频码流,从该视频码流中提取出每一视频帧; 对于每一视频帧,从该视频帧的每一条带slice中解析出该slice的描述信息,根据相 邻两slice的描述信息,判断该相邻两slice之间是否有slice丢失,若该视频帧有slice 丢失,则对该视频帧进行错误掩藏,错误掩藏完毕发送给解码器进行解码;若该视频帧无 slice丢失,则直接将该视频帧发送给解码器进行解码。
2. 根据权利要求1所述的方法,其特征在于,所述对该视频帧进行错误掩藏包括: 判断该视频帧是否为P帧,若为P帧,则针对该视频帧中的每一丢失slice中的每一受 损宏块,若该受损宏块为帧间宏块,则按照该宏块在该slice中的奇、偶位置,按照奇、偶、 奇的顺序依次对各受损帧间宏块进行错误掩藏。
3. 根据权利要求2所述的方法,其特征在于,所述对各受损帧间宏块进行错误掩藏包 括: 对于任一受损帧间宏块,选择该宏块的各预设方向上的邻接可利用宏块的运动矢量作 为该宏块的候选运动矢量; 分别利用每个候选运动矢量对该宏块进行预测; 对于每次预测后得到的宏块,将该预测宏块与周围的所有可利用宏块进行压缩域边界 匹配,得到压缩域边界匹配值; 当计算出所有预测宏块对应的压缩域边界匹配值时,将最小压缩域边界匹配值对应的 预测宏块作为错误掩藏宏块。
4. 根据权利要求3所述的方法,其特征在于,所述计算出所有预测宏块对应的压缩域 边界匹配值之后、将最小压缩域边界匹配值对应的预测宏块作为错误掩藏宏块之前进一步 包括: 判断最小压缩域边界匹配值是否小于第一预设阈值,若是,则执行所述将最小压缩域 边界匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对于每次预测后得到的宏块, 针对该预测宏块的每条边界,根据该边界上的每个像素与本宏块内相邻像素的差值,估计 出每个像素的最小差值方向,根据该边界上每个像素的最小差值方向,计算出该边界的最 小差值方向,将该预测宏块的所有边界的最小差值方向相加,得到该预测宏块的最佳方向 匹配值,当计算出所有预测宏块的最佳方向匹配值时,将最小的最佳方向匹配值对应的预 测宏块作为错误掩藏宏块。
5. 根据权利要求4所述的方法,其特征在于,所述计算出所有预测宏块的最佳方向匹 配值之后、将最小的最佳方向匹配值对应的预测宏块作为错误掩藏宏块之前进一步包括: 判断最小的最佳方向匹配值是否小于第二预设阈值,若小于,则执行所述将最小的最 佳方向匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对当前受损帧间宏块的邻 接可利用宏块进行双线性插值,得到错误掩藏宏块。
6. 根据权利要求1所述的方法,其特征在于,所述对该视频帧进行错误掩藏包括: 判断该视频帧是否为I帧,若为I帧,则对该视频帧中每个丢失slice中的每个受损宏 块,判断该宏块的边缘是强边缘还是弱边缘,若是强边缘,则计算出该宏块的边界方向,然 后采用两点方向延伸插值方法对当前受损宏块进行错误掩藏;否则,以该视频帧的前一帧 为参考帧,在(〇,〇)运动矢量和该前一帧同位置处的运动矢量中选择一个作为最佳运动矢 量,采用最佳运动矢量对当前受损宏块进行错误掩藏。
7. 根据权利要求6所述的方法,其特征在于,所述判断该宏块的边缘是强边缘还是弱 边缘包括: A、 预先将prewitt算子的角度分为q方向,其中,q>l ; B、 分别在当前受损宏块的左上、上、右上邻接可利用宏块中选择最下方的预设行数的 像素;分别在当前受损宏块的左下、下、右下邻接可利用宏块中选择最上方的预设行数的像 素;对于所选择的每个像素,计算该像素点的幅度和角度,其中,像素点的角度以prewitt 算子的角度表示; C、 根据所选择的每个像素点的角度,将所选择的所有像素点分为q类;针对每类像素 点,计算该类像素点的幅度和mag[index],其中,index表示该类像素点的角度;在q个 mag[index]中,选择最大的mag[index]值,设为max_mag对应的index为当前受损宏块的 最佳方向,设该最佳方向index = best_arc ; DN^J^p^num = 0, mag [index], ^ (mag [index] >0. 65*mag[best_arc] | | dir_f lag ==0 | | conditionl> = 3)时,num = num+1 ; 其中,"I I"为或运算符号,dir_flag为宏块明显方向性标识,如果q个mag[index]中的 最大值 max_mag 远远大于其它 q_l 个值,则 dir_f lag = 1,conditionl 为 q 个 mag [index] 中除最大值max_mag之外的q-1个值中与max_mag接近的值的个数; E、判断(max_mag > Thl*sum_mag| |num < Th2)&&max_mag > Th3 是否成立,若是,确定 当前受损宏块的边缘为强边缘,该受损宏块的边界方向估计为best_arc ;否则,确定当前 受损宏块的边缘为弱边缘; 其中,"&&"为与运算符号,811111_11^为9个11^[;[11(^]的和值,1111、1111、1113为预设 阈值。
8. 根据权利要求7所述的方法,其特征在于,所述采用两点方向延伸插值方法对当前 受损宏块进行错误掩藏包括: 对于当前受损宏块内的任一像素点,以该受损宏块的best_arc为斜率,以该像素点 为必经点划一条直线,选择该直线与左方向上第一个邻接可利用宏块第一次相交的点作为 第一插值点,选择该直线与右方向上第一个邻接可利用宏块第一次相交的点作为第二插值 点,将第一插值点与该像素点的距离作为第一权值,将第二插值点与该像素点的距离作为 第二权值,对该两个插值点进行插值计算,得到该像素点的错误掩藏像素值。
9. 一种视频错误掩藏装置,其特征在于,该装置包括: 帧提取模块:接收压缩编码后的视频码流,从该视频码流中提取出每一视频帧; 丢失检测及恢复模块:对于每一视频帧,从该视频帧的每一条带slice中解析出该 slice的描述信息,根据相邻两slice的描述信息,判断该相邻两slice之间是否有slice 丢失;若该视频帧有slice丢失,则对该视频帧进行错误掩藏,错误掩藏完毕发送给解码器 进行解码;若该视频帧无 slice丢失,则直接将该视频帧发送给解码器进行解码。
10. 根据权利要求9所述的装置,其特征在于,所述丢失检测及恢复模块对该视频帧进 行错误掩藏包括: 判断该视频帧是否为P帧,若为P帧,则针对该视频帧中的每一丢失slice中的每一受 损宏块,若该受损宏块为帧间宏块,则按照该宏块在该slice中的奇、偶位置,按照奇、偶、 奇的顺序依次对各受损帧间宏块进行错误掩藏。
11. 根据权利要求10所述的装置,其特征在于,所述丢失检测及恢复模块对各受损帧 间宏块进行错误掩藏包括: 对于任一受损帧间宏块,选择该宏块的各预设方向上的邻接可利用宏块的运动矢量作 为该宏块的候选运动矢量; 分别利用每个候选运动矢量对该宏块进行预测; 对于每次预测后得到的宏块,将该预测宏块与周围的所有可利用宏块进行压缩域边界 匹配,得到压缩域边界匹配值; 当计算出所有预测宏块对应的压缩域边界匹配值时,将最小压缩域边界匹配值对应的 预测宏块作为错误掩藏宏块。
12. 根据权利要求11所述的装置,其特征在于,所述丢失检测及恢复模块计算出所有 预测宏块对应的压缩域边界匹配值之后、将最小压缩域边界匹配值对应的预测宏块作为错 误掩藏宏块之前进一步包括: 判断最小压缩域边界匹配值是否小于第一预设阈值,若是,则执行所述将最小压缩域 边界匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对于每次预测后得到的宏块, 针对该预测宏块的每条边界,根据该边界上的每个像素与本宏块内相邻像素的差值,估计 出每个像素的最小差值方向,根据该边界上每个像素的最小差值方向,计算出该边界的最 小差值方向,将该预测宏块的所有边界的最小差值方向相加,得到该预测宏块的最佳方向 匹配值,当计算出所有预测宏块的最佳方向匹配值时,将最小的最佳方向匹配值对应的预 测宏块作为错误掩藏宏块。
13. 根据权利要求12所述的装置,其特征在于,所述丢失检测及恢复模块计算出所有 预测宏块的最佳方向匹配值之后、将最小的最佳方向匹配值对应的预测宏块作为错误掩藏 宏块之前进一步包括: 判断最小的最佳方向匹配值是否小于第二预设阈值,若小于,则执行所述将最小的最 佳方向匹配值对应的预测宏块作为错误掩藏宏块的动作;否则,对当前受损帧间宏块的邻 接可利用宏块进行双线性插值,得到错误掩藏宏块。
14. 根据权利要求9所述的装置,其特征在于,所述丢失检测及恢复模块对该视频帧进 行错误掩藏包括: 判断该视频帧是否为I帧,若为I帧,则对该视频帧中每个丢失slice中的每个受损宏 块,判断该宏块的边缘是强边缘还是弱边缘,若是强边缘,则计算出该宏块的边界方向,然 后采用两点方向延伸插值方法对当前受损宏块进行错误掩藏;否则,以该视频帧的前一帧 为参考帧,在(〇,〇)运动矢量和该前一帧同位置处的运动矢量中选择一个作为最佳运动矢 量,采用最佳运动矢量对当前受损宏块进行错误掩藏。
15. 根据权利要求14所述的装置,其特征在于,所述丢失检测及恢复模块判断该宏块 的边缘是强边缘还是弱边缘包括: A、 预先将prewitt算子的角度分为q方向,其中,q>l ; B、 分别在当前受损宏块的左上、上、右上邻接可利用宏块中选择最下方的预设行数的 像素;分别在当前受损宏块的左下、下、右下邻接可利用宏块中选择最上方的预设行数的像 素;对于所选择的每个像素,计算该像素点的幅度和角度,其中,像素点的角度以prewitt 算子的角度表示; C、根据所选择的每个像素点的角度,将所选择的所有像素点分为q类;针对每类像素 点,计算该类像素点的幅度和mag[index],其中,index表示该类像素点的角度;在q个 mag[index]中,选择最大的mag[index]值,设为max_mag对应的index为当前受损宏块的 最佳方向,设该最佳方向index = best_arc ; DN^J^p^num = 0, mag [index], ^ (mag [index] >0. 65*mag[best_arc] | | dir_f lag ==0 | | conditionl> = 3)时,num = num+1 ; 其中,"I I"为或运算符号,dir_flag为宏块明显方向性标识,如果q个mag[index]中的 最大值 max_mag 远远大于其它 q_l 个值,则 dir_f lag = 1,conditionl 为 q 个 mag [index] 中除最大值max_mag之外的q-1个值中与max_mag接近的值的个数; E、判断(max_mag > Thl*sum_mag| |num < Th2)&&max_mag > Th3 是否成立,若是,确定 当前受损宏块的边缘为强边缘,该受损宏块的边界方向估计为best_arc ;否则,确定当前 受损宏块的边缘为弱边缘; 其中,"&&"为与运算符号,811111_11^为9个11^[;[11(^]的和值,1111、1111、1113为预设 阈值。
16.根据权利要求15所述的装置,其特征在于,所述丢失检测及恢复模块采用两点方 向延伸插值方法对当前受损宏块进行错误掩藏包括: 对于当前受损宏块内的任一像素点,以该受损宏块的best_arc为斜率,以该像素点 为必经点划一条直线,选择该直线与左方向上第一个邻接可利用宏块第一次相交的点作为 第一插值点,选择该直线与右方向上第一个邻接可利用宏块第一次相交的点作为第二插值 点,将第一插值点与该像素点的距离作为第一权值,将第二插值点与该像素点的距离作为 第二权值,对该两个插值点进行插值计算,得到该像素点的错误掩藏像素。
【文档编号】H04N19/895GK104486633SQ201410630848
【公开日】2015年4月1日 申请日期:2014年11月11日 优先权日:2014年11月11日
【发明者】孙晔, 潘自丹, 张义轮, 朱春波 申请人:三星电子(中国)研发中心, 三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1