专利名称:数据载入方法及装置的制作方法
技术领域:
本发明涉及图像处理领域 ,特别涉及一种数据载入方法及装置。
背景技术:
视频编解码中,通常将图像分割成若干块作为基本的处理单位,该块可以等于或者小于通常意义的宏块。对于当前帧中的当前块,可以根据亮度数据对当前块进行运动估计而获得当前块的运动矢量MV,然后根据该运动矢量MV将参考帧中与当前块相对应的参考块的色度数据从外部存储器载入到片内存储器中,以供后续进行的运动补偿之类的过程使用。由于将参考块数据从外部存储器载入到片内存储器需要花费一定的总线延迟时间,为了将数据载入过程和运动矢量计算过程之间的时间调度进行优化,现有的一种数据载入方法为第一,在对当前块处理之前,预先将参考帧中固定长度的多个参考块数据同时载入到片内缓冲器中进行缓存;第二,对当前块进行运动估计,获得当前块的运动矢量;第三,根据当前块的运动矢量,判断预先缓存的参考块数据中,是否命中了与当前块对应的参考块数据;第四,如果命中,则从片内缓冲器中载入与当前块对应的参考块数据;如果未命中,则从外部存储器中载入当前块的参考块数据。在实现本发明的过程中,发明人发现现有技术至少存在以下问题上述方法在包括当前块在内的相邻若干块的运动相关性较高时,会有较高的缓存命中率;但是如果包括当前块在内的相邻若干块的运动相关性较低,图像的运动规律性不强时,缓存命中率较差,此时,由于对于每个当前块来讲,都预先载入了固定长度的参考块数据到片内缓冲器中,反而造成了总线访问的增加,使得总线占用时间与编解码效率发生矛盾。
发明内容
为了解决图像的运动规律性不强时,可能造成的总线访问较长的问题,本发明实施例提供了一种数据载入方法及装置。所述技术方案如下第一方面,提供了一种数据载入方法,所述方法包括从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据;获取当前块的运动矢量;根据所述当前块的运动矢量判断所述缓存数据是否命中了与所述当前块对应的参考块数据;如果命中,则从所述缓存数据中载入与所述当前块对应的参考块数据;如果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;根据所述运动矢量和/或命中结果调整所述预定长度。在第一方面的第一种可能的实施方式中,所述根据所述运动矢量调整所述预定长度,具体包括
根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述 预定长度呈正相关关系;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。在第一方面的第二种可能的实施方式中,所述根据所述命中结果调整所述预定长度,具体包括累计包括所述当前块在内的若干块的命中结果,计算命中率;若所述命中率小于第一阈值,则将当前预定长度与第一预设值相加后,得到下一预定长度;若所述命中率大于第二阈值时,则将当前预定长度与第二预设值相减后,得到下一预定长度;其中,所述第一阈值小于第二阈值。结合第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述根据所述命中结果调整所述预定长度之后,还包括检测所述下一预定长度是否大于第三阈值;若检测到所述下一预定长度大于第三阈值,则将所述第三阈值作为所述下一预定长度的最终值。在第一方面的第四种可能的实现方式中,所述根据所述运动矢量和命中结果调整所述预定长度,具体包括根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;累计包括所述当前块在内的若干块的命中结果,计算命中率;根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系;若所述下一预定长度大于第四阈值,且所述命中率小于第五阈值,则将所述第四阈值作为所述下一预定长度的最终值,或者将所述下一预定长度减去第三预设值得到所述下一预定长度的最终值;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。结合第一方面的第一种可能的实施方式或者第一方面的第四种可能的实施方式,在第五种可能的实施方式中,所述根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性,具体包括计算所述当前块的运动矢量和所述其它块运动矢量之间的方差,将所述方差作为所述运动矢量相关性。第二方面,提供了一种数据载入装置,所述装置包括数据缓存模块,用于从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据;
矢量获取模块,用于获取当前块的运动矢量;命中判断模块,用于根据所述矢量获取模块获取到的所述当前块的运动矢量判断所述数据缓存模块缓存的所述缓存数据是否命中了与所述当前块对应的参考块数据;第一载入模块,用于如果所述命中判断 模块的判断结果为命中,则从所述数据缓存模块缓存的缓存数据中载入与所述当前块对应的参考块数据;第二载入模块,用于如果所述命中判断模块的判断结果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;长度修正模块,用于根据所述矢量获取模块获取的运动矢量和/或所述命中判断模块判断到的命中结果调整所述预定长度。在第二方面的第一种可能的实现方式中,所述长度修正模块,具体包括相关性计算单元和第一调整单元;所述相关性计算单元,用于根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;所述第一调整单元,用于根据所述相关性计算单元计算到的运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。在第二方面的第二种可能的实现方式中,所述长度修正模块,具体包括命中率计算单元、第二调整单元和第三调整单元;所述命中率计算单元,用于累计包括所述当前块在内的若干块的命中结果,计算命中率;所述第二调整单元,用于若所述命中率计算单元计算的命中率小于第一阈值,则将当前预定长度与第一预设值相加后,得到下一预定长度;所述第三调整单元,用于若所述命中率计算单元计算的命中率大于第二阈值时,则将当前预定长度与第二预设值相减后,得到下一预定长度;其中,所述第一阈值小于第二阈值。结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述长度修正模块,还包括阈值判断单元和长度修正单元;所述阈值判断单元,用于检测所述第二调整单元得到的下一预定长度是否大于第三阈值;所述长度修正单元,用于若所述阈值判断单元检测到所述下一预定长度大于第三阈值,则将所述第三阈值作为所述下一预定长度的最终值。在第二方面的第四种可能的实现方式中,所述长度修正模块,具体包括相关性计算单元、命中率计算单元、第一调整单元和第五调整单元;所述相关性计算单元,用于根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;所述命中率计算单元,用于累计包括所述当前块在内的若干块的命中结果,计算命中率;所述第一调整单元,用于根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系;所述第五调整单元,用于若所述下一预定长度大于第四阈值,且所述命中率小于第五阈值,则将所述第四阈值作为所述下一预定长度的最终值,或者将所述下一预定长度减去第三预设值得到所述下一预定长度的最终值; 其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。结合第二方面的第一种可能的实现方式或者第二方面的第四种可能的实现方式,所述相关性计算单元,具体用于计算所述当前块的运动矢量和所述其它块运动矢量之间的方差,将所述方差作为所述运动矢量相关性。本发明实施例提供的技术方案带来的有益效果是通过利用运动矢量和/或命中结果来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,在尽可能保持命中率的前提下,减少总线访问的延时。
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是本发明实施例一提供的数据载入方法的方法流程图;图2是本发明实施例二提供的数据载入方法的方法流程图;图3是本发明实施例三提供的数据载入方法的方法流程图;图4是本发明实施例四提供的数据载入方法的方法流程图;图5是本发明实施例五提供的数据载入装置的结构示意图;图6是本发明实施例六提供的数据载入装置的结构示意图;图7是本发明实施例七提供的数据载入装置的结构示意图;图8是本发明实施例八提供的数据载入装置的结构示意图;图9是本发明实施例九提供的数据载入装置的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。作为本发明的难点和重点之一本发明实施例中每次缓存数据时的预定长度为可变的,其可以根据当前块的运动矢量与其它块的运动矢量之间的相关性,以及当前的缓存数据命中率来适当地进行调整。实施例一请参考图1,其示出了本发明实施例一提供的数据载入方法的方法流程图。该数据载入方法可以用于有关视频编解码的视频处理系统中,该数据载入方法,包括步骤101,从外部存储器中载入预定长度的缓存数据,缓存数据包括一至多个参考块数据;本实施例中,在对当前块处理时,视频处理系统仍然可以先从外部存储器中载入预定长度的缓存数据,该预定长度的初始值可以为预定值。缓存数据可以包括一至多个参考块数据,比如色度数据。 步骤102,获取当前块的运动矢量;视频处理系统可以通过解码方式从视频文件中获取当前块的运动矢量,也可以对当前块进行运动估计来获取当前块的运动矢量。步骤103,根据当前块的运动矢量判断缓存数据是否命中了与当前块对应的参考块数据;如果命中,则进入步骤104 ;如果不命中,则进入步骤105 ;根据当前块的坐标和运动矢量,可以获知当前块在参考帧中的参考块的坐标,根据与当前块对应的参考块的坐标可以判断出缓存数据中是否包含有该参考块的相关数据;如果缓存数据中包含有该参考块的相关数据,则视为命中,进入步骤104 ;如果缓存数据中不包含有该参考块的相关数据,则视为不命中,进入步骤105。步骤104,从缓存数据中载入与当前块对应的参考块数据;在缓存数据中包含有与当前块对应的参考块数据时,也即命中的情况下,直接从缓存数据中载入与当前块对应的参考块数据,可以节省时间。步骤105,从外部存储器中载入与当前块对应的参考块数据;在缓存数据中不包含有与当前块对应的参考块数据时,也即不命中的情况下,可以直接根据参考块的坐标从外部存储器中载入与当前块对应的参考块数据。步骤106,根据运动矢量和/或命中结果调整预定长度。在对当前块处理完毕之后,可以根据当前块的运动矢量与其它块的运动矢量之间的相关性,和/或当前的缓存数据命中率来对预定长度适当地进行调整。然后用调整后的预定长度作为下一预定长度,开始对下一当前块进行处理。综上所述,本实施例提供的数据载入方法,通过利用运动矢量和/或命中结果来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,在尽可能保持命中率的前提下,减少总线访问的延时。实施例二请参考图2,其示出了本发明实施例二提供的数据载入方法的方法流程图。该数据载入方法可以用于有关视频编解码的视频处理系统中,本实施例中主要以采用当前块以及其它块的运动矢量来调整预定长度来举例说明。该数据载入方法,包括步骤201,从外部存储器中载入预定长度的缓存数据,缓存数据包括一至多个参考块数据;本实施例中,在对当前块处理时,视频处理系统仍然可以先从外部存储器中载入预定长度的缓存数据,该预定长度的初始值可以为预定值。缓存数据可以包括一至多个参考块数据,该参考块数据通常指参考帧中多个连续参考块的数据,具体如色度数据。步骤202,获取当前块的运动矢量;
视频处理系统可以通过解码方式从视频文件中获取当前块的运动矢量,也可以对当前块进行运动估计来获取当前块的运动矢量。步骤203,根据当前块的运动矢量判断缓存数据是否命中了与当前块对应的参考块数据;如果命中,则进入步骤204 ;如果不命中,则进入步骤205 ;根据当前块的坐标和运动矢量,可以获知当前块在参考帧中的参考块的坐标,根据与当前块对应的参考块的坐标可以判断出缓存数据中是否包含有该 参考块的相关数据。具体地讲,缓存数据在被缓存到片内存储器时,会生成一个缓存索引,该缓存索引内包含有根据被缓存的参考块的坐标转换成的索引数据,通过判断与当前块对应的参考块的坐标是否存在于缓存索引中,可以判断到缓存数据中是否包含有该参考块的相关数据。如果缓存数据中包含有该参考块的相关数据,则视为命中,进入步骤204;如果缓存数据中不包含有该参考块的相关数据,则视为不命中,进入步骤205。步骤204,从缓存数据中载入与当前块对应的参考块数据;在缓存数据中包含有与当前块对应的参考块数据时,也即命中的情况下,直接从缓存数据中载入与当前块对应的参考块数据,可以节省时间。步骤205,从外部存储器中载入与当前块对应的参考块数据;在缓存数据中不包含有与当前块对应的参考块数据时,也即不命中的情况下,可以直接根据参考块的坐标从外部存储器中载入与当前块对应的参考块数据。通常情况下,此时可以将以与当前块对应的参考块为起点,大小为预定长度的参考块数据从外部存储器中载入以便缓存,然后刷新缓存索引。步骤206,根据当前块的运动矢量和基于当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;对于当前块来讲,如果当前块所属区域的运动规律性比较强,缓存命中率一般就较高;如果当前块所属区域的运动规律性不强,缓存命中率一般就较低,所以可以在运动规律性较强时,采用较大的预定长度,更好地提高缓存命中率;在运动规律性不强时,采用较小的预定长度,减小总线占用的延时。具体地,根据当前块的运动矢量和预定区域中的其它块的运动矢量可以计算出该区域中的运动矢量相关性。预定区域的位置需要通过当前块来进行定位,预定区域的大小在不同实施例中可以不同。一种情况下,预定区域可以就是整个当前帧,该预定区域包括了当前帧中的所有块;另一情况下,预定区域可以是以当前块为中心,边长为预定长度的矩形块,具体如以当前块为中心,边长为3个块的正方形区域,总共包括9个块;再一情况下,预定区域可以是当前块的邻块区域,比如由当前块、当前块的左块、当前块的上块、当前块的左上块及当前块的右上块构成的区域,当然也可以是其它定义方式的邻块区域。在计算运动矢量相关性时,可以计算当前块的运动矢量和预定区域中的其它块的运动矢量之间的方差,然后以该方差作为运动矢量相关性。显然,本领域技术人员也可以采用其它的物理量来表征当前块的运动矢量和其它块的运动矢量之间的相关性,本实施例对此不作具体限定。步骤207,根据运动矢量相关性和预定关系,获得下一预定长度,预定关系为运动矢量相关性和预定长度呈正相关关系。在计算得到运动矢量相关性之后,可以根据运动矢量相关性和预定关系,获得下一预定长度。其中,预定关系为运动矢量相关性和预定长度呈正相关关系。所谓正相关关系,即当运动矢量相关性较高时,预定长度的取值也较高;当运动矢量相关性较低时,预定长度的取值也较低。一种情况下,运动矢量相关性和预定长度之间呈离散的线性函数关系;另一种情况下,运动矢量相关性和预定长度成区间与端点之间的映射关系,比如运动矢量相关性属于区域[A,B]时,预定长度取NI ;运动矢量相关性属于区域[B,C]时,预定长度取N2 ;运动矢量相关性属于区域[C,D]时,预定长度取N3,、、、,依次类推。只要运动矢量相关性和预定长度呈正相关关系即可。
当然,为了避免预定长度的取值太大,导致总线延时很高,在设计预定关系时,应当保证预定长度的最大值不超过预定阈值。在下一预定长度确定后,本次当前块的下一块将作为下一次的当前块,继续重复步骤201至步骤207的过程。综上所述,本实施例提供的数据载入方法,通过利用运动矢量来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,采用较小的预定长度,减少总线访问的延时。实施例三请参考图3,其示出了本发明实施例三提供的数据载入方法的方法流程图。该数据载入方法可以用于有关视频编解码的视频处理系统中,本实施例中主要以采用当前块以及其它块的命中结果来调整预定长度来举例说明。该数据载入方法,包括步骤301,从外部存储器中载入预定长度的缓存数据,缓存数据包括一至多个参考块数据;本实施例中,在对当前块处理时,视频处理系统仍然可以先从外部存储器中载入预定长度的缓存数据,该预定长度的初始值可以为预定值。缓存数据可以包括一至多个参考块数据,该参考块数据通常指参考帧中多个连续参考块的数据,具体如色度数据。步骤302,获取当前块的运动矢量;视频处理系统可以通过解码方式从视频文件中获取当前块的运动矢量,也可以对当前块进行运动估计来获取当前块的运动矢量。步骤303,根据当前块的运动矢量判断缓存数据是否命中了与当前块对应的参考块数据;如果命中,则进入步骤304 ;如果不命中,则进入步骤305 ;根据当前块的坐标和运动矢量,可以获知当前块在参考帧中的参考块的坐标,根据与当前块对应的参考块的坐标可以判断出缓存数据中是否包含有该参考块的相关数据。具体地讲,缓存数据在被缓存到片内存储器时,会生成一个缓存索引,该缓存索引内包含有根据被缓存的参考块的坐标转换成的索引数据,通过判断与当前块对应的参考块的坐标是否存在于缓存索引中,可以判断到缓存数据中是否包含有与当前块对应的参考块的相关数据。如果缓存数据中包含有该参考块的相关数据,则视为命中,进入步骤204 ;如果缓存数据中不包含有该参考块的相关数据,则视为不命中,进入步骤205。步骤304,从缓存数据中载入与当前块对应的参考块数据;在缓存数据中包含有与当前块对应的参考块数据时,也即命中的情况下,直接从缓存数据中载入与当前块对应的参考块数据,可以节省时间。
步骤305,从外部存储器中载入与当前块对应的参考块数据;在缓存数据中不包含有与当前块对应的参考块数据时,也即不命中的情况下,可以直接根据参考块的坐标从外部存储器中载入与当前块对应的参考块数据。通常情况下,此时可以将以与当前块对应的参考块为起点,大小为预定长度的参考块数据从外部存储器中载入以便缓存,然后刷新缓存索引。步骤306,累计包括当前块在内的若干块的命中结果,计算命中率;
视频处理系统可以累计包括当前块在内的若干块的命中结果,计算命中率。该若干块的数量可以是预定的,比如若干块包括当前块和当前块之前的9个块,共10个块。然后视频处理系统可以根据累计结果,计算出缓存数据的命中率,比如包括当前块在内的10个块中有6个命中,则命中率为60%。步骤307,若命中率小于第一阈值,则将当前预定长度与第一预设值相加后,得到下一预定长度;当命中率小于第一阈值时,认为命中率太低,可以将当前预定长度与第一预设值相加后,得到下一预定长度,通过增加预定长度来提高命中率。比如,当命中率小于70%时,认为命中率太低,可以将当前预定长度NI与第一预设值X相加后,得到下一预定长度(N1+X),通过增加后的预定长度(N1+X)来在一次缓存的过程中缓存更多参考块的数据,来达到提闻命中率的效果。步骤308,若命中率大于第二阈值时,则将当前预定长度与第二预设值相减后,得到下一预定长度;当命中率大于第二阈值时,认为命中率较高,可以将当前预定长度与第二预设值相加后,得到下一预定长度,通过减小预定长度来减少总线占用的延时。比如,当命中率大于95%时,认为命中率较高,可以将当前预定长度NI与第二预设值Y相减后,得到下一预定长度(N1-Y),通过减小后的预定长度(Nl-Y)来在一次缓存的过程中缓存稍微少一点的参考块的数据,使得在命中率变化不大的前提下,尽量减少总线占用的延时。其中,第一阈值小于第二阈值,第一阈值和第二阈值之间的命中率认为是较为合理的命中率。而第一预设值通常大于第二预设值,在第一预设值稍大时,可以在命中率较低时,快速提高命中率;而第二预设值较小时,可以缓慢调低预定长度,使得命中率不会发生太快的变化,优选地,使命中率保持在合理区间。当然,本实施例中,也可以优选地对预定长度设置最大值修正机制,具体如下步骤309,检测下一预定长度是否大于第三阈值;在步骤307之后,可以检测步骤307确定的下一预定长度是否超过了第三阈值,比如第三阈值为50个参考块,也即预定长度的最大值应当不超过50个参考块。步骤310,若检测到下一预定长度大于第三阈值,则将所述第三阈值作为所述下一预定长度的最终值。如果检测到步骤307确定的下一预定长度超过了第三阈值,则可以将第三阈值作为下一预定长度的最终值。在下一预定长度确定后,本次当前块的下一块将作为下一次的当前块,继续重复步骤301至步骤310的过程。综上所述,本实施例提供的数据载入方法,通过利用命中结果来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,采用较小的预定长度,减少总线访问的延时。实施例四请参考图4,其示出了本发明实施例四提供的数据载入方法的方法流程图。该数据载入方法可以用于有关视频编解码的视频处理系统中,本实施例中主要以结合采用当前块以及其它块的运动矢量和命中结果来调整预定长度来举例说明。该数据载入方法,包括步骤401,从外部存储器中载入预定长度的缓存数据,缓存数据包括一至多个参考 块数据;本实施例中,在对当前块处理时,视频处理系统仍然可以先从外部存储器中载入预定长度的缓存数据,该预定长度的初始值可以为预定值。缓存数据可以包括一至多个参考块数据,该参考块数据通常指参考帧中多个连续参考块的数据,具体如色度数据。步骤402,获取当前块的运动矢量;视频处理系统可以通过解码方式从视频文件中获取当前块的运动矢量,也可以对当前块进行运动估计来获取当前块的运动矢量。步骤403,根据当前块的运动矢量判断缓存数据是否命中了与当前块对应的参考块数据;如果命中,则进入步骤304 ;如果不命中,则进入步骤305 ;根据当前块的坐标和运动矢量,可以获知当前块在参考帧中的参考块的坐标,根据与当前块对应的参考块的坐标可以判断出缓存数据中是否包含有该参考块的相关数据。具体地讲,缓存数据在被缓存到片内存储器时,会生成一个缓存索引,该缓存索引内包含有根据被缓存的参考块的坐标转换成的索引数据,通过判断与当前块对应的参考块的坐标是否存在于缓存索引中,可以判断到缓存数据中是否包含有与当前块对应的参考块的相关数据。如果缓存数据中包含有该参考块的相关数据,则视为命中,进入步骤204;如果缓存数据中不包含有该参考块的相关数据,则视为不命中,进入步骤205。步骤404,从缓存数据中载入与当前块对应的参考块数据;在缓存数据中包含有与当前块对应的参考块数据时,也即命中的情况下,直接从缓存数据中载入与当前块对应的参考块数据,可以节省时间。步骤405,从外部存储器中载入与当前块对应的参考块数据;在缓存数据中不包含有与当前块对应的参考块数据时,也即不命中的情况下,可以直接根据参考块的坐标从外部存储器中载入与当前块对应的参考块数据。通常情况下,此时可以将以与当前块对应的参考块为起点,大小为预定长度的参考块数据从外部存储器中载入以便缓存,然后刷新缓存索引。步骤406,根据当前块的运动矢量和基于当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;具体地,根据当前块的运动矢量和预定区域中的其它块的运动矢量可以计算出该区域中的运动矢量相关性。预定区域的位置需要通过当前块来进行定位,预定区域的大小在不同实施例中可以不同。一种情况下,预定区域可以就是整个当前帧,该预定区域包括了当前帧中的所有块;另一情况下,预定区域可以是以当前块为中心,边长为预定长度的矩形块,具体如以当前块为中心,边长为3个块的正方形区域,总共包括9个块;再一情况下,预定区域可以是当前块的邻块区域,比如由当前块、当前块的左块、当前块的上块、当前块的左上块及当前块的右上块构成的区域,当然也可以是其它定义方式的邻块区域。在计算运动矢量相关性时,可以计算当前块的运动矢量和预定区域中的其它块的运动矢量之间的方差,然后以该方差作为运动矢量相关性。显然,本领域技术人员也可以采用其它的物理量来表征当前块的运动矢量和其它块的运动矢量之间的相关性,本实施例对此不作具体限定。步骤407,累计包括当前块在内的若干块的命中结果,计算命中率;视频处理系统可以累计包括当前块在内的若干块的命中结果,计算命中率。该若干块的数量可以是预定的,比如若干块包括当前块和当前块之前的9个块,共10个块。然 后视频处理系统可以根据累计结果,计算出缓存数据的命中率,比如包括当前块在内的10个块中有6个命中,则命中率为60%。步骤408,根据运动矢量相关性和预定关系,获得下一预定长度,预定关系为运动矢量相关性和预定长度呈正相关关系;在计算得到运动矢量相关性之后,可以根据运动矢量相关性和预定关系,获得下一预定长度。其中,预定关系为运动矢量相关性和预定长度呈正相关关系。所谓正相关关系,即当运动矢量相关性较高时,预定长度的取值也较高;当运动矢量相关性较低时,预定长度的取值也较低。一种情况下,运动矢量相关性和预定长度之间呈离散的线性函数关系;另一种情况下,运动矢量相关性和预定长度成区间与端点之间的映射关系,比如运动矢量相关性属于区域[A,B]时,预定长度取NI ;运动矢量相关性属于区域[B,C]时,预定长度取N2 ;运动矢量相关性属于区域[C,D]时,预定长度取N3,、、、,依次类推。只要运动矢量相关性和预定长度呈正相关关系即可。步骤409,若下一预定长度大于第四阈值,且命中率小于第五阈值,则将第四阈值作为下一预定长度的最终值,或者将下一预定长度减去第三预设值得到下一预定长度的最终值。由于实际使用时,即便将预定长度增加至较大值,也有可能一直保持较低的命中率。换句话说,预定长度的增加并不会导致命中率增加,比如,预定长度已经处于较大值,但是命中率始终小于30%,此时预定长度的大小对命中率的影响较低。所以,在此种情况下,可以将预定长度减小,以减小总线占用的延时,使得在不命中的情况下,视频处理系统可以快速地将较小预定长度的参考块数据从外部缓存器中载入。综上所述,本实施例提供的数据载入方法,通过利用运动矢量和命中结果两者来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,采用较小的预定长度,减少总线访问的延时。实施例五请参考图5,其示出了本发明实施例五提供的数据载入装置的结构示意图。该数据载入装置可以实现成为视频处理系统的一部分,该数据载入装置包括数据缓存模块510、矢量获取模块520、命中判断模块530、第一载入模块540、第二载入模块550和长度修正模块 560。数据缓存模块510,用于从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据;矢量获取模块520,用于获取当前块的运动矢量;命中判断模块530,用于根据所述矢量获取模块520获取到的所述当前块的运动矢量判断所述数据缓存模块510缓存的所述缓存数据是否命中了与所述当前块对应的参考块数据;
第一载入模块540,用于如果所述命中判断模块530的判断结果为命中,则从所述数据缓存模块缓存的缓存数据中载入与所述当前块对应的参考块数据;第二载入模块550,用于如果所述命中判断模块540的判断结果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;长度修正模块560,用于根据所述矢量获取模块520获取的运动矢量和/或所述命中判断模块530判断到的命中结果调整所述预定长度。综上所述,本实施例提供的数据载入装置,通过利用运动矢量和/或命中结果来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,在尽可能保持命中率的前提下,减少总线访问的延时。实施例六请参考图6,其示出了本发明实施例六提供的数据载入装置的结构示意图。该数据载入装置可以实现成为视频处理系统的一部分,该数据载入装置包括数据缓存模块510、矢量获取模块520、命中判断模块530、第一载入模块540、第二载入模块550和长度修正模块 560。数据缓存模块510,用于从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据;矢量获取模块520,用于获取当前块的运动矢量;命中判断模块530,用于根据所述矢量获取模块520获取到的所述当前块的运动矢量判断所述数据缓存模块510缓存的所述缓存数据是否命中了与所述当前块对应的参考块数据;第一载入模块540,用于如果所述命中判断模块530的判断结果为命中,则从所述数据缓存模块缓存的缓存数据中载入与所述当前块对应的参考块数据;第二载入模块550,用于如果所述命中判断模块540的判断结果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;长度修正模块560,用于根据所述矢量获取模块520获取的运动矢量调整所述预定长度。具体地讲,所述长度修正模块560,可以包括相关性计算单元561和第一调整单元562 ;所述相关性计算单元561,用于根据所述矢量获取模块520获取的当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;所述第一调整单元562,用于根据所述相关性计算单元561计算到的运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。优选地,所述相关性计算单元561,具体用于计算所述当前块的运动矢量和所述其它块运动矢量之间的方差,将所述方差作为所述运动矢量相关性。综上所述,本实施例提供的数据载入装置,通过利用运动矢量来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,采用较小的预定长度,减少总线访问的延时。 实施例七请参考图7,其示出了本发明实施例七提供的数据载入装置的结构示意图。该数据载入装置可以实现成为视频处理系统的一部分,该数据载入装置包括数据缓存模块510、矢量获取模块520、命中判断模块530、第一载入模块540、第二载入模块550和长度修正模块 560。数据缓存模块510,用于从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据;矢量获取模块520,用于获取当前块的运动矢量;命中判断模块530,用于根据所述矢量获取模块520获取到的所述当前块的运动矢量判断所述数据缓存模块510缓存的所述缓存数据是否命中了与所述当前块对应的参考块数据;第一载入模块540,用于如果所述命中判断模块530的判断结果为命中,则从所述数据缓存模块缓存的缓存数据中载入与所述当前块对应的参考块数据;第二载入模块550,用于如果所述命中判断模块540的判断结果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;长度修正模块560,用于根据所述命中判断模块530判断到的命中结果调整所述预定长度。具体地讲,所述长度修正模块560可以包括命中率计算单元563、第二调整单元564和第三调整单元565。其中所述命中率计算单元563,用于累计包括所述当前块在内的若干块的命中结果,计算命中率;所述第二调整单元564,用于若所述命中率计算单元563计算的命中率小于第一阈值,则将当前预定长度与第一预设值相加后,得到下一预定长度;所述第三调整单元565,用于若所述命中率计算单元563计算的命中率大于第二阈值时,则将当前预定长度与第二预设值相减后,得到下一预定长度;其中,所述第一阈值小于第二阈值。优选地,所述长度修正模块560,还可以包括阈值判断单元566和长度修正单元567。其中所述阈值判断单元566,用于检测所述第二调整单元得到的下一预定长度是否大
于第三阈值;所述长度修正单元567,用于若所述阈值判断单元检测到所述下一预定长度大于第三阈值,则将所述第三阈值作为所述下一预定长度的最终值。综上所述,本实施例提供的数据载入装置,通过利用命中结果来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,采用较小的预定长度,减少总线访问的延时。实施例八请参考图8,其示出了本发明实施例八提供的数据载入装置的结构示意图。该数据载入装置可以实现成为视频处理系统的一部分,该数据载入装置包括数据缓存模块510、矢量获取模块520、命中判断模块530、第一载入模块540、第二载入模块550和长度修正模块 560。 数据缓存模块510,用于从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据;矢量获取模块520,用于获取当前块的运动矢量;命中判断模块530,用于根据所述矢量获取模块520获取到的所述当前块的运动矢量判断所述数据缓存模块510缓存的所述缓存数据是否命中了与所述当前块对应的参考块数据;第一载入模块540,用于如果所述命中判断模块530的判断结果为命中,则从所述数据缓存模块缓存的缓存数据中载入与所述当前块对应的参考块数据;第二载入模块550,用于如果所述命中判断模块540的判断结果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;长度修正模块560,用于根据所述命中判断模块530判断到的命中结果调整所述预定长度。具体地讲,所述长度修正模块560可以包括相关性计算单元561、命中率计算单元563、第一调整单元562和第五调整单元568。其中,所述相关性计算单元561,用于根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;所述命中率计算单元563,用于累计包括所述当前块在内的若干块的命中结果,计算命中率;所述第一调整单元562,用于根据所述相关性计算单元561计算的运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系;所述第五调整单元568,用于若所述第一调整单元562得到的下一预定长度大于第四阈值,且所述命中率计算单元563得到的命中率小于第五阈值,则将所述第四阈值作为所述下一预定长度的最终值,或者将所述下一预定长度减去第三预设值得到所述下一预定长度的最终值;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。具体地讲,所述相关性计算单元561,具体用于计算所述当前块的运动矢量和所述其它块运动矢量之间的方差,将所述方差作为所述运动矢量相关性。综上所述,本实施例提供的数据载入装置,通过利用运动矢量和命中结果两者来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,采用较小的预定长度,减少总线访问的延时。实施例九请参考图9,其示出了本发明实施例九提供的数据载入装置的结构示意图。该数据载入装置包括处理器920。所述处理器920,用于从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据;所述处理器920,还用于获取当前块的运动矢量; 所述处理器920,还用于根据获取到的所述当前块的运动矢量判断所述缓存数据是否命中了与所述当前块对应的参考块数据;所述处理器920,还用于如果判断结果为命中,则从所述数据缓存模块缓存的缓存数据中载入与所述当前块对应的参考块数据;所述处理器920,还用于如果判断结果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;所述处理器920,还用于根据所述运动矢量和/或命中结果调整所述预定长度。综上所述,本实施例提供的数据载入装置,通过利用运动矢量和/或命中结果来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,在尽可能保持命中率的前提下,减少总线访问的延时。作为一种可选的实施例,所述处理器920,用于根据所述运动矢量调整所述预定长度时所述处理器920,用于根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;所述处理器920,用于根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。作为另一种可选的实施例,所述处理器920,用于根据所述命中结果调整所述预定长度时所述处理器920,用于累计包括所述当前块在内的若干块的命中结果,计算命中率;所述处理器920,用于若所述命中率小于第一阈值,则将当前预定长度与第一预设值相加后,得到下一预定长度;所述处理器920,用于若所述命中率大于第二阈值时,则将当前预定长度与第二预设值相减后,得到下一预定长度;其中,所述第一阈值小于第二阈值。更为优选地,所述处理器920,用于所述根据所述命中结果调整所述预定长度之后所述处理器920,还用于检测所述下一预定长度是否大于第三阈值;所述处理器920,还用于若检测到所述下一预定长度大于第三阈值,则将所述第三阈值作为所述下一预定长度的最终值。作为再一种可选的实施例,所述处理器920,用于所述根据所述运动矢量和命中结果调整所述预定长度时所述处理器920,用于根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性;所述处理器920,用于累计包括所述当前块在内的若干块的命中结果,计算命中率; 所述处理器920,用于根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系;所述处理器920,用于若所述下一预定长度大于第四阈值,且所述命中率小于第五阈值,则将所述第四阈值作为所述下一预定长度的最终值,或者将所述下一预定长度减去第三预设值得到所述下一预定长度的最终值;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。在上述实施方式中,所述处理器920,用于所述根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性,具体是指所述处理器920,用于计算所述当前块的运动矢量和所述其它块运动矢量之间的方差,将所述方差作为所述运动矢量相关性。综上所述,本实施例提供的数据载入装置,通过利用运动矢量和/或命中结果两者来调整预定长度的大小,解决了图像的运动规律性不强时,可能造成的总线访问较长的问题,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,采用较小的预定长度,减少总线访问的延时。需要说明的是上述实施例提供的数据载入装置在载入数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据载入装置与数据载入方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据载入方法,其特征在于,所述方法包括 从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据; 获取当前块的运动矢量; 根据所述当前块的运动矢量判断所述缓存数据是否命中了与所述当前块对应的参考块数据; 如果命中,则从所述缓存数据中载入与所述当前块对应的参考块数据;如果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据; 根据所述运动矢量和/或命中结果调整所述预定长度。
2.根据权利要求I所述的数据载入方法,其特征在于,所述根据所述运动矢量调整所述预定长度,具体包括 根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性; 根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系; 其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。
3.根据权利要求I所述的数据载入方法,其特征在于,所述根据所述命中结果调整所述预定长度,具体包括 累计包括所述当前块在内的若干块的命中结果,计算命中率; 若所述命中率小于第一阈值,则将当前预定长度与第一预设值相加后,得到下一预定长度; 若所述命中率大于第二阈值时,则将当前预定长度与第二预设值相减后,得到下一预定长度; 其中,所述第一阈值小于第二阈值。
4.根据权利要求3所述的数据载入方法,其特征在于,所述根据所述命中结果调整所述预定长度之后,还包括 检测所述下一预定长度是否大于第三阈值; 若检测到所述下一预定长度大于第三阈值,则将所述第三阈值作为所述下一预定长度的最终值。
5.根据权利要求I所述的数据载入方法,其特征在于,所述根据所述运动矢量和命中结果调整所述预定长度,具体包括 根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性; 累计包括所述当前块在内的若干块的命中结果,计算命中率; 根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系; 若所述下一预定长度大于第四阈值,且所述命中率小于第五阈值,则将所述第四阈值作为所述下一预定长度的最终值,或者将所述下一预定长度减去第三预设值得到所述下一预定长度的最终值;其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。
6.根据权利要求2或5所述的数据载入方法,其特征在于,所述根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性,具体包括 计算所述当前块的运动矢量和所述其它块运动矢量之间的方差,将所述方差作为所述运动矢量相关性。
7.一种数据载入装置,其特征在于,所述装置包括 数据缓存模块,用于从外部存储器中载入预定长度的缓存数据,所述缓存数据包括一至多个参考块数据; 矢量获取模块,用于获取当前块的运动矢量; 命中判断模块,用于根据所述矢量获取模块获取到的所述当前块的运动矢量判断所述数据缓存模块缓存的所述缓存数据是否命中了与所述当前块对应的参考块数据; 第一载入模块,用于如果所述命中判断模块的判断结果为命中,则从所述数据缓存模块缓存的缓存数据中载入与所述当前块对应的参考块数据; 第二载入模块,用于如果所述命中判断模块的判断结果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据; 长度修正模块,用于根据所述矢量获取模块获取的运动矢量和/或所述命中判断模块判断到的命中结果调整所述预定长度。
8.根据权利要求7所述的数据载入装置,其特征在于,所述长度修正模块,具体包括 相关性计算单元和第一调整单元; 所述相关性计算单元,用于根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性; 所述第一调整单元,用于根据所述相关性计算单元计算到的运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系; 其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。
9.根据权利要求7所述的数据载入装置,其特征在于,所述长度修正模块,具体包括 命中率计算单元、第二调整单元和第三调整单元; 所述命中率计算单元,用于累计包括所述当前块在内的若干块的命中结果,计算命中率; 所述第二调整单元,用于若所述命中率计算单元计算的命中率小于第一阈值,则将当前预定长度与第一预设值相加后,得到下一预定长度; 所述第三调整单元,用于若所述命中率计算单元计算的命中率大于第二阈值时,则将当前预定长度与第二预设值相减后,得到下一预定长度; 其中,所述第一阈值小于第二阈值。
10.根据权利要求9所述的数据载入装置,其特征在于,所述长度修正模块,还包括 阈值判断单元和长度修正单元;所述阈值判断单元,用于检测所述第二调整单元得到的下一预定长度是否大于第三阈值; 所述长度修正单元,用于若所述阈值判断单元检测到所述下一预定长度大于第三阈值,则将所述第三阈值作为所述下一预定长度的最终值。
11.根据权利要求7所述的数据载入装置,其特征在于,所述长度修正模块,具体包括 相关性计算单元、命中率计算单元、第一调整单元和第五调整单元; 所述相关性计算单元,用于根据所述当前块的运动矢量和基于所述当前块定位的预定区域中的其它块的运动矢量计算运动矢量相关性; 所述命中率计算单元,用于累计包括所述当前块在内的若干块的命中结果,计算命中率; 所述第一调整单元,用于根据所述运动矢量相关性和预定关系,获得下一预定长度,所述预定关系为所述运动矢量相关性和所述预定长度呈正相关关系; 所述第五调整单元,用于若所述下一预定长度大于第四阈值,且所述命中率小于第五阈值,则将所述第四阈值作为所述下一预定长度的最终值,或者将所述下一预定长度减去第三预设值得到所述下一预定长度的最终值; 其中,所述预定区域包括整个当前帧区域、以所述当前块为中心、边长为预定值的矩形区域和所述当前块的邻块区域中的任一种。
12.根据权利要求8或11所述的数据载入装置,其特征在于,所述相关性计算单元,具体用于计算所述当前块的运动矢量和所述其它块运动矢量之间的方差,将所述方差作为所述运动矢量相关性。
全文摘要
本发明公开了一种数据载入方法,属于图像处理领域,所述方法包括载入预定长度的缓存数据,所述缓存数据包括一至多个参考参考块数据;获取当前块的运动矢量;根据所述当前块的运动矢量判断所述缓存数据是否命中了与所述当前块对应的参考块数据;如果命中,则从所述缓存数据中载入与所述当前块对应的参考块数据;如果不命中,则从所述外部存储器中载入与所述当前块对应的参考块数据;根据所述运动矢量和/或命中结果调整所述预定长度。本发明通过利用运动矢量和/或命中结果来调整预定长度的大小,达到了在图像运动规律性强时,获得较高的命中率,且图像运动规律性不强时,在尽可能保持命中率的前提下,减少总线访问的延时。
文档编号H04N7/26GK102970539SQ20121047908
公开日2013年3月13日 申请日期2012年11月22日 优先权日2012年11月22日
发明者顾骧, 马若飞 申请人:华为技术有限公司