一种亚像素插值方法及系统 【技术领域】
本发明涉及视频编码帧间预测领域, 尤其涉及一种亚像素插值方法及系统。背景技术 视频编码中为了提升压缩性能, 在运动搜索时采用亚像素精度。整像素点是指原 始图像或编码解码之后图像的原始像素点, 所谓亚像素点是指对若干个整像素点进行处理 所得的整像素点间的像素点, 即在两个整像素点中间的亚像素点可称之为二分之一亚像素 点, 在两个 1/2 亚像素点或一个整像素点和一个 1/2 亚像素点之间的亚像素点可称之为四 分之一亚像素点, 获取亚像素点的过程可称之为插值滤波。亚像素实际并不存在, 它由整 像素采用插值技术获取, 由于基于亚像素精度的搜索可以获得更佳的图像匹配块, 从而可 以进一步减少当前编码图像块的冗余信息, 提高编码效率, 因此, 这就使得运动搜索的性能 就与插值滤波器息息相关, 不同精度的亚像素采用何种插值滤波器也是一个需要考虑的问 题。
目前常用的有 4tap、 6tap 样条插值滤波器、 双线性插值滤波器等 ; 而在 1/4 亚像素 插值时, 有通过 1/2 亚像素进一步插值获取的, 也有直接由整像素插值获取的。前者不利于 并行计算, 而现行的后者技术, 一般都采用同一类型的插值滤波器, 使得其性能并不尽如人 意。
发明内容
本发明实施例的目的在于提出一种亚像素插值方法方法, 旨在解决现有技术插值 方法不利于并行计算, 没有针对不同精度的亚像素采用不同类型的插值滤波器, 编码性能 不是很高的问题。
本发明实施例方法是这样实现的, 一种亚像素插值方法, 所述方法包括步骤 :
构建基于四次卷积的 1/8, 2/8, 3/8, 5/8, 6/8, 7/8 亚像素 6tap 插值滤波器和基于 三次卷积的 4/8 亚像素 6tap 插值滤波器 ;
获取插值滤波器组 ;
获取经水平插值列扩展和垂直插值行扩展后的 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素像素值。
所述 “构建基于四次卷积的 1/8, 2/8, 3/8, 5/8, 6/8, 7/8 亚像素 6tap 插值滤波器” 具体为 :
构建四次卷积的基函数 :
其中, u 为基函数 f(u) 的自变量 ;
结合所述四次卷积的基函数的表达式, 获取 1/8 亚像素的插值滤波器 :
filter1/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 1/8 ;
结合所述四次卷积的基函数的表达式, 取 k 分别等于 k = 1, 2, 3, 5, 6, 7, 可得 1/8, 2/8、 3/8、 5/8, 6/8, 7/8 亚像素的插值滤波器 :
filterk/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = k/8。
所述 “构建基于三次卷积的 4/8 亚像素 6tap 插值滤波器” 具体为 :
构建三次卷积的基函数 :
其中, u 为基函数 f′ (u) 的自变量 ;
结合所述三次卷积的基函数的表达式, 获取 4/8 亚像素的插值滤波器 :
filter4/8 = [f′ (2+x), f′ (1+x), f′ (x), f′ (1-x), f′ (2-x), f′ (3-x)], x = 4/8。
所述 “获取插值滤波器组” 具体为 :
filter1/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 1/8
filter2/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 2/8
filter3/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 3/8
filter4/8 = [f′ (2+x), f′ (1+x), f′ (x), f′ (1-x), f′ (2-x), f′ (3-x)], x = 4/8
filter5/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 5/8
filter6/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 6/8
filter7/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 7/8
所述 “获取经水平插值列扩展和垂直插值行扩展后的 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素像素值” 具体为 :
经水平插值列扩展亚像素后的帧为 :
经垂直插值行扩展亚像素的帧为 : 其中 为经过列扩展以后的帧, filterk/8 为 k/8 像素插值滤波器, k = 1, 2,3, 4, 5, 6, 7,为 filterk/8 的转置矩阵, F(x, y) 为原始帧, weight(k) 为亚像素插值归其中, sum 为求和计算, Fk/8(x, y) 为最后获取的插 一化因子, weight(k) = sum(filterk/8), 值滤波后的帧, 。
本发明实施例的另一目的在于提出一种一种亚像素插值系统, 所述系统包括 :
插值滤波器构建装置 : 用于构建基于四次卷积的 1/8, 2/8, 3/8, 5/8, 6/8, 7/8 亚像 素 6tap 插值滤波器和基于三次卷积的 4/8 亚像素 6tap 插值滤波器 ;
插值滤波器组获取装置 : 用于获取基于四次卷积的 1/8, 2/8, 3/8, 5/8, 6/8, 7/8 亚 像素 6tap 插值滤波器和基于三次卷积的 4/8 亚像素 6tap 插值滤波器, 形成滤波器组 ;
亚像素像素值获取装置, 用于获取经水平插值列扩展和垂直插值行扩展后 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素像素值。
本发明实施例提出一种亚像素插值方法和系统, 可一次实现 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素的插值。设计滤波器组时, 不同精度的亚像素采用不同的滤波器原型, 使得不同滤波器间性能相互补充, 从而提升滤波器组的综合性能。 实验证明, 采用本发明的 滤波器组进行亚像素插值, 可以提升编码器的率失真性能, 这种优势在低码率下更为显著。 附图说明
图 1 是本发明实施例一种亚像素插值方法流程图 ; 图 2 是本发明实施例一种亚像素插值系统结构示意图。具体实施方式
为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图和实施例, 对 本发明进行进一步详细说明, 为了便于说明, 仅示出了与本发明实施例相关的部分。 应当理 解, 此处所描写的具体实施例, 仅仅用于解释本发明, 并不用以限制本发明。
本发明实施例提出一种亚像素插值方法和系统, 可一次实现 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素的插值。设计滤波器组时, 不同精度的亚像素采用不同的滤波器原型, 使得不同滤波器间性能相互补充, 从而提升滤波器组的综合性能。采用本发明的滤波器组 进行亚像素插值, 可以提升编码器的率失真性能, 这种优势在低码率下更为显著。
如图 1 所示为本发明实施例一种亚像素插值方法流程图, 所述方法包括以下步 骤: S1、 构建基于四次卷积的 1/8, 2/8, 3/8, 5/8, 6/8, 7/8 亚像素 6tap 插值滤波器和基 于三次卷积的 4/8 亚像素 6tap 插值滤波器。
S11、 基于四次卷积基函数, 结合 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素插值点与 整像素点分布特点构建滤波器。
四次卷积的基函数构建如下 :
其中, u 为基函数 f(u) 的自变量 ;
结合所述四次卷积的基函数的表达式, 获取 1/8 亚像素的插值滤波器 :
filter1/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 1/8 ;
同理结合所述四次卷积的基函数的表达式, 取 k 分别等于 k = 1, 2, 3, 5, 6, 7, 可得 1/8, 2/8、 3/8、 5/8, 6/8, 7/8 亚像素的插值滤波器 :
filterk/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = k/8。
实际应用时为了减少计算量, 可直接将浮点运算转化为整数运算 ; 此外还可以 利用近似法截断数据构建低阶滤波器 : 即浮点值用近似整数替换, 利用相同的基函数构 f(u), 构建低阶 n tap 滤波器, n ≤ 6。
S12、 基于三次卷积的基函数, 结合 4/8 亚像素插值点与整像素点分布特点构建滤 波器。
三次卷积的基函数构建如下 :
结合所述三次卷积的基函数的表达式, 可得 2/4 亚像素的插值滤波器 :
filter4/8 = [f′ (2+x), f′ (1+x), f′ (x), f′ (1-x), f′ (2-x), f′ (3-x)], x = 4/8。
实际应用时为了减少计算量, 可直接将浮点运算转化为整数运算 ; 此外还可以 利用近似法截断数据构建低阶滤波器, 即浮点值用近似整数替换, 利用相同的基函数构 f′ (u), 构建低阶 n tap 滤波器组, n ≤ 6。
在运动估计时受限于搜索算法原理, 使得不同精度的亚像素在运动估计具有不同 的影响, 故本发明实施例在 2/4 亚像素上采用更高阶的滤波器, 以提升插值效果。
S2、 获取插值滤波器组。
filter1/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 1/8
filter2/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 2/8
filter3/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 3/8
filter4/8 = [f′ (2+x), f′ (1+x), f′ (x), f′ (1-x), f′ (2-x), f′ (3-x)], x = 4/8
filter5/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 5/8
filter6/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 6/8
filter7/8 = [f(-2-x), f(-1-x), f(-x), f(1-x), f(2-x), f(3-x)], x = 7/8
S3、 获取经水平插值列扩展和垂直插值行扩展后的 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素像素值。
S31 : 水平插值, 扩展列亚像素 ;
其中 filterk/8 为 k/8 像素插值滤波器, k = 1 或 2 或 3 或 5 或 6 或 7,为filterk/8 的转置矩阵, F(x, y) 为原始帧,为经过列扩展以后的帧, weight(k) 为 :亚像素插值归一化因子, weight(k) = sum(filterk/8), 其中, sum 为求和计算。
S32 : 垂直插值, 扩展行亚像素 ;
其中 Fk/8(x, y) 为最后获取的插值滤波后的帧, 其中 filterk/8 为 k/8 亚像素插值 为经过列扩展以后的帧, 即 S31 处理后输出滤波器, k = 1 或 2 或 3 或 5 或 6 或 7,的值, weight(k) 为 : 亚像素插值归一化因子, weight(k) = sum(filterk/8), 其中, sum 为求 和计算, 。
由于各插值亚像素只与整像素有关, 而与其上一级亚像素无关, 故各精度亚像素 插值可并行计算。
本发明实施例提出一种亚像素插值方法, 该方法可一次实现 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素的插值。设计滤波器组时, 不同精度的亚像素采用不同的滤波器原型, 使得不同滤波器间性能相互补充, 从而提升滤波器组的综合性能。采用本发明的滤波器组 进行亚像素插值, 可以提升编码器的率失真性能, 这种优势在低码率下更为显著。
如图 2 所示是本发明实施例一种亚像素插值系统结构示意图。所述系统包括 :
插值滤波器构建装置 : 用于构建基于四次卷积的 1/8, 2/8, 3/8, 5/8, 6/8, 7/8 亚像 素 6tap 插值滤波器和基于三次卷积的 4/8 亚像素 6tap 插值滤波器 ;
插值滤波器组获取装置 : 用于获取基于四次卷积的 1/8, 2/8, 3/8, 5/8, 6/8, 7/8 亚 像素 6tap 插值滤波器和基于三次卷积的 4/8 亚像素 6tap 插值滤波器, 形成滤波器组 ;
亚像素像素值获取装置, 用于获取经水平插值列扩展和垂直插值行扩展后 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素像素值。
本发明实施例提出一种亚像素插值系统, 该系统可一次实现 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 亚像素的插值。设计滤波器组时, 不同精度的亚像素采用不同的滤波器原型, 使得不同滤波器间性能相互补充, 从而提升滤波器组的综合性能。采用本发明的滤波器组 进行亚像素插值, 可以提升编码器的率失真性能, 这种优势在低码率下更为显著。 本领域的普通技术人员可以理解, 实现上述实施例方法中的全部或部分步骤是可 以通过程序指令相关硬件来完成的, 所述的程序可以存储于一计算机可读取存储介质中, 所述的存储介质可以为 ROM、 RAM、 磁盘、 光盘等。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保护范围之内。