基于九宫格的精细运动估计数据读取方法_2

文档序号:9755172阅读:来源:国知局
5次读取操作,每次请求行数如红色所示分别为16、8、8、5、6,共计43次跨行读操作。精细运动估计的频繁跨行读取会增加DDR2 SDRAM激活、预充电时间,所以这样读取效率是非常低的。
[0039]2、{O,0}搜索及运动矢量搜索的原理:
[0040]该搜索基于粗运动估计产生的位置信息,并且将运动估计的值设为0,从而将两帧图像比较后不发生运动的宏块读取出来。
[0041 ]使用起始地址进行DDR2 SDRAM的数据预读取,一次性取出4个宏块的亮度数据和色度数据并放入DPRAM中。根据请求的地址信息和数据读取范围来判断命中,本次请求所需的数据是否在缓存中;如果命中则直接从DPRAM中取出相应的数据,如果不命中则计算出新的预取地址,并直接从DDR2 SDRAM中取出所需的数据。
[0042]如图2所示,当前帧{0,0}搜索的宏块AB与下一个{0,0}搜索的位置是连续的,因此可以一次性取出多个宏块的数据,这样可以减少跨行操作,提高{0,0}搜索的数据读取速度。
[0043]3、整像素、半像素、四分之一像素搜索范围:
[0044]如图3所示,在精细搜索窗中,整像素的搜索范围由粗运动估计指示的最优位置左方增加4行像素,右方增加3行像素,上方增加两行数据,下方增加一行数据组成。
[0045]如果半像素精度可用,则搜索整像素位置旁边的八个半像素位置,并且在整像素和半像素位置中产生一个最优的匹配,这个过程指示的位置可能是整像素位置也可能是半像素位置。如果1/4像素精度可用,在半像素搜索的最优匹配位置基础上搜索该位置周围的八个1/4像素位置的情况,从半像素搜索中的最优位置和这八个位置中再选一个最优位置。
[0046]4、基于九宫格的读操作:
[0047]由于直接优化法需要在当前宏块第一次请求到来时读取一大块数据,而随着运动矢量的不同,整块数据大小范围也不同,也就是说不可能使用固定大小DPRAM来缓存整块中所有的数据。为此引入分类优化法。
[0048]由于精细搜索的第一步都是对运动向量{0,0}的宏块进行读取,因此可以开辟一块缓存专门用于存储{0,0}运动矢量的数据,而且这类数据是按宏块顺序读取的,甚至可以做多宏块的预读取。
[0049]对于整像素、半像素、四分之一像素搜索,{0,0}搜索之后的请求所在的宏块中心,上下左右各取一个宏块的数据。根据上文中对于精细运动估计的分析,可知整像素、半像素、四分之一像素的搜索范围不会超过该范围。同时采用预读取和命中的机制,同时取两个块大小(或者预取更大)的数据。如图4所示,当前块W在此类搜索中读取范围不会超过1-2-3-Y-7-8-9-10;如果当前块Y也命中,则其读取范围不会超过2-3-4-5-6-7-8-W。
[0050]采用分类优化法区别对待不同搜索方式:{0,0}搜索肯定能被预取,并且命中;整像素、半像素、四分之一像素的预读取至少有70%几率能够命中下一个宏块,而对于未命中的宏块需要重新读取DDR2,然后再基于该宏块进行新的预取和命中操作。分类优化和九宫格的设计方法内部至少需要两块DPRAM,占用更多的芯片面积,同时控制也较为复杂,但是却极大地提高了DDR2的存储带宽利用率。
[0051]如图5所示,由于采用了基于九宫格的预读取方式,精细运动估计操作被合并而减少了跨行读,只需要8+6+8 = 24次读操作;相比较图2的传统精细运动估计的读取操作,会节省43-24= 19次DDR2 SDRAM芯片的请求,读取效率相比也提高了 44.2 %。此外,如果整像素、半像素、四分之一像素搜索的数据能命中存于DPRAM中的数据,则不需要再请求DDR2SDRAM,这样效率会进一步提高。
[0052]5、FME模块的体系架构:
[0053]如图6所示,FME模块用于响应编码核的精细运动估计读请求操作,进行地址转换,缓存DDR2 SDRAM芯片读出的数据,拼接、预取并完成数据写入编码核等操作。该模块由地址计算单元、片上缓存、存储控制逻辑以及预取等控制逻辑组成。
【主权项】
1.基于九宫格的精细运动估计数据读取方法,其特征在于:包括以下步骤: 1)按固定顺序访问宏块: 1.1)对帧内图像进行一次读宏块请求时,连续读出4个宏块的数据,并且每4次请求只锁存一次地址; 1.2)使用两组片上DPRAM用于缓存亮度和色度数据,其中:亮度数据在片外DDR2 SDRAM中按照一帧图像的起始地址连续存储,顶场数据放在一帧空间中从起始地址开始的上半部分,底场数据放在一帧空间中从二分之一高度对应的地址开始的下半部分; 1.3)根据下一个需要读出的像素地址是否在预取4个宏块地址范围内来判断是否命中;如果在命中内,则本次请求所需的数据在DPRAM缓存中,直接从DPRAM中取出相应的数据;如果不命中,则计算该像素所在的宏块地址并直接从DDR2 SDRAM中预读取后4个宏块的数据; 2)采用九宫格形式的存储访问: 2.1)将第一次读请求的所在宏块地址进行缓存,并以该宏块为中心,向八个方向各扩展一个宏块形成九宫格; 2.2)通过起始地址一次计算出该九宫格内9个宏块的所有数据在DDR2 SDRAM中的映射地址; 2.3)根据精细运动估计各请求的访问地址是否在九宫格的地址范围内,判断本次请求所需的数据是否地址命中;如果命中,则直接从DPRAM中取出相应的数据;如果不命中,则需要以当前请求对应的地址计算出新的预取地址,并预取出对应九宫格中的亮度和色度数据存放于DPRAM缓存中。2.根据权利要求1所述的基于九宫格的精细运动估计数据读取方法,其特征在于:还包括步骤3采用地址预先判断的方法提前终止冗余数据: 实时判断相邻两次精细运动估计之间的所有运动矢量所需的数据是否都已取出;若是,则立即终止多余的读DDR2 SDRAM操作。3.根据权利要求1或2所述的基于九宫格的精细运动估计数据读取方法,其特征在于:所述步骤2.2)中所述9个宏块的数据包括一个运动矢量的所有整像素、半像素和四分之一像素读操作的像素数据。
【专利摘要】本发明涉及基于九宫格的精细运动估计数据读取方法。H.264高清视频编码核进行精细运动估计的操作时,搜索框内的数据量大无规律且跨行操作较多,因此读写效率很低,数据写入片外DDR2?SDRAM存储器会耗费大量时间。本发明提出按固定顺序访问的宏块读取方法,采用九宫格的形式进行数据的片上缓存的方法以及采用地址预先判断和提前终止冗余数据等方法来提高精细运动的访问速度,能快速准确地将精细运动估计的数据取回,实现高清实时编码所需的速度要求。
【IPC分类】H04N19/53, H04N19/51, H04N19/523, H04N19/43
【公开号】CN105516725
【申请号】CN201510930458
【发明人】卢俊, 许宏杰, 王婷, 马超, 颜哲, 安博锋
【申请人】中国航空工业集团公司西安航空计算技术研究所
【公开日】2016年4月20日
【申请日】2015年12月12日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1