基于共同处理元件执行视频稳定化和检测视频镜头边界的 技术 技术领域 本文中公开的主题一般涉及使用共同处理元件来执行视频稳定化和检测视频镜 头 (shot) 边界的技术。
背景技术 视频稳定化旨在改进数字摄影机 (video camera) 所捕捉的视频序列的视觉质量。 当摄像机 (camera) 是手持式的或安装在不稳定的平台上时, 捕捉的视频能够由于不想要 的摄像机运动而显得摇晃, 这导致降级的观众体验。视频稳定化技术能够用于消除或减少 捕捉的视频帧中不想要的运动。
视频通常由场景组成, 并且每个场景包括一个或多个镜头。镜头被定义为在单个 连续动作中由单个摄像机捕捉的帧序列。从一个镜头到另一镜头的变化也称为镜头转变, 包括两种关键类型 : 突变 (abrupt transition, CUT) 和渐变 (gradual transition, GT)。 视频镜头边界检测旨在检测镜头边界帧。视频镜头边界检测能够在各种应用中被应用, 例
如视频编码、 视频索引、 视频检索及视频编辑中的内部帧识别。 附图说明
在图中, 本发明的实施例以示例方式而不是以限制方式示出, 并且图中, 相似的引 用标号表示类似的要素。
图 1 示出根据一实施例的视频稳定化系统的框图格式。
图 2 示出根据一实施例的帧间主要运动估计模块的框图。
图 3 提供根据一实施例的为改进视频稳定化而执行的过程的流程图。
图 4 示出根据一实施例的镜头边界检测系统的框图。
图 5 提供根据一实施例的镜头边界判定方案的过程。
图 6 示出根据一实施例的执行视频稳定化和镜头边界检测的系统的框图。
图 7 示出使用搜索窗口来识别参考帧中匹配块的示例, 其中匹配块对应于当前帧 中的目标块。 具体实施方式
遍及此说明书对 “一个实施例” 或 “一实施例” 的引用指连同该实施例描述的特定 特征、 结构或特性包括在本发明的至少一个实施例中。 因此, 遍及此说明书各个位置中出现 的 “在一个实施例中” 或 “一实施例” 短语不一定全部指相同实施例。此外, 特定的特征、 结 构或特性可在一个或多个实施例中被组合。
图形处理系统可需要支持多个视频处理特征及各种视频编码或解码标准。 各种实 施例允许图形处理系统支持视频稳定化和视频镜头边界检测特征。具体而言, 各种实施例 允许图形处理系统为视频稳定化和镜头边界检测使用某些处理能力。在一些实施例中, 图形处理系统的下采样和块运动搜索特征用于视频稳定化和视频镜头边界检测。 特征的再使 用可降低制造图形处理系统的成本, 并且也降低图形处理系统的大小。
各种实施例能够根据多种标准来编码或解码视频或静态图像, 所述标准例如但不 限于 : MPEG-4 第 10 部分高级视频编解码器 (AVC)/H.264。H.264 标准已由联合视频小组 (Joint Video Team, JVT) 来制定, 它包括也称为 VCEG( 视频编码专家组 ) 的 ITU-T SG16 Q.6 和称为 MPEG( 运动图片专家组 ) 的 ISO-IEC JTC1/SC29/WG11(2003)。 另外, 实施例可在 多种静态图像或视频压缩系统中被使用, 包括但不限于面向对象的视频编码、 基于模型的 视频编码、 可伸缩视频编码及 MPEG-2( 从瑞士日内瓦的国际标准化组织可得到的 ISO/IEC 13818-1(2000))、 VCI( 从 SMPTE White Plains, NY 10601 可得到的 SMPTE421M(2006)) 及 MPEG-4、 MPEG-2 和 VCl 的变型。
图 1 以框图格式示出根据一实施例的视频稳定化系统 100。视频稳定化系统 100 包括帧间主要运动估计 (DME) 块 102、 轨迹 (trajectory) 计算块 104、 轨迹平滑块 106 及抖 动补偿块 108。 帧间 DME 块 102 要确定视频序列中两个连续帧之间的摄像机震动。 帧间 DME 块 102 要识别本地运动向量, 并随后基于那些本地运动向量来确定主要运动参数。轨迹计 算块 104 要通过那些确定的主要运动参数来运算运动轨迹。轨迹平滑块 106 要平滑运算出 的运动轨迹以提供更平滑的轨迹。抖动补偿模块 108 要降低更平滑的轨迹中的抖动。
图 2 示出根据一实施例的帧间主要运动估计模块 200 的框图。模块 200 包括帧 下采样块 202、 参考缓冲器 204、 块运动搜索块 206、 迭代最小二乘解答器块 208 及运动增大 (up-scaling) 块 210。
下采样块 202 要将输入帧减小 (down scale) 到更小大小。例如, 可使用大约 4-5 的下采样因子, 但能够使用其它值。在一些实施例中, 下采样块 202 提供大约为 160x120 个 像素的更小大小的帧。所得到的减小的帧具有更少数量的块。由于共同处理元件的设计, 块可以是 8x8、 16x16 或其它大小。通常, 使用 16x16 块。减小过程还减小块运动向量。在 各种实施例中, 运动向量表示帧之间的像素、 块或图像的垂直和水平位移。 减小帧还减小两 个帧之间的 x 和 y 运动。例如, 如果下采样因子是 4, 并且运动向量是 (20, 20), 则下采样的 运动向量将在减小的帧中大约是 (5, 5)。 结果, 更小图片上的窗口 / 区域受限块运动搜索能 够包括原始帧上更大的运动。相应地, 能够降低用于识别过程块的处理速度和处理资源。
下采样块 202 要将下采样的帧存储到参考缓冲器 204 中。参考缓冲器 204 可以是 可用于至少在执行视频稳定化和镜头边界检测中使用的存储器中的区域。 该区域可以是缓 冲器或缓冲器的一部分。 例如, 如果该区域是缓冲器的一部分, 则相同缓冲器的其它部分能 够由其它应用或过程同时或在其它时间来使用。在各种实施例中, 为了视频稳定化和镜头 边界检测使用了单个参考帧。因此, 参考缓冲器的大小能够设为存储一个帧。在参考缓冲 器每次更新时, 参考帧能够被替代为另一参考帧。
块运动搜索块 206 要从下采样块 202 接收下采样的当前帧, 并且还要从参考缓冲 器 204 接收下采样的以前参考帧。块运动搜索块 206 要识别预定义的搜索窗口内选择的块 的本地运动向量。例如, 识别的运动向量能够是与搜索窗口中相对于当前帧中目标块带有 最小绝对差和 (SAD) 的块相关联的运动向量。搜索窗口中的块可以是宏块或小的块, 例如 8x8 个像素, 但其它大小能够被使用。 在一些实施例中, 块大小是 16x16 个像素, 并且搜索窗 口能够设为 48x32 个像素。在各种实施例中, 块运动搜索块 206 不搜索与帧边界上的块相关联的运动向量。
在一些实施例中, 块运动搜索块 206 要确定对于每个帧的宏块的绝对差和 (SAD)。 例如, 为帧中的每个宏块确定 SAD 可包括比较参考帧的每个 16x16 像素宏块和当前帧中的 16x16 像素宏块。例如, 在一些实施例中, 能够比较参考帧的 48x32 像素搜索窗口内的所有 宏块和当前帧中的目标 16x16 像素宏块。能够逐一或以棋盘图案来挑选目标宏块。对于完 全搜索, 可比较 48x32 搜索窗口中的所有宏块和目标宏块。因此, 能够比较 32x16(512) 个 宏块。当在 48x32 搜索窗口内移动 16x16 宏块时, 能够有 32x16 个位置来移动。因此, 在此 示例中, 确定 512 个 SAD。
图 7 示出使用搜索窗口来识别参考帧中匹配块的示例, 其中匹配块对应于当前帧 中的目标块。示范块运动搜索可包括以下步骤。
(1) 选择当前帧中的多个目标块。假设目标块的坐标是 (x_i, y_i), 其中, i 是块 索引。能够逐一来选择当前帧中的目标块。但是, 能够使用其它选择技术, 例如以棋盘方式 选择它们。
(2) 对于当前帧中的目标块 i, 块运动搜索在搜索窗口中用于识别匹配块和获得 本地运动向量 (mvx_i, mvy_i)。在参考帧中对于目标块 i 查找搜索窗口中的匹配块能够包 括比较参考帧搜索窗口中的所有候选块和目标块, 并且带有最小 SAD 的一个块被认为是匹 配块。 (3) 在对于块 i 的块运动搜索后, 运算 : x′ _i = x_i+mvx_i 和 y′ _i = y_i+mvy_ i。随后, (x_i, y_i) 和 (x′ _i, y′ _i) 被视为一对。
(4) 在为当前帧中所有选择的目标块执行块运动搜索后, 获得多个对 (x_i, y_i) 和 (x′ _i, y′ _i)。
如图 7 中所示, 对于当前帧中的一个目标块 (x, y), 48x32 搜索窗口在参考帧中被 指定, 并且搜索窗口的位置能够由 (x, y) 来定中心。在通过块运动搜索在搜索窗口中查找 匹配块后, 获得对于目标块的本地运动向量 (mvx, mvy)。匹配块的坐标 (x′, y′ ) 是 x′ = x+mvx, y′= y+mvy。随后, (x, y) 和 (x′, y′ ) 被视为一对。
再次参照图 2, 迭代最小二乘解答器 208 要基于至少两个识别的本地运动向量来 确定主要运动参数。在一些实施例中, 迭代最小二乘解答器 208 要应用图 2 中所示的相似 性运动模型来近似主要帧间运动参数。相似性运动模型还能够以下面的等式 (1) 的格式来 编写。
其中 : (x′, y′ ) 表示参考帧中的匹配块坐标, (x, y) 表示当前帧中的块坐标, 以及 (a, b, c, d) 表示主要运动参数, 其中, 参数 a 和 b 涉及旋转, 以及参数 c 和 d 涉及转换。
例如, 只要一直被使用, 块坐标 (x′, y′ ) 和 (x, y) 能够被定义为左上角、 右下角 或块的块中心。对于其坐标是 (x, y) 并且识别的本地运动向量 ( 来自块 206) 是 (mvx, mvy)的块, 通过 x′= x+mvx 和 y′= y+mvy 而获得其匹配块的坐标 (x′, y′ )。在各种实施例 中, 帧的所有 (x, y) 和 (x′, y′ ) 对在等式 (1) 中被使用。迭代最小二乘解答器块 208 要 通过使用最小二乘 (LS) 技术解等式 (1) 来确定运动参数 (a, b, c, d)。
如果由迭代最小二乘解答器 208 考虑, 则异常 (outlier) 本地运动向量可不利地 影响主要运动的估计。 如果从包括前景对象或重复的类似图案的区域来选择当前帧中的一 些块, 则可由块运动搜索块 206 来识别异常本地运动向量。在各种实施例中, 迭代最小二乘 解答器 208 通过识别和从考虑中去除异常位置运动向量, 使用迭代最小二乘 (ILS) 解答器 来降低异常本地运动向量的影响。在此类实施例中, 在使用上面的等式 (1) 确定主要运动 参数后, 迭代最小二乘解答器 208 要确定当前帧中每个剩余块位置 (xi, yi) 的二乘估计误差 (SEE)。只要一直被使用, 块位置 (xi, yi) 能够是左上角、 右下角或块中心。 2 2
SEEi = (axi+byi+c-xi) +(-bxi+ayi+d-yi) (2)
本地运动向量在其对应二乘估计误差 (SEE) 满足等式 (3) 时被认为是异常。
其中,
T 是常数, 其能够根据经验设为 1.4, 但能够使用其它值, 以及
n 是当前帧中剩余块的数量。
上面的等式 (1)-(3) 重复进行, 直至未检测到异常本地运动向量, 或者剩余块的 数量小于预定义的阈值数量。例如, 阈值数量能够是 12, 但能够使用其它数量。在等式 (1)-(3) 的每次迭代中, 不考虑检测到的异常运动向量和与异常运动向量相关联的块。相 反, 考虑与剩余块相关联的运动向量。 在从考虑中去除异常本地运动向量后, 迭代最小二乘 块 208 执行等式 (1) 以确定运动参数。
运动增大块 210 要根据减小块 202 所应用的下采样因子的逆来增大转换运动参数 c 和 d。由于下采样过程不影响两个帧之间的旋转和缩放运动, 因此, 参数 a 和 b 可不被增 大。
再参照图 1, 轨迹计算块 104 要确定轨迹。例如, 轨迹计算块 104 要使用如在等式 (4) 中定义的累积运动来确定帧 j 的运动轨迹 Tj。
其中,
Mj 是帧 j 与 j-1 之间的全局运动矩阵, 并且基于主要运动参数 (a, b, c, d)。主要 运动参数 (a, b, c, d) 在等式 (4) 中用于当前帧 ( 称为帧 j)。
帧间全局运动向量包括摄像机预期运动和摄像机抖动运动。轨迹平滑块 106 要从 帧间全局运动向量来降低摄像机抖动运动。在各种实施例中, 轨迹平滑块 106 要通过使用 运动轨迹平滑来降低摄像机抖动运动。运动轨迹的低频分量被识别为摄像机预期移动。在 轨迹计算块 104 确定每个帧的运动轨迹后, 轨迹平滑块 106 要使用例如但不限于高斯滤波
器的低通滤波器来增加运动轨迹的平滑度。高斯滤波器窗口能够设置到 2n+1 帧。滤波过 程带来了 n 帧延迟。实验结果显示, n 能够设为 5, 但能够使用其它值。更平滑的运动轨迹 T′ j 能够使用等式 (5) 来确定。
其中, g(k) 是高斯滤波器核。高斯滤波器是低通滤波器,在指定其变化值 δ 后, 能够运算滤波器系数。在一些实施例中, 变化值设为 1.5, 但它能够 设为其它值。更大的变化值可产生更平滑的运动轨迹。
抖动补偿块 108 要补偿未平滑的原始轨迹中的抖动。摄像机抖动运动是轨迹的高 频分量。轨迹的高频分量是原始轨迹与平滑的轨迹之间的差别。抖动补偿块 108 要补偿高 频分量并提供更稳定化的当前帧。例如, 通过借助于抖动运动参数来扭曲 (warp) 当前帧 F(j), 可获得当前帧的更稳定化的帧表示, 帧 F′ (j)。
在执行第 j 个当前帧 F(j) 的轨迹平滑后, T(j) 与 T′ (j) 之间的运动差别 ( 在等 式 4 和 5 中示出 ) 被认为是抖动运动。抖动运动能够由抖动运动参数 (a′, b′, c′, d′ ) 来表示。下述内容描述从 T(j) 与 T′ (j) 之间的差别来确定 (a′, b′, c′, d′ ) 的方式。 假设 T(j) 的抖动运动参数是 (a1, b1, c1, d1), 并且 T′ (j) 的平滑的抖动运动参数是 (a2, b2, c2, d2)。设置 θ1 = arctan(b1/a1), 以及 θ2 = arctan(b2/a2), 抖动运动参数被确定 如下 :
a’ = cos(θ1-θ2), b’ = sin(θ1-θ2), c’ = c1-c2, d’ = d1-d2。
示范扭曲过程如下所述。
(1) 对于位于更稳定化帧 F′ (j) 中 (x, y) 的任何像素, 像素值表示为 F′ (x, y, j)。
(2) 当前帧 F(j) 中的对应位置 (x′, y′ ) 被确定为 x′= a′ *x+b′ *y+c′, y′= -b′ *x+a′ *y+d′。
(3) 如果 x′和 y′是整数, 则设置 F′ (x, y, j) = F(x′, y′, j)。否则, 使用位 置 (x′, y′ ) 周围的 F(j) 中的像素, 通过双线性插值来运算 F′ (x, y, j)。
(4) 如果 (x′, y′ ) 在当前帧 F(j) 外, 则设置 F′ (x, y, j) 到黑像素。
图 3 提供根据一实施例的改进视频稳定化的过程的流程图。块 302 包括执行帧大 小减小。例如, 有关下采样块 202 所述的技术可用于执行帧大小减小。
块 34 包括执行块运动搜索以识别两个或更多本地运动向量。例如, 有关块运动搜 索块 206 所述的技术可用于识别一个或多个本地运动向量。
块 306 包括确定主要运动参数。例如, 有关迭代最小二乘块 208 所述的技术可用 于确定主要运动参数。
块 308 包括增大主要运动参数。例如, 有关增大块 210 所述的技术可用于增大主 要运动参数。
块 310 包括确定轨迹。例如, 有关轨迹计算块 104 所述的技术可用于确定轨迹。
块 312 包括改进轨迹平滑度。例如, 有关轨迹平滑块 106 所述的技术可用于执行轨迹平滑。
块 314 包括通过扭曲当前帧以提供当前帧的更稳定版本而执行抖动补偿。例如, 有关抖动补偿块 108 所述的技术可用于降低抖动。
图 4 示出根据一实施例的镜头边界检测系统的框图。在各种实施例中, 来自视频 稳定化系统 100 使用的帧间主要运动估计块 102 的一些结果也由镜头边界检测系统 400 使 用。例如, 能够在视频稳定化和镜头边界检测之一或两者中使用从下采样块 202、 参考缓冲 器 204 和块运动搜索块 206 的任意之一可得到的相同信息。在一些实施例中, 镜头边界检 测系统 400 检测突然场景转变 ( 即, CUT 场景 )。镜头边界判定块 402 要确定帧是否是场景 改变帧。例如, 镜头边界判定块 402 可使用有关图 5 所述的过程来确定当前帧是否是场景 改变帧。
图 5 提供根据一实施例的镜头边界判定方案的过程。块 502 和 504 大致类似于相 应块 302 和 304。
块 506 包括确定对于当前帧的平均绝对差和 (SAD)。注意, 当前帧是减小的帧。例 如, 块 506 可包括从块运动搜索块 206 接收对于当前帧中每个宏块的 SAD, 并且确定当前帧 中所有宏块的 SAD 的平均值。
块 508 包括确定平均 SAD 是否小于阈值 T0。T0 能够根据经验对 16x16 块设为大 约 1600, 但能够使用其它值。如果平均 SAD 小于阈值, 则帧不是镜头边界帧。如果平均 SAD 不小于阈值, 则块 510 跟随块 508。
块 510 包括确定 SAD 大于阈值 T1 的块的数量。阈值 T1 能够根据经验设为平均 SAD 的 4 倍, 但能够使用其它值。
块 512 包括确定 SAD 大于阈值 T1 的块的数量是否小于另一阈值 T2。阈值 T2 能够 根据经验设为帧中目标块的总数的三分之二, 但能够使用 T2 的其它值。如果 SAD 大于阈值 T1 的块的数量小于阈值 T2, 则当前帧不被认为是镜头边界帧。如果块的数量等于或大于阈 值 T2, 则当前帧被认为是镜头边界帧。
图 6 示出根据一实施例的要执行视频稳定化和镜头边界检测的系统的框图。在各 种实施例中, 帧下采样和块运动搜索操作在硬件中实现。帧下采样和块运动搜索操作由视 频稳定化和镜头边界检测两个应用来共享。在各种实施例中, 对于视频稳定化 (VS), 轨迹 计算、 轨迹平滑、 抖动运动确定及抖动补偿操作在处理器运行的软件中执行。 在各种实施例 中, 镜头边界检测 (SBD) 在处理器运行的软件中执行, 其中镜头边界检测使用来自硬件实 现的帧下采样和块运动搜索操作的结果。 其它视频或图像处理技术能够利用下采样或块运 动搜索所提供的结果。
处理的图像和视频能够存储到任何类型的存储器中, 例如基于晶体管的存储器或 磁存储器。
帧缓冲器可以是存储器中的区域。存储器能够实现为易失性存储器装置, 例如但 不限于随机存取存储器 (RAM)、 动态随机存取存储器 (DRAM)、 静态 RAM(SRAM) 或其它类型的 基于半导体的存储器或磁存储器, 例如磁存储装置。
在设计带有例如视频编码、 解交织、 超分辨率、 帧率转换等等多视频处理特征的媒 体处理器时, 硬件再使用能够是节约成本和降低形状因素 (form factor) 的十分有效的方 式。 各种实施例大大降低了在相同媒体处理器上实现视频稳定化和视频镜头边界检测特征的复杂性, 特别是在媒体处理器已支持块运动估计功能时。
本文中所述的图形和 / 或视频处理技术可在各种硬件架构中实现。例如, 图形和 / 或视频功能性可集成在芯片组内。备选的是, 可使用离散图形和 / 或视频处理器。作为 仍有的另一实施例, 图形和 / 或视频功能可由包括多核处理器的通用处理器来实现。在又 一实施例中, 功能可在例如带有能够显示静态图像或视频的显示装置的便携式计算机和移 动电话的消费者电子装置中实现。消费者电子装置还可包括能够使用例如以太网 ( 例如, IEEE 802.3) 或无线标准 ( 例如, IEEE 802.11 或 16) 的任何标准而连接到例如因特网的任 何网络的网络接口。
本发明的实施例可实现为以下任意之一或其组合 : 使用母板互连的一个或多个微 芯片或集成电路、 硬件逻辑、 由存储器装置存储并且由微处理器运行的软件、 固件、 专用集 成电路 (ASIC) 和 / 或现场可编程门阵列 (FPGA)。术语 “逻辑” 可包括 ( 作为示例 ) 软件或 硬件和 / 或软件和硬件的组合。
本发明的实施例例如可提供为计算机程序产品, 所述计算机程序产品可包括其上 存储有一个或多个机器可运行指令的一个或多个机器可读媒体, 所述指令在由例如计算 机、 计算机的网络或其它电子装置的一个或多个机器运行时, 可促使所述一个或多个机器 实行根据本发明的实施例的操作。机器可读媒体可包括但不限于软盘、 光盘、 CD-ROM( 紧致 盘只读存储器 )、 磁光盘、 ROM( 只读存储器 )、 RAM( 随机存取存储器 )、 EPROM( 可擦除可编 程只读存储器 )、 EEPROM( 电可擦除可编程只读存储器 )、 磁卡或光学卡、 闪速存储器和 / 或 适用于存储机器可运行指令的其它类型的媒体 / 机器可读媒体。
图和上面的描述给出了本发明的示例。虽然示为多个全异的功能项目, 但本领域 技术人员将领会到, 一个或多个此类要素可很好地组合成单个功能要素。 备选的是, 某些要 素可分割成多个功能要素。来自一个实施例的要素可添加到另一实施例。例如, 本文中所 述过程的顺序可被改变并且不限于本文中所述的方式。另外, 任何流程图的动作无需以所 示顺序来实现 ; 所有动作也不一定要被执行。 此外, 不依赖其它动作的那些动作可与所述其 它动作并行来执行。然而本发明的范围决不受限于这些特定示例。许多变化是可能, 而无 论是否在说明书中明确给出, 例如结构、 维度和材料使用中的差别。 本发明的范围至少与随 附权利要求所给出的一样广。