发明内容
本发明实施例的目的在于提供一种图像插值方法,旨在解决现有的图像插值方法在实现B帧和S帧插值运算的硬件成本大、且占用芯片面积大的问题。
本发明实施例是这样实现的,一种图像插值方法,所述插值方法包括以下步骤:
读取前向参考帧数据和后向参考帧数据;
根据旋转角度分别将与所述前向参考帧数据和所述后向参考帧数据对应的运动矢量进行矢量变换处理;
同时根据前向参考帧数据对应的运动矢量进行矢量变换处理的结果,对前向参考帧数据进行前向插值运算,和根据后向参考帧数据对应的运动矢量进行矢量变换处理的结果,对后向参考帧数据进行后向插值运算。
本发明实施例的另一目的在于提供一种移动多媒体处理器,所述移动多媒体处理器包括:
第一插值运算单元,用于从系统参考缓存区中读取前向参考帧数据并进行插值运算;
第二插值运算单元,用于从系统参考缓存区中读取后向参考帧数据并进行插值运算;
第一运动矢量变换单元,用于根据图像旋转角度将与前向参考帧数据对应的运动矢量进行变换处理,并将变换处理结果输出至所述第一插值运算单元;以及
第二运动矢量变换单元,用于根据图像旋转角度将与后向参考帧数据对应的运动矢量进行变换处理,并将变换处理结果输出至所述第二插值运算单元;
第一时序发生器,用于控制所述第一插值运算单元进行读取数据;
第二时序发生器,用于控制所述第二插值运算单元进行读取数据;以及
插值运算触发单元,用于同时向所述第一插值运算单元和所述第二插值运算单元发出插值运算触发信号,同时启动所述第一插值运算单元进行前向插值运算和所述第二插值运算单元进行后向插值运算。
本发明实施例的另一目的在于提供一种采用如上所述移动多媒体处理器的多媒体播放终端。
本发明实施例中,分别从系统参考缓存区中读取前向参考帧数据和后向参 考帧数据,根据旋转分别将与读取的前向参考帧数据和读取的后向参考帧数据对应的运动矢量进行矢量变换处理,并同时启动进行前向插值运算和后向插值运算,从而省去了存放前向预测值的数据缓存,相比于以前帧间预测的插值方法,本发明实施例支持B帧和S帧的插值运算,可以有效的减少面积以及有效的提高插值的速度。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例中,分别从系统参考缓存区中读取前向参考帧数据和后向参考帧数据,并同时启动进行前向插值运算和后向插值运算,从而省去了存放前向预测值的数据缓存,降低了成本、减少了插值运算部分占用芯片的面积。
图1示出了本发明实施例提供的图像插值方法的实现流程,详述如下:
在步骤S101中,读取前向参考帧数据和后向参考帧数据;
在步骤S102中,同时根据所述前向参考帧数据进行前向插值运算和根据所述后向参考帧数据进行后向插值运算;
在步骤S103中,将前向插值运算得到的前向预测值和后向插值运算得到的后向预测值进行加权运算,再与系统残差值相加以产生最终的像素值。
本发明实施例提供的图像插值方法还可支持旋转功能,在进行插值运算之前,先根据旋转角度将与所述前向参考帧数据和所述后向参考帧数据对应的运动矢量进行矢量变换处理,具体处理过程如下表所示:
旋转的角度 |
X方向 |
Y方向 |
0 |
Mv_dx |
Mv_dy |
90 |
2-Mv_dy |
Mv_dx |
180 |
2-Mv_dx |
2-Mv_dy |
270 |
Mv_dy |
2-Mv_dx |
其中,Mv_dx表示旋转0度时在X方向上的分数像素的运动矢量,Mv_dy表示旋转0度时在Y方向上的分数像素的运动矢量。第一插值运算单元和第二插值运算单元分别根据各自地运动矢量的变换处理结果对前向参考帧数据和后向参考帧数据进行插值运算。
图2示出了第一插值运算单元和第二插值运算单元的基本时序,这种时序针对B帧插值以及B帧中只有前向插值或者只有后向插值的情况,参照图2,以8×8的数据块为例,当时钟信号Read_pre1跳变为高电平时,第一插值运算单元或第二插值运算单元先从缓存区中读取一行数据,当时钟信号Read_pre2跳变为高电平时,第一插值运算单元或第二插值运算单元再从缓存区中读取下一行数据,然后当插值运算触发信号intp跳变为高电平时第一插值运算单元或第二插值运算单元开始插值运算,插值出一行8个像素需要8个时钟周期,同时在插值的第8个时钟周期由时钟信号Read_pre2启动开始读取下一行数据,然后再插值下一行数据,从时序可以看出此后第一插值单元或第二插值单元一直处于插值的过程,直至一个8×8的数据块插值结束。
图3示出了B帧双向插值宏块的时序,仍然以8×8的数据块为例,可以看出,在做双向插值时,先读取前向插值所需的两行数据,紧接着读取后向插值所需的两行数据,然后同时进行前后向的数据插值,插值过程也是需要8个时钟周期,在插值的第8个时钟周期启动时钟信号Read_pre1和Read_pre2,读取下一行数据并进行下一行数据的插值过程,直至该数据块结束。其中参考数据的存放格式如图4所示,以YUV色彩格式为例,地址0~18存放的是前向参考数据的亮度Y分量的四个块,地址18~28存放的是色度U分量,地址28~38存放的是色度V分量;而地址38~56存放的后向参考帧的亮度Y分量,地址56~66存放的是后向参考帧的色度U分量,地址66~76存放的是后向参考帧的色度V分量。
图5示出了本发明实施例提供的用于实现上述图像插值方法的装置的结构原理,为了便于描述,仅示出了与本发明实施例相关的部分,该装置可以集成 于移动多媒体处理器中。
首先,第一时序发生器502控制第一插值运算单元501从系统参考缓存区508中读取前向参考帧数据,然后第二时序发生器504控制第二插值运算单元503从参考缓存器508中读取后向参考帧数据,插值运算触发单元505同时向第一插值运算单元501和第二插值运算单元503发出插值运算触发信号,同时启动第一插值运算单元501进行前向插值运算和第二插值运算单元503进行后向插值运算,运算完毕分别得到前向预测值和后向预测值,加权运算单元509将前向预测值和后向预测值进行加权运算,像素值生成单元510将加权运算单元509运算得到的结果与系统残差值相加最终产生最后的像素值。其中控制第一插值运算单元501和第二插值运算单元503的基本时序如上文所述,此处不再赘述。
本发明实施例提供的移动多媒体处理器还可以支持旋转功能,如图5所示,第一运动矢量变换单元506根据图像旋转角度将与前向参考帧数据对应的运动矢量进行变换处理,并将处理后的结果输出至第一插值运算单元501,第一插值运算单元501进而根据第一运动矢量变换单元506的运动矢量变换结果对前向参考帧数据进行插值运算,同理,第二运动矢量变换单元507根据图像旋转角度将与后向参考帧数据对应的运动矢量进行变换处理,并将处理后的结果输出至第二插值运算单元503,第二插值运算单元503进而根据第二运动矢量变换单元507的运动矢量变换结果对后向参考帧数据进行插值运算,其中第一运动矢量变换单元506和第二运动矢量变换单元507进矢量变换的原理如上文所述,此处不再赘述。
本发明实施例提供的移动多媒体处理器还支持半像素插值和GMC插值模式(即S帧模式)。
图6示出了对于半像素的插值原理,其中A、B、C、D为整像素点位置,a、b、c为半像素点位置,对于半像素点的插值计算如下:
a=(A+B+1-rounding)/2
b=(A+C+1-rounding)/2
c=(A+B+C+D+2-rounding)/4
其中rounding为插值计算的四舍五入修正值,本装置在进行半像素插值时同样可以支持旋转功能,不再赘述。
对于GMC插值模式,使用本发明实施例提供的实现图像插值方法的装置的进行GMC插值运算时首先对GMC插值公式进行化简,以ri和rj分别表示X方向和Y方向的插值参数,以f0表示两个像素点的值(高16位是一个像素点的值,低16位是另外一个像素点的值),其中ri和rj与参考点的位置有关,以ri×f0为例说明化简过程,ri=(16-i)×216+i,f0=x1×216+x0,则
ri×f0=((16-i)×216+i)×(x1×216+x0),展开后得到
ri×f0=x0×i+((16-i)×x0+x1×i)×216+(16-i)×x1×232
将上述结果与0x0fff0000相与,则
ri×f0=((16-i)×x0+x1×i),其中x0和x1的范围为0~255,i的范围为0~16,0x0fff0000表示取出其中的16到24位的数据,可以看出ri×f0已经化简为(16-i)×x0和x1×i的乘加运算了,进而可以使用本发明实施例提供的移动多媒体处理器中的第一运算单元和第二运算单元分别进行这两项的乘加运算,从而最终参与GMC插值运算的乘法器的数量有所减少,在减少插值运算部分占用芯片的面积同时也降低了成本。
本发明实施例提供的移动多媒体处理器通过参数的设置修改还可以用于其他的视频算法。
本发明实施例还提供了一种多媒体播放终端,该多媒体播放终端包含一移动多媒体处理器,该移动多媒体处理器采用上述移动多媒体处理器,具体不再赘述。
本发明实施例中,分别从系统参考缓存区中读取前向参考帧数据和后向参考帧数据,并同时启动进行前向插值运算和后向插值运算,从而省去了存放前向预测值的数据缓存,相比于以前帧间预测的插值方法,本发明实施例对于B 帧和S帧的插值方法可以有效的减少面积以及有效的提高插值的速度。本发明实施例另外一个优点是可兼容很多的视频标准,可以有效的节约研发成本。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。