应用SSE指令集对视音频信号的对称卷积核进行卷积的方法技术

技术编号:3849831 阅读:420 留言:0更新日期:2012-04-11 18:40
本发明专利技术属于视频以及图像处理技术,具体涉及一种应用SSE指令集对视音频信号的对称卷积核进行卷积的方法。该方法将视音频输入信号的浮点信号序列S(n)划分为左中右三个区间,对左边和右边的区间,使用普通的C语言算法进行卷积处理;对中间区间内的信号按每四个相邻点一组利用SSE指令集进行卷积处理。该方法利用了卷积核的对称特性,有效地减少了一半的乘法运算;另外,由于SSE指令集可以一次对四个点进行计算,所以有效地减少了所指令的条数,在具体处理上没有任何条件转移指令,可以使CPU的流水线利用的更加充分。

【技术实现步骤摘要】

本专利技术属于视频以及图像处理技术,具体涉及一种应用SSE指令集对视音频信号 的对称卷积核进行卷积的方法。
技术介绍
在图像/视频处理软件中,经常需要对一些视音频信号进行一维的卷积,而且这 些信号经常是浮点数(通常为单精度浮点数),并且卷积核是对称的。由于这种卷积处理会 比较频繁,所以有许多算法的很大一部分的计算量是耗费在卷积上的,如果单纯用C语言 来实现卷积的话效率可能达不到算法的要求。下面先介绍一下本专利技术所涉及的卷积的概念。假如有一个离散的浮点卷 积核K(n),这个卷积核的长度是2 *R+1,这个卷积核根据中心点是对称的,也就是 说K(R-m) =K(R+m)。那么如果有一个离散的浮点信号序列S(n),信号长度为N,用 这个卷积核来卷积这个信号的序列之后得到的新信号T(n)的长度仍然为N,而且有Τ{ ) = γ^8\η-Κ + τη)·Κ{ηι),上式中的S*(η)可用下式表示m=0S(O) if η < 0S*(η) = S (η) if η 彡 Oand η 彡 N_l。S (N-I) if η > N-ISSE指令集是Intel在Pentium III处理器中率先推出的,SSE指令集包括了 70 条指令,其中包含提高3D图形运算效率的50条SIMD (单指令多数据技术)浮点运算指令、 12条MMX整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对目 前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强 化的作用。
技术实现思路
本专利技术的目的在于针对目前单纯使用C语言对视音频信号的对称卷积核进行卷 积速度慢的缺陷,提供一种应用SSE指令集对视音频信号的对称卷积核进行卷积的方法, 从而加快卷积计算的速度。本专利技术的技术方案如下一种应用SSE指令集对视音频信号的对称卷积核进行卷 积的方法,包括如下步骤(1)将视音频输入信号的浮点信号序列S(η)划分为左中右三个区间W,Le),[Le, Rs),[Rs, N);其中,Le与Rs的确定方法如下如果(N > R),则 Le = UPALIGN(R, 4),Rs = DOffNALIGN(N-R, 4),其中,UPALIGN(R, 4)表示将R对齐到下一个能被4整除的边界上,D0WNALIGN(N-R,4)表示将(N-R)对齐到上 一个能被4整除的边界上,如果(Le彡 Rs),则 Le = Rs = N,如果(N彡 R),则 Le = Rs = N,其中,N为信号长度,R为卷积核的半径;(2)对左边和右边的区间,使用普通的C语言算法进行卷积处理;(3)对中间区间内的信号按每四个相邻点一组利用SSE指令集进行卷积处理。进一步,如上所述的应用SSE指令集对视音频信号的对称卷积核进行卷积的方 法,其中,步骤(3)中利用SSE指令集进行卷积处理的具体过程如下①将一个类型为—ml28的变量xmm_sum_ps用_mm_setzero_ps指令赋值为0 ;②设当前四个点的第一个点的索引是n,首先将起始索引为left = n_R的相邻四 个点用_mm_l0adu_pS指令加载到类型为—ml28的变量Xmm_left_piXelS_pS中,然后将起 始索引为right = n+R的相邻四个点用_mm_l0adu_pS指令加载到类型为—ml28的变量 xmm_ri ght_p ixe1s_ps 中;③令i = 0,处理下面的循环a.将 xmm_left_pixels_ps 与 xmm_right_pixe 1 s_ps 的内容用 _mm_add_ps 指令相 力口起来放入至Ij xmm_left_pixels_ps 中;b.用 _mm_setl_ps 指令将 K(i)赋值到类型为—ml28 的变量 xmm_kernel_coef_ ps 中,然后用 _mm_mul_ps 指令将 xmm_left_pixels_ps 与 xmm_kernel_coef_ps 相乘,结果 放入 xmm_left_pixels_ps 中,用 _mm_add_ps 指令将 xmm_left_pixels_ps 的内容力口入至Ij xmm_sum_ps 中;c.用_mm_load_ss指令将S (left+4)加载到类型为—ml28的临时变量xmm_tmp_ ps中,然后再利用_mm_move_ss指令与_mm_shuffle_ps指令将S(left+4)移入到xmm_ left_pixels_ps,并将 S(Ieft)移走;d.用步骤 c 的方法将 S (right-Ι)移入到 xmm_right_pixels_ps,并将 S (right+3) 移出;e.令 left = left+1, right = right_l,i = i+1,如果 i < R 则跳转到步骤 a,否 则,进行步骤④的处理;④用_mm_l0ad_ps指令将信号中起始索引为η的相邻四个点加载到Xmm_left_ pixels_ps 中;⑤用_mm_setl_ps 指令将 K (R)设置到变量 xmm_kernel_coef_ps 中,然后用 _mm_ mul_ps 指令将 xmm_left_pixels_ps 与 xmm_kernel_coef_ps 相乘的结果放入 xmm_left_ pixels_ps,再用 _mm_add_ps 将 xmm_left_pixels_ps 的内容力口入至丨J xmm_sum_ps 中,最后将 xmm_sum_ps中的内容赋值到目标信号的相应位置上。本专利技术的有益效果如下本专利技术将视音频输入信号的浮点信号序列S(n)划分为 左中右三个区间,将计算量最重的中间区间内的信号按每四个相邻点一组利用SSE指令集 进行卷积处理,最后就可以得到所有点的卷积结果。这种方法利用了卷积核的对称特性,有 效地减少了一半的乘法运算;另外,由于SSE指令集可以一次对四个点进行计算,所以有效 地减少了所指令的条数,在具体处理上没有任何条件转移指令,可以使CPU的流水线利用 的更加充分。附图说明图1为本专利技术的总体方法流程图;图2为对中间区间内的信号利用SSE指令集进行卷积处理的流程图。 具体实施例方式下面结合附图和具体实施例对本专利技术进行详细的描述。如图1所示,应用SSE指令集对视音频信号的对称卷积核进行卷积的方法,包括如 下步骤(1)将视音频输入信号的浮点信号序列S(η)划分为左中右三个区间W,Le),[Le, Rs),[Rs, N);(2)对左边和右边的区间,使用普通的C语言算法进行卷积处理;(3)对中间区间内的信号按每四个相邻点一组利用SSE指令集进行卷积处理。在步骤(1)中三个区间的划分,涉及Le与Rs两个参数的确定,Le与Rs的计算方 法如下if (N > R) {Le = UPALIGN (R, 4);Rs = DOffNALIGN (N-R, 4);if (Le 彡 Rs)Le = Rs = N;}else {Le = Rs = N ;}在上述算法中,UPALIGN(n,m)表示将η对齐到下一个能被m整除的边界上,UPALIGN(R, 4)即表示将R对齐到下一个能被4整除的边界上;DOWNALIGN(n,m)表示将η对 齐到上一本文档来自技高网...

【技术保护点】
一种应用SSE指令集对视音频信号的对称卷积核进行卷积的方法,包括如下步骤:(1)将视音频输入信号的浮点信号序列S(n)划分为左中右三个区间[0,Le),[Le,Rs),[Rs,N);其中,Le与Rs的确定方法如下:如果(N>R),则Le=UPALIGN(R,4),Rs=DOWNALIGN(N-R,4),其中,UPALIGN(R,4)表示将R对齐到下一个能被4整除的边界上,DOWNALIGN(N-R,4)表示将(N-R)对齐到上一个能被4整除的边界上,如果(Le≥Rs),则Le=Rs=N,如果(N≤R),则Le=Rs=N,其中,N为信号长度,R为卷积核的半径;(2)对左边和右边的区间,使用普通的C语言算法进行卷积处理;(3)对中间区间内的信号按每四个相邻点一组利用SSE指令集进行卷积处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:见良郑鹏程刘铁华孙季川
申请(专利权)人:新奥特北京视频技术有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1