【发明内容】
本发明要解决的技术问题之一,在于提供一种双斜栅扫描实现对角线匹配运动估计的匹配方法,克服了背景技术中匹配准则的计算量大,从而使得硬件实现的难度大大增加的问题。
本发明上述技术问题是这样实现的:双斜栅扫描实现对角线匹配运动估计的匹配方法,包括如下步骤:
步骤10、将每个要传输的图像帧作为当前帧,已传输的用于参照的图像帧作为参考帧,每帧图像划分为自然数N×N的宏块,在时序控制模块的控制下,根据交叉寄存器所需的双斜栅顺序分别读取所述当前帧的N×N的宏块和所述参考帧中给定对应搜索区域的所有宏块到当前块存储单元和参考块存储单元中;所述当前块存储单元和参考块存储单元是交叉寄存器组结构;
步骤20、时序控制模块控制当前块存储单元和参考块存储单元的交叉寄存器组将各对应宏块所需图像像素送入阵列处理单元进行对角线匹配计算;所述对角线匹配计算即由阵列处理单元计算当前块存储单元的一宏块和参考块存储单元的一宏块之间的所有图像像素点的差值并累加出最终的SAD值;
步骤30、当所有当前块存储单元和参考块存储单元对应的各宏块进行对角线匹配计算得到的对应SAD值后,由编码模块根据其各个宏块的SAD值得出最终的位移矢量。
本发明要解决的技术问题之二,在于提供一种双斜栅扫描实现对角线匹配运动估计的匹配电路结构。
该技术问题之二是这样实现的:双斜栅扫描实现对角线匹配运动估计的匹配电路结构,包括编码模块,时序控制模块,阵列处理单元、当前块存储单元以及参考块存储单元,所述时序控制模块连接有阵列处理单元和编码模块;所述当前块存储单元和参考块存储单元均与所述阵列处理单元连接;所述阵列处理单元与编码模块连接。
其中所述阵列处理单元具体包括:PE1阵列单元、PE2阵列单元、用于保存操作数和运算结果信息的第一寄存器、加法器、累加器;所述PE1阵列单元和PE2阵列单元均与所述第一寄存器相连,所述第一寄存器依次连接加法器和累加器,所述累加器将其运算结果传送给所述编码模块;所述PE1阵列单元和PE2阵列单元内部结构相同,具体为:用于保存操作数和运算结果信息的第二寄存器、减法器,所述第二寄存器与减法器相连接。
本发明具有如下优点:1.使用对角线匹配算法可以相较于其他常见算法在大量减少计算量的同时保持运动估计的效果;2.使用可复用资料的交叉寄存器组结构配合一种双斜栅扫描方式,可以充分复用交叠的数据,高效的实现对角线匹配算法。
【附图说明】
图1A为背景技术中当前块和参考块所有的像素进行全匹配的结构示意图。
图1B为背景技术中当前块和参考块所有的像素进行对角线匹配的结构示意图。
图1C为背景技术中当前块和参考块所有的像素进行框架匹配的结构示意图。
图1D为背景技术中当前块和参考块所有的像素进行十字匹配的结构示意图。
图2为本发明实现对角线匹配运动估计的匹配电路结构示意图。
图3为本发明实现对角线匹配运动估计的匹配电路结构中阵列处理单元的具体结构示意图。
图4为本发明阵列处理单元中PE1阵列单元和PE2阵列单元的具体结构示意图。
图5为本发明双斜栅扫描实现对角线匹配运动估计的匹配方法流程示意图。
图6本发明双斜光栅对搜索区域的各候选块进行扫描原理。
图7本发明交叉寄存器的结构示意图。
【具体实施方式】
参照图2,双斜栅扫描实现对角线匹配运动估计的匹配电路结构,包括当前块存储单元10、参考块存储单元20、阵列处理单元30、编码模块40、时序控制模块50,所述时序控制模块50连接有阵列处理单元30和编码模块40;所述当前块存储单元10和参考块存储单元20均与所述阵列处理单元连接30;所述阵列处理单元30与编码模块40连接。
其中如图3所示,所述阵列处理单元具体包括:PE1阵列单元31、PE2阵列单元32、用于保存操作数和运算结果信息的第一寄存器33、加法器34、累加器35;所述PE1阵列单元31和PE2阵列单元32均与所述第一寄存器33相连,所述第一寄存器33依次连接加法器34和累加器35,所述累加器35将其运算结果传送给所述编码模块40。如图4所示,所述PE1阵列单元31和PE2阵列单元32具体包括:用于保存操作数和运算结果信息的第二寄存器311、减法器312,所述第二寄存器311与减法器312相连接。
其中当前块存储单元:用于读取图像当前帧的N×N的宏块。
参考块存储单元:用于读取图像参考帧中给定对应搜索区域的所有宏块。
时序控制模块:用于控制当前块存储单元和参考块存储单元的交叉寄存器组将各对应宏块所需图像像素送入阵列处理单元中。
阵列处理单元:用于进行对角线匹配的计算。
编码模块:将根据其各个宏块的SAD值得出最终的位移矢量。
加法器:是用于将一候选块图像像素点的SAD值相加并输出到累加器。
累加器:负责在所有候选块的图像像素点的SAD值计算完毕后累加得出最后的SAD,该模块由中心控制器来控制,并在计算完每个候选块后复位清零。
见图5所示,双斜栅扫描实现对角线匹配运动估计的匹配方法,包括如下步骤:
步骤10、将每个要传输的图像帧作为当前帧,已传输的用于参照的图像帧作为参考帧,每帧图像划分为自然数N×N的宏块,在时序控制模块的控制下,根据交叉寄存器所需的双斜栅顺序分别读取所述当前帧的N×N的宏块和所述参考帧中给定对应搜索区域的所有宏块到当前块存储单元和参考块存储单元中;所述当前块存储单元和参考块存储单元是交叉寄存器组结构;
步骤20、时序控制模块控制当前块存储单元和参考块存储单元的交叉寄存器组将各对应宏块所需图像像素送入阵列处理单元进行对角线匹配计算;所述对角线匹配计算即由阵列处理单元计算当前块存储单元的一宏块和参考块存储单元的一宏块之间的所有图像像素点的差值并累加出最终的SAD值;
步骤30、当所有当前块存储单元和参考块存储单元对应的各宏块进行对角线匹配计算得到的对应SAD值后,由编码模块根据其各个宏块的SAD值得出最终的位移矢量。
其中所述根据双斜栅顺序读取所述参考帧中给定对应搜索区域的所有宏块具体为:
对于N×N的宏块,假设搜索区间为[-p,p]时,通过双斜光栅对搜索区域的各候选块进行扫描搜索,所述各候选块为所述参考帧中给定对应搜索区域的各宏块,虽然有4*p-2个最边沿的候选块没有扫描,但是由于这些候选块都处于估计成功概率最小的边沿而且数量小,所以对搜索效果造成影响很小。当采用这种近似全搜索方式,在搜索的过程中,如图6所示,斜光栅在搜索斜对角线的奇数行时,以从左下向右上的顺序对各候选块进行移动搜索;斜光栅在搜索斜对角线的偶数行时,以从右上向左下的顺序对各候选块进行移动搜索;当斜光栅每搜索到每行的末尾时,需向右下移动一行像素,接着按相应顺序继续搜索。搜索过程中,整个搜索区域共有2N个像素。在斜对角行中从第i块移到第i+1块、从上一行最后的第j块到下一行开始的第j+1块或者在偶数行中从第k块移到第k+1块的过程中,斜对角行的相邻候选块之间总有N-1个像素相同,因此仅需改变此斜对角行的一个像素和另一对角行的全部像素。对于运算结构的设计,也充分利用上述的数据交叠,保留重复的数据。当进行下一候选计算时,仅调入新像素的数据,而重复的数据仅在结构内部作相应的移位操作即可。这样,不仅可以降低对搜索区域存储器的访问次数而且还可以降低运算阵列同存储器之间的带宽。
如图7所示,为本发明交叉寄存器的结构示意图。图中R1~R16均代表一个8bit寄存器,所有箭头都代表数据流向,圆圈中的A、B、C代表不同的开关;其交叉寄存器组结构配合所述双斜栅扫描方式来完成当前块存储单元和参考块存储单元对图像数据的读取。
双斜栅扫描时,各候选块的移动有三种:左上到右下,右上到左下,左下到右上。在针对双斜光栅扫描方式的数据流特点,使用以下三种不同状态的交替来完成相应的移位操作:
(1)第一状态:开关A通,B和C都断开,实现斜光栅在搜索斜对角线的奇数行时,从左下向右上的顺序对各候选块进行移动搜索。
(2)第二状态:开关B通,A和C都断开,实现斜光栅在搜索斜对角线的偶数行时,从右上向左下的顺序对各候选块进行移动搜索。
(3)第三状态:开关C通,A和B都断开,实现奇数和偶数行之间转换时,从左上到右下的顺序对各候选块进行移动搜索。
在扫描过程中,上述三种状态需要交替变换,顺序是:A->C->B->C->A......这样一直循环到扫描结束,从而实现了参考块交叠数据的重用。
如图3所示,所述的阵列处理单元包括PE1阵列单元、PE2阵列单元、用于保存操作数和运算结果信息的第二寄存器、加法器、累加器;为了充分提高PE1阵列单元、PE2阵列单元利用率和充分利用输入带宽,PE1阵列单元、PE2阵列单元具体工作流程如下:
假设Rx为交叉寄存器,当交叉寄存器组读入第一个候选块(各候选块中的一候选块)时,读入顺序为从R1~R16(交叉寄存器组是由R1~R16组成)。当R1~R8写满后,数据开始写入R9的同时PE1和PE2阵列单元开始计算R1、R2与对应当前候选块中图像像素点的SAD值;其中像素点的SAD值的计算公式为:
其中S表待估计进行对角线匹配的宏块,下标k表示当前宏块,下标k+1表示参考宏块;N为要匹配的宏块的宽度和高度,即宏块大小为N×N;S(x,y)表示匹配块的第x行第y列的像素点的值;
表示从左上角到右下角的点进行差值计算并将每个位置点的当前块和参考块像素差值累加起来;
表示从右上角到左下角的点进行差值计算并将每个位置点的当前块和参考块像素差值累加起来;
表示从左上角到右下角的点进行差值计算并将当前宏块和参考宏块的每个位置的图像像素点差值累加起来;
表示从右上角到左下角的点进行差值计算并将当前宏块和参考宏块的每个位置的图像像素点差值累加起来;所以整个公式的意思就是将两个交叉对角线位置上当前宏块和参考宏块图像像素点的差值累加即SAD值。
其中如图4所示,所述PE1阵列单元和PE2阵列单元具体包括:用于保存操作数和运算结果信息的第二寄存器、减法器,PE阵列单元将当前块存储单元和参考块存储单元对应的各宏块的图像像素点先保存在第二寄存器中,再通过减法器进行运算,再通过取绝对值得到其对应图像像素点的SAD值;
然后当数据开始写入R10的同时,PE1和PE2阵列单元计算R3、R4与对应当前候选块中图像像素点的SAD值;如此,数据每往前写一个点,PE阵列就往前计算两个点,所以当R16被写入数据的同时,PE1和PE2阵列单元计算的是R13、R14两点;然后,当PE1和PE2阵列单元计算R15、R16两点的同时,第一块的计算结束,而同时,交叉寄存器组中出现数据重叠的对角行里唯一需要更新的点的更新数据被读入;在下一个周期里,PE1和PE2阵列单元开始计算数据交叠对角行的前两个点,而另一对角行中的第一点又被更新;然后同前一宏块相同,当PE1和PE2阵列单元计算到此块的最后两点时,下一块的数据重叠对角行里需要更新的那个点的数据又正好被更新,如此循环,一直到所有候选块计算完毕。在计算的过程中,每个周期向交叉寄存器输入一个像素,在每个宏块的交叉数据输入完毕后立刻计算出结果的同时更新下一宏块的数据,输入不需中断;而且除了开始8的周期的准备时间以外,PE的利用率一直为100%。
总之,双斜栅扫描实现对角线匹配运动估计的匹配方法,相比于全匹配SAD减少了75%的计算量,而运动估计的峰值信噪比在全搜索时只是减少了2.08%,所以基本判定对角线匹配算法相较于其他常见算法在大量减少计算量的同时保持运动估计的效果。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。