一种基于h264协议的分像素运动矢量计算方法和装置的制造方法_3

文档序号:9914780阅读:来源:国知局
元中获取即可,而无需再分多次从第二缓存模块中获取,从而提高了原始块像素的复用程度。
[0053]而后第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元缓存参考块像素。在本实施方式中,所述“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一 8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0054]在本实施方式中,8x8层不同8x8子块的第二整像素运动矢量的对应关系具体包括:记录相邻编码顺序的8x8层的8x8子块的第二像素运动矢量是否相同。例如8x8层包含有4个8x8层的8x8子块,分别是8x8子块a、8x8子块b、8x8子块c和8x8子块d。编码顺序依次是子块a、子块b、子块c和子块d。那么参考帧复用维护单元会依次判断8x8子块a与8x8子块b之间、8x8子块b与8x8子块c之间、8x8子块c和8x8子块d之间的第二像素运动矢量是否相同,并对结果予以记录。例如子块a和子块b的第二像素运动矢量相同,则说明这两个子块的参考像素为可以复用参考像素的8x8子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算到8x8层的8x8子块b的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的8x8层的8x8子块a的SAD代价,一方面无需重新获取8x8子块b的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。4x4层不同4x4子块的第三整像素矢量的对应关系同理可得,具体包括:记录相邻编码顺序的8x8层的8x8子块的第二像素运动矢量是否相同。而如果子块a和子块b的第二像素运动矢量不同,则说明两个子块之间的SAD代价的计算结果是不同的,因而在计算子块b的SAD代价时,需要从第三缓存模块中获取子块b对应的参考块像素,以便继续子块b的SAD计算。
[0055]在某些实施方式中,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0056]对于4x4层而言,包含有16个4x4层的4x4子块,以4x4层依据编码顺序排序的前4个4x4子块为例,分别是4x4子块1、4x4子块2、4x4子块3和4x4子块4。参考帧复用维护单兀会判断4x4子块I与4x4子块2之间、4x4子块2与4x4子块3之间、4x4子块3和4x4子块4之间的第二整像素运动矢量是否相同,并对结果予以存储记录。在获取4x4子块I的参考块像素时,第三获取单元会从第三缓存模块中获取一个数倍于4x4子块大小的参考块,并将所获取的参考块像素缓存于第二寄存器中,例如在本实施方式中,所获取的参考块的大小为32x10或10x32大小。在计算4x4子块2的SAD代价时,若参考帧复用维护单元所记录的4x4子块I与4x4子块2之间第三整像素运动矢量相同,则说明4x4子块I与4x4子块2的参考像素为可以复用参考像素的4x4子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算4x4子块2的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的4x4子块I的SAD代价,一方面无需重新获取4x4子块2的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。而如果4x4子块I与4x4子块2的第三整像素运动矢量不同,则说明它们所要获取的参考块像素是不同的,因而第三获取模块首先会在第二寄存器中搜索是否存在着4x4子块2所需的参考块像素,(由于缓存的是一个数倍于4x4子块大小的参考块,因而首先会在第二寄存器中进行搜索),若存在则第三获取模块从第二寄存器中获取4x4子块2对应的参考块像素,以便进行4x4子块2的SAD代价的计算,若不存在则第三获取模块会重新从第三缓存单元中获取一个数倍于4x4子块大小的参考块,并将所获取的参考块像素缓存于第二寄存器中(刷新寄存器),而后重复上述步骤从第二寄存器中重新获取4x4子块2所需的参考块像素。
[0057]而后SAD代价计算单元107从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价。SAD代价可以是一个数值,计算某个像素块的SAD代价所需的必要参数是该像素块对应的原始块像素和参考块像素,具体地,在H264协议中,对于每个参考块像素而言,SAD代价计算单元会在其附近插值出49个不同位置的参考块像素,并分别计算这49个不同位置的参考块像素对应的SAD代价,具体的算法依据H264协议。
[0058]而后SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量。SAD代价为表征该参考块像素是否为最优的参考块像素的物理量,SAD代价越小,说明参考块像素越接近原始块像素。SAD代价选取单元会从所插值出的49个不同位置的参考块像素中,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量,计算得到的分像素运动矢量即为所获取的原始块像素的分像素运动矢量。至此,分像素运动矢量计算完毕,可以进入下一步骤。
[0059]而后主控单元109接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。在本实施方式中,所述“主控单元将分像素运动矢量写入第一缓存模块中”包括:主控单元用于将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
[0060]请参阅图2,以及发明人还提供了一种基于H264协议的分像素运动矢量计算方法,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一 16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;其特征在于,所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;所述方法包括如下步骤:
[0061]首先进入步骤S201第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量。所述第一缓存模块为具有存储数据功能的电子元件,例如可以为ROM存储器。对于每一个16x16子块而言,都可以将其划分为“三层”结构,S卩16x16层、8x8层和4x4层。对于16x16层而言,即以16x16为单位进行划分的话,16x16子块可以被划分为I个16x16块,因而每一个16x16子块对应有I个16x16层的整像素运动矢量,即第一整像素运动矢量。对于8x8层而言,即以8x8为单位进行划分的话,16x16子块可以被划分为4个8x8块,因而每一个16x16子块对应有4个16x16层的整像素运动矢量,即第二整像素运动矢量。对于4x4层而言,即以4x4为单位进行划分的话,16x16子块可以被划分为16个4x4块,因而每一个16x16子块对应有16个4x4层的整像素运动矢量,即第三整像素运动矢量。综上,在计算每一个16x16子块的分像素运动矢量时,第一获取模块需要从所述第一缓存模块中获取I个16x16层、4个8x8层以及16个4x4层共计21个整像素运动矢量。
[0062]而后进入步骤S203参考帧复用维护单元记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系。在本实施方式中,在计算16x16层的分像素运动矢量时,也是基于8x8大小的块为单位进行计算的,因而第一整像素运动矢量和第二像素运动矢量的对应关系具体包括:记录相同位置的8x8子块的第一整像素运动矢量和第二像素运动矢量是否相同。
[0063]例如对于16x16层而言,包含有4个16x16层的8x8子块,分别是8x8子块1、8x8子块
2、8x8子块3和8x8子块4。对于8x8层而言,包含有4个8x8层的8x8子块,分别是8x8子块a、8x8子块b、8x8子块c和8x8子块cL8x8子块a与8x8子块I的位置相对应,8x8子块b与8x8子块2的位置相对应,8x8子块c与8x8子块3的位置相对应,8x8子块d与8x8子块4的位置相对应。则参考帧复用维护单元会判断8x8子块a与8x8子块I的整像素运动矢量是否相同,若相同则说明这两个子块的参考像素为可以复用参考像素的8x8子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算到8x8层的8x8子块a的SAD代价时,会跳过计算步
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1