图像旋转控制方法及装置转让专利

申请号 : CN201210126351.8

文献号 : CN103377030B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄骏肖潇

申请人 : 华为技术有限公司

摘要 :

本发明实施例公开了一种图像旋转控制方法及装置,所述方法包括:按照旋转角度从第一缓存中读取第一图像的图像块,所述第一图像具有第一图像格式;将读取到的图像块写入预设的第二缓存;按照第二图像格式从所述第二缓存中读取图像数据,获得旋转后的第二图像。本发明实施例在对图像进行旋转控制的过程中,仅需要对第一缓存进行一次读操作就可以将第一图像格式的图像数据旋转生成第二图像格式的图像数据,因此与现有技术相比,该旋转控制过程减少了对终端内系统带宽的占用,在终端带宽有限的情况下,可以使其它功能模块获得有效带宽,同时也无需为增加系统带宽而浪费系统功耗。

权利要求 :

1.一种图像旋转控制方法,其特征在于,所述方法包括:按照旋转角度从第一缓存中读取第一图像的图像块,所述第一图像具有第一图像格式,不同旋转角度对应的图像块读取顺序不同;

按照第二图像格式将读取到的图像块写入预设的第二缓存;

按照第二图像格式从所述第二缓存中读取图像数据,获得旋转后的第二图像;

所述第一图像格式为Tile格式,所述第二图像格式为Linear格式。

2.根据权利要求1所述的方法,其特征在于,所述第一图像格式为Tile格式,所述第二图像格式为Linear格式,所述按照旋转角度从第一缓存中读取第一图像的图像块具体为:按照旋转角度,采用突发传输Burst方式从第一缓存中顺序读取第一图像的Tile图像块;

所述将读取到的图像块写入预设的第二缓存具体为:

将读取的Tile图像块按照从左到右的顺序依次写入所述第二缓存;

所述按照第二图像格式从所述第二缓存中读取图像数据,具体为:按照Linear格式从所述第二缓存中逐行按照从左到右的顺序读取图像数据。

3.根据权利要求2所述的方法,其特征在于,当所述旋转角度为90度时,所述按照旋转角度,采用突发传输方式从第一缓存中顺序读取第一图像的Tile图像块,包括:按照从右到左的顺序依次读取所述第一图像的一列Tile图像块;

对于每一列的Tile图像块,按照从上到下的顺序采用突发传输方式读取每一个Tile图像块;

所述将读取的Tile图像块按照从左到右的顺序依次写入所述第二缓存,包括:将所述读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存;

对于每一个Tile图像块,按照从左到右的顺序写入每个像素列;

对于每一个像素列,按照从下到上或从上到下的顺序写入每个像素数据。

4.根据权利要求2所述的方法,其特征在于,当所述旋转角度为270度时,所述按照旋转角度,采用突发传输方式从第一缓存中顺序读取第一图像的Tile图像块,包括:按照从左到右的顺序依次读取所述第一图像的一列Tile图像块;

对于每一列的Tile图像块,按照从下到上的顺序采用突发传输方式读取每一个Tile图像块;

所述将读取的Tile图像块按照从左到右的顺序依次写入所述第二缓存,包括:将所述读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存;

对于每一个Tile图像块,按照从右到左的顺序写入每个像素列;

对于每一个像素列,按照从上到下或从下到上的顺序写入每个像素数据。

5.根据权利要求2所述的方法,其特征在于,当所述旋转角度为180度时,所述按照旋转角度,采用突发传输方式从第一缓存中顺序读取第一图像的Tile图像块,包括:按照从下到上的顺序依次读取所述第一图像的一行Tile图像块;

对于每一行的Tile图像块,按照从右到左的顺序采用突发传输方式读取每一个Tile图像块;

所述将读取的Tile图像块按照从左到右的顺序依次写入所述第二缓存,包括:将所述读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存;

对于每一个Tile图像块,按照从下到上或从上到下的顺序写入每个像素行;

对于每一个像素行,按照从右到左的顺序写入每个像素数据。

6.根据权利要求2至5任意一项所述的方法,其特征在于,还包括:预先设置所述第二缓存由至少一对乒乓缓存组成,每一对乒乓缓存中的每一个缓存用于存储所述第一图像的一列Tile图像块,或一行Tile图像块;

所述按照Linear格式从所述第二缓存中逐行按照从左到右的顺序读取图像数据,具体为:当所述每一对乒乓缓存中的一个缓存存储完所述第一图像的一列Tile图像块,或一行Tile图像块后,按照Linear格式从所述一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:当按照Linear格式从所述一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据后,释放所述一个缓存的缓存空间。

8.根据权利要求1所述的方法,其特征在于,所述按照旋转角度从第一缓存中读取第一图像的图像块,具体为:按照旋转角度,每一次从第一缓存中读取所述第一图像的至少一列图像块,或一行图像块。

9.一种图像旋转控制装置,其特征在于,所述装置包括:第一读取单元,用于按照旋转角度从第一缓存中读取第一图像的图像块,所述第一图像具有第一图像格式,不同旋转角度对应的图像块读取顺序不同;

写入单元,用于按照第二图像格式将读取到的图像块写入预设的第二缓存;

第二读取单元,用于按照第二图像格式从所述第二缓存中读取图像数据,获得旋转后的第二图像;所述第一图像格式为Tile格式,所述第二图像格式为Linear格式。

10.根据权利要求9所述的装置,其特征在于,所述第一图像格式为Tile格式,所述第二图像格式为Linear格式,所述第一读取单元,具体用于按照旋转角度,采用突发传输Burst方式从第一缓存中顺序读取第一图像的Tile图像块;

所述写入单元,具体用于将读取的Tile图像块按照从左到右的顺序依次写入所述第二缓存;

所述第二读取单元,具体用于按照Linear格式从所述第二缓存中逐行按照从左到右的顺序读取图像数据。

11.根据权利要求10所述的装置,其特征在于,

所述第一读取单元包括:

旋转90度读取子单元,用于按照从右到左的顺序依次读取所述第一图像的一列Tile图像块,对于每一列的Tile图像块,按照从上到下的顺序采用突发传输方式读取每一个Tile图像块;

所述写入单元包括:

旋转90度写入子单元,用于将所述旋转90度读取子单元读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从左到右的顺序写入每个像素列,对于每一个像素列,按照从下到上或从上到下的顺序写入每个像素数据。

12.根据权利要求10所述的装置,其特征在于,

所述第一读取单元包括:

旋转270度读取子单元,用于按照从左到右的顺序依次读取所述第一图像的一列Tile图像块,对于每一列的Tile图像块,按照从下到上的顺序采用突发传输方式读取每一个Tile图像块;

所述写入单元包括:

旋转270度写入子单元,用于将所述读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从右到左的顺序写入每个像素列,对于每一个像素列,按照从上到下或从下到上的顺序写入每个像素数据。

13.根据权利要求10所述的装置,其特征在于,

所述第一读取单元包括:

旋转180度读取子单元,用于按照从下到上的顺序依次读取所述第一图像的一行Tile图像块,对于每一行的Tile图像块,按照从右到左的顺序采用突发传输方式读取每一个Tile图像块;

所述写入单元包括:

旋转180度写入子单元,用于将所述读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从下到上或从上到下的顺序写入每个像素行,对于每一个像素行,按照从右到左的顺序写入每个像素数据。

14.根据权利要求10至13任意一项所述的装置,其特征在于,所述装置还包括:设置单元,用于预先设置所述第二缓存由至少一对乒乓缓存组成,每一对乒乓缓存中的每一个缓存用于存储所述第一图像的一列Tile图像块,或一行Tile图像块;

所述第二读取单元,具体用于当所述每一对乒乓缓存中的一个缓存存储完所述第一图像的一列Tile图像块,或一行Tile图像块后,按照Linear格式从所述一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。

15.根据权利要求14所述的装置,其特征在于,所述装置还包括:释放单元,用于当所述第二读取单元按照Linear格式从所述一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取完图像数据后,释放所述一个缓存的缓存空间。

16.根据权利要求9所述的装置,其特征在于,所述第一读取单元,具体用于按照旋转角度,每一次从第一缓存中读取所述第一图像的至少一列图像块,或一行图像块。

说明书 :

图像旋转控制方法及装置

技术领域

[0001] 本发明涉及图像处理技术领域,特别是涉及图像旋转控制方法及装置。

背景技术

[0002] 现有移动终端在进行视频播放或者游戏应用时,可以利用重力感应根据手握终端的方向对显示画面进行实时旋转,以获得不同角度下的应用体验。在对显示画面进行实时旋转操作,要求终端具有较高的DDR(Double Data Rate双倍速率同步动态随机存储器)带宽。
[0003] 一种现有的旋转显示过程包括:终端内的GPU(Graphic Processing Unit,图形处理器)将DDR中原始Tile格式的图像转换为Linear格式,对DDR中Linear格式的图像进行相应角度的旋转,然后将旋转后的图像送往LCD(Liquid Crystal Display,液晶显示器)进行显示。发明人在对现有技术的研究过程中发现,在对图像进行格式转换、角度旋转及送入LCD的过程中,由于对DDR进行了多次读写操作,每一次读写操作都需要占用系统带宽,因此现有显示旋转过程对终端内系统带宽的需求较大,相应占用了终端内其他功能模块所能获得的有效带宽;而如果为了满足旋转显示的带宽需求,增加系统带宽时,则不仅会增加终端成本,也会增加终端的系统功耗。

发明内容

[0004] 本发明实施例中提供了图像旋转控制方法及装置,以解决现有技术中图像旋转控制过程占用系统带宽的问题。
[0005] 为了解决上述技术问题,本发明实施例公开了如下技术方案:
[0006] 一种图像旋转控制方法,其特征在于,所述方法包括:
[0007] 按照旋转角度从第一缓存中读取第一图像的图像块,所述第一图像具有第一图像格式;
[0008] 将读取到的图像块写入预设的第二缓存;
[0009] 按照第二图像格式从所述第二缓存中读取图像数据,获得旋转后的第二图像。
[0010] 一种图像旋转控制装置,其特征在于,所述装置包括:
[0011] 第一读取单元,用于按照旋转角度从第一缓存中读取第一图像的图像块,所述第一图像具有第一图像格式;
[0012] 写入单元,用于将读取到的图像块写入预设的第二缓存;
[0013] 第二读取单元,用于按照第二图像格式从所述第二缓存中读取图像数据,获得旋转后的第二图像。
[0014] 本发明实施例中,按照旋转角度从第一缓存中读取具有第一图像格式的第一图像的图像块,将读取到的图像块写入预设的第二缓存,按照第二图像格式从第二缓存中读取图像数据,获得旋转后的第二图像。本发明实施例在对图像进行旋转控制的过程中,仅需要对第一缓存进行一次读操作就可以将第一图像格式的图像数据旋转生成第二图像格式的图像数据,因此与现有技术相比,该旋转控制过程减少了对终端内系统带宽的占用,在终端带宽有限的情况下,可以使其它功能模块获得有效带宽,同时也无需为增加系统带宽而浪费系统功耗。

附图说明

[0015] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0016] 图1为本发明图像旋转控制方法的第一实施例流程图;
[0017] 图2A为本发明实施例中Tile格式的图像示意图;
[0018] 图2B为本发明实施例中Linear格式的图像示意图;
[0019] 图3A为本发明图像旋转控制方法的第二实施例流程图;
[0020] 图3B为图3A中从DDR中读取Tile图像块并写入旋转Buffer的过程示意图;
[0021] 图3C为从图3B的旋转Buffer中读取出Linear格式图像的过程示意图;
[0022] 图4A为本发明图像旋转控制方法的第三实施例流程图;
[0023] 图4B为图4A中从DDR中读取Tile图像块并写入旋转Buffer的过程示意图;
[0024] 图5A为本发明图像旋转控制方法的第四实施例流程图;
[0025] 图5B为图5A中从DDR中读取Tile图像块并写入旋转Buffer的过程示意图;
[0026] 图6为本发明图像旋转控制装置的第一实施例框图;
[0027] 图7为本发明图像旋转控制装置的第二实施例框图。

具体实施方式

[0028] 本发明如下实施例提供了图像旋转控制方法及装置。
[0029] 为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
[0030] 参见图1,为本发明图像旋转控制方法的第一实施例流程图:
[0031] 步骤101:按照旋转角度从第一缓存中读取第一图像的图像块,该第一图像具有第一图像格式。
[0032] 根据旋转角度的不同,本发明实施例中的图像旋转控制通常指将图像旋转90度、270度、或180度。
[0033] 其中,当第一图像格式具体为Tile格式,按照旋转角度,可以采用Burst(突发传输)方式从第一缓存中顺序读取第一图像的Tile图像块,Burst方式指对像素地址连续的图像进行读取的方式,由于每个Tile图像块的像素地址连续,因此可以采用Burst方式对Tile图像块进行读取。
[0034] 本步骤中,可以每一次从第一缓存中读取第一图像的至少一列图像块,或一行图像块。相应的,按照每一次读取的第一图像的图像块的列数或行数的不同设置相应的第二缓存的空间大小。
[0035] 步骤102:将读取到的图像块写入预设的第二缓存。
[0036] 当第一图像格式具体为Tile格式,则将读取的Tile图像块按照从左到右的顺序依次写入第二缓存。其中,该第二缓存可以由至少一对乒乓缓存组成,每一对乒乓缓存中的每一个缓存用于存储所述第一图像的一列Tile图像块,或一行Tile图像块。除了采用乒乓缓存作为第二缓存的具体形式外,在对实时性能要求不高的图像旋转控制过程中,第二缓存也可以采用单缓存的形式,在对实时性能要求较高的图像旋转控制过程中,第二缓存也可以采用三个以上的缓存。
[0037] 步骤103:按照第二图像格式从第二缓存中读取图像数据,获得旋转后的第二图像。
[0038] 当第一图像格式具体为Tile格式,第二图像格式具体为Linear格式,则按照Linear格式从第二缓存中逐行按照从左到右的顺序读取图像数据。
[0039] 当步骤102中设置的第二缓存为至少一对乒乓缓存时,则当每一对乒乓缓存中的一个缓存存储完第一图像的一列Tile图像块,或一行Tile图像块后,按照Linear格式从一个缓存中逐行按照从左到右的顺序读取图像数据。进一步,当按照Linear格式从一个缓存中逐行按照从左到右的顺序读取完图像数据后,释放一个缓存的缓存空间。
[0040] 由上述实施例可见,该实施例在对图像进行旋转控制的过程中,仅需要对第一缓存进行一次读操作就可以将第一图像格式的图像数据旋转生成第二图像格式的图像数据,因此与现有技术相比,该旋转控制过程减少了对终端内系统带宽的占用,在终端带宽有限的情况下,可以使其它功能模块获得有效带宽,同时也无需为增加系统带宽而浪费系统功耗。
[0041] 下面以将Tile格式的图像旋转为Linear格式的图像的过程为例,详细描述本发明图像旋转控制方法的实施例,其中为了便于说明Tile格式和Linear格式的图像,假设图像的像素为8*8。
[0042] 参见图2A,为Tile格式的图像示意图:当像素为8*8的图像为Tile格式时,可以将该图像分为四个Tile图像块,分别用1、2、3、4进行标示,每个Tile块的像素为4*4,即共有4行4列共16个像素,上述16个像素如图2A中按照箭头与虚线的方向进行连续地址编号,即上一行的最后一个像素与下一行的第一个像素地址连续;而对于标号相邻的两个Tile块,则前一个Tile块的最后一个像素与下一个Tile块的第一个像素地址连续。
[0043] 参见图2B,为Linear格式的图像示意图:与Tile格式的图像不同,Linear格式不对图像进行分块,而是直接对整个图像按行进行划分,每一行的像素之间地址连续,如图2B中按照箭头与虚线的方向在行像素之间进行连续地址编号。
[0044] 本发明实施例可以将Tile格式的图像写入作为第二缓存的旋转Buffer中,然后直接从旋转Buffer中读出Linear格式的图像,即在一次读写过程中完成图像旋转,与现有采用多次读写完成图像旋转的方案相比,可以减少对系统带宽的占用。下面结合不同旋转角度下的旋转显示控制过程对本发明实施例进行详细描述。
[0045] 参见图3A,为本发明图像旋转控制方法的第二实施例流程图,该实施例示出了由四个Tile图像块组成的图像旋转90度时的显示控制过程:
[0046] 步骤301:预先设置作为第二缓存的旋转Buffer由一对乒乓缓存组成,该乒乓缓存中的每一个缓存用于存储第一图像的一列Tile图像块。
[0047] 步骤302:从作为第一缓存的DDR中按照从右到左的顺序依次读取第一图像的一列Tile图像块,对于每一列的Tile图像块,按照从上到下的顺序采用Burst方式读取每一个Tile图像块。
[0048] 步骤303:将读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从左到右的顺序写入每个像素列,对于每一个像素列,按照从下到上或从上到下的顺序写入每个像素数据。
[0049] 步骤304:判断乒乓缓存中的一个缓存是否写满,若是,则执行步骤305,否则,返回步骤302。
[0050] 步骤305:按照Linear格式从一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。
[0051] 其中,当步骤303中按照从下到上的顺序写入每个像素数据时,则本步骤中按照从上到下逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据;当步骤303中按照从上到下的顺序写入每个像素数据时,则本步骤中按照从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。
[0052] 步骤306:判断是否读取完一个缓存中的图像数据,若是,则执行步骤307;否则,返回步骤305。
[0053] 步骤307:释放已读取完图像数据的一个缓存的缓存空间。
[0054] 步骤308:判断是否读取完第一图像的所有Tile图像块列,若是,则结束当前流程,否则,返回步骤302。
[0055] 参见图3B,为图3A中从DDR中读取Tile图像块并写入旋转Buffer的过程示意图:
[0056] 如图3B所示,其中作为第二缓存的旋转Buffer由一对乒乓缓存组成,每个缓存的大小与第一图像的一列Tile图像块大小一致,对于由四个Tile图像块组成的第一图像,即每个缓存用于存储两个Tile图像块。
[0057] 图3B中从作为第一缓存的DDR中按照从右到左的顺序依次读取第一图像的第一列Tile图像块(包括Tile图像块2和Tile图像块4)和第二列Tile图像块(包括Tile图像块1和Tile图像块3)。结合图3B对第一列Tile图像块的读取过程进行详细描述:从Tile图像块2的第一行像素数据的第一个像素(起点1)开始,从左到右依次读取每个像素,当读取完Tile图像块2的第四行像素数据的最后一个像素后,从Tile图像块4的第一行像素数据开始,从左到右依次读取每个像素,当读取完Tile图像块4的第四行像素数据的最后一个像素(终点1)后,完成对第一列Tile图像块的读取。
[0058] 在读取完第一列Tile图像块后,将读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存。结合图3B对第一列Tile图像块的写入过程进行详细描述:对于读取到的Tile图像块2,按照从左到右的顺序写入Tile图像块2的每个像素列,对于每一个像素列,从第一个像素列的第一个像素(起点)开始按照从下到上的顺序写入每个像素,当写入完Tile图像块2的第四列像素数据的最后一个像素后,按照从左到右的顺序写入Tile图像块4的每个像素列,对于每一个像素列,从第一个像素列的第一个像素开始按照从下到上的顺序写入每个像素,当写入完Tile图像块4的第四列像素数据的最后一个像素(终点)后完成一个缓存中的Tile图像块写操作。
[0059] 同理,图3B中从DDR中读取第二列Tile图像块,并写入旋转Buffer中的过程与前述第一列Tile图像块一致,在此不再赘述。
[0060] 参见图3C,为从图3B的旋转Buffer中读取出Linear格式图像的过程示意图:
[0061] 结合图3C,本发明实施例在向旋转Buffer写入Tile图像块到从旋转Buffer中读出Linear图像的过程中完成了图像的旋转。对于图3C中旋转Buffer中的第一个乒乓缓存,当写满两个Tile图像块(Tile图像块2和Tile图像块4)后,可以按照Linear格式进行图像数据的读取,即第一个乒乓缓存中的图像数据划分为4行,依次从第一行图像数据的第一个像素(起点)开始,按照从左到右的顺序依次读取到第四行图像数据的最后一个像素(终点),完成对第一个乒乓缓存的读取;同理,从第二个乒乓缓存中按照Linear格式进行图像数据的读取过程与第一个乒乓缓存一致,在此不再赘述。上述两个乒乓缓存中的图像数据读取完成后即可组成第一图像旋转90度后的图像。
[0062] 参见图4A,为本发明图像旋转控制方法的第三实施例流程图,该实施例示出了由四个Tile图像块组成的图像旋转270度时的显示控制过程:
[0063] 步骤401:预先设置作为第二缓存的旋转Buffer由一对乒乓缓存组成,该乒乓缓存中的每一个缓存用于存储第一图像的一列Tile图像块。
[0064] 步骤402:从作为第一缓存的DDR中按照从左到右的顺序依次读取第一图像的一列Tile图像块,对于每一列的Tile图像块,按照从下到上的顺序采用Burst方式读取每一个Tile图像块。
[0065] 步骤403:将读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从右到左的顺序写入每个像素列,对于每一个像素列,按照从上到下或从下到上的顺序写入每个像素数据。
[0066] 步骤404:判断乒乓缓存中的一个缓存是否写满,若是,则执行步骤405,否则,返回步骤402。
[0067] 步骤405:按照Linear格式从一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。
[0068] 其中,当步骤403中按照从上到下的顺序写入每个像素数据时,则本步骤中按照从上到下逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据;当步骤403中按照从下到上的顺序写入每个像素数据时,则本步骤中按照从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。
[0069] 步骤406:判断是否读取完一个缓存中的图像数据,若是,则执行步骤407;否则,返回步骤405。
[0070] 步骤407:释放已读取完图像数据的一个缓存的缓存空间。
[0071] 步骤408:判断是否读取完第一图像的所有Tile图像块列,若是,则结束流程,否则,返回步骤402。
[0072] 参见图4B,为图4A中从DDR中读取Tile图像块并写入旋转Buffer的过程示意图:
[0073] 如图4B所示,其中作为第二缓存的旋转Buffer由一对乒乓缓存组成,每个缓存的大小与第一图像的一列Tile图像块大小一致,对于由四个Tile图像块组成的第一图像,即每个缓存用于存储两个Tile图像块。
[0074] 图4B中从作为第一缓存的DDR中按照从左到右的顺序依次读取第一图像的第一列Tile图像块(包括Tile图像块1和Tile图像块3)和第二列Tile图像块(包括Tile图像块2和Tile图像块3)。结合图4B对第一列Tile图像块的读取过程进行详细描述:从Tile图像块3的第一行像素数据的第一个像素(起点1)开始,从左到右依次读取每个像素,当读取完Tile图像块3的第四行像素数据的最后一个像素后,从Tile图像块1的第一行像素数据开始,从左到右依次读取每个像素,当读取完Tile图像块1的第四行像素数据的最后一个像素(终点1)后,完成对第一列Tile图像块的读取。
[0075] 在读取完第一列Tile图像块后,将读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存。结合图4B对第一列Tile图像块的写入过程进行详细描述:对于读取到的Tile图像块3,按照从右到左的顺序写入Tile图像块3的每个像素列,对于每一个像素列,从第一个像素列的第一个像素(起点)开始按照从上到下的顺序写入每个像素,当写入完Tile图像块3的第四列像素数据的最后一个像素后,按照从右到左的顺序写入Tile图像块1的每个像素列,对于每一个像素列,从第一个像素列的第一个像素开始按照从上到下的顺序写入每个像素,当写入完Tile图像块1的第四列像素数据的最后一个像素(终点)后完成一个缓存中的Tile图像块写操作。
[0076] 同理,图4B中从DDR中读取第二列Tile图像块,并写入旋转Buffer中的过程与前述第一列Tile图像块一致,在此不再赘述。
[0077] 从图4B的旋转Buffer中读取出Linear格式图像的过程仍然结合前述图3C进行描述:
[0078] 本发明实施例在向旋转Buffer写入Tile图像块到从旋转Buffer中读出Linear图像的过程中完成了图像的旋转。对于图3C中旋转Buffer中的第一个乒乓缓存,当写满两个Tile图像块(Tile图像块1和Tile图像块3)后,可以按照Linear格式进行图像数据的读取,即第一个乒乓缓存中的图像数据划分为4行,依次从第一行图像数据的第一个像素(起点)开始,按照从左到右的顺序依次读取到第四行图像数据的最后一个像素(终点),完成对第一个乒乓缓存的读取;同理,从第二个乒乓缓存中按照Linear格式进行图像数据的读取过程与第一个乒乓缓存一致,在此不再赘述。上述两个乒乓缓存中的图像数据读取完成后即可组成第一图像旋转270度后的图像。
[0079] 参见图5A,为本发明图像旋转控制方法的第四实施例流程图,该实施例示出了由四个Tile图像块组成的图像旋转180度时的显示控制过程:
[0080] 步骤501:预先设置作为第二缓存的旋转Buffer由一对乒乓缓存组成,该乒乓缓存中的每一个缓存用于存储第一图像的一列Tile图像块。
[0081] 步骤502:从作为第一缓存的DDR中按照从下到上的顺序依次读取第一图像的一行Tile图像块,对于每一行的Tile图像块,按照从右到左的顺序采用Burst方式读取每一个Tile图像块。
[0082] 步骤503:将读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从下到上或从上到下的顺序写入每个像素行,对于每一个像素行,按照从右到左的顺序写入每个像素数据。
[0083] 步骤504:判断乒乓缓存中的一个缓存是否写满,若是,则执行步骤505,否则,返回步骤502。
[0084] 步骤505:按照Linear格式从一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。
[0085] 其中,当步骤503中按照从下到上的顺序写入每个像素行时,则本步骤中按照从上到下逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据;当步骤503中按照从上到下的顺序写入每个像素行时,则本步骤中按照从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据。
[0086] 步骤506:判断是否读取完一个缓存中的图像数据,若是,则执行步骤507;否则,返回步骤505。
[0087] 步骤507:释放已读取完图像数据的一个缓存的缓存空间。
[0088] 步骤508:判断是否读取完第一图像的所有Tile图像块行,若是,则结束流程,否则,返回步骤502。
[0089] 参见图5B,为图5A中从DDR中读取Tile图像块并写入旋转Buffer的过程示意图:
[0090] 如图5B所示,其中作为第二缓存的旋转Buffer由一对乒乓缓存组成,每个缓存的大小与第一图像的一行Tile图像块大小一致,对于由四个Tile图像块组成的第一图像,即每个缓存用于存储两个Tile图像块。
[0091] 图5B中从作为第一缓存的DDR中按照从下到上的顺序依次读取第一图像的第一行Tile图像块(包括Tile图像块3和Tile图像块4)和第二行Tile图像块(包括Tile图像块1和Tile图像块2)。结合图5B对第一行Tile图像块的读取过程进行详细描述:从Tile图像块4的第一行像素数据的第一个像素(起点1)开始,从左到右依次读取每个像素,当读取完Tile图像块4的第四行像素数据的最后一个像素后,从Tile图像块3的第一行像素数据开始,从左到右依次读取每个像素,当读取完Tile图像块3的第四行像素数据的最后一个像素(终点1)后,完成对第一行Tile图像块的读取。
[0092] 在读取完第一行Tile图像块后,将读取的Tile图像块按照从左到右的顺序依次写入乒乓缓存中的一个缓存。结合图5B对第一行Tile图像块的写入过程进行详细描述:对于读取到的Tile图像块4,按照从下到上的顺序写入Tile图像块4的每个像素行,对于每一个像素行,从第一个像素行的第一个像素(起点)开始按照从右到左的顺序写入每个像素,当写入完Tile图像块4的第四行像素数据的最后一个像素后,按照从下到上的顺序写入Tile图像块3的每个像素行,对于每一个像素行,从第一个像素行的第一个像素开始按照从右到左的顺序写入每个像素,当写入完Tile图像块3的第四行像素数据的最后一个像素(终点)后完成一个缓存中的Tile图像块写操作。
[0093] 同理,图5B中从DDR中读取第二行Tile图像块,并写入旋转Buffer中的过程与前述第一行Tile图像块一致,在此不再赘述。
[0094] 从图5B的旋转Buffer中读取出Linear格式图像的过程仍然结合前述图3C进行描述:
[0095] 本发明实施例在向旋转Buffer写入Tile图像块到从旋转Buffer中读出Linear图像的过程中完成了图像的旋转。对于图3C中旋转Buffer中的第一个乒乓缓存,当写满两个Tile图像块(Tile图像块4和Tile图像块3)后,可以按照Linear格式进行图像数据的读取,即第一个乒乓缓存中的图像数据划分为4行,依次从第一行图像数据的第一个像素(起点)开始,按照从左到右的顺序依次读取到第四行图像数据的最后一个像素(终点),完成对第一个乒乓缓存的读取;同理,从第二个乒乓缓存中按照Linear格式进行图像数据的读取过程与第一个乒乓缓存一致,在此不再赘述。上述两个乒乓缓存中的图像数据读取完成后即可组成第一图像旋转180度后的图像。
[0096] 与本发明图像旋转控制方法的实施例相对应,本发明还提供了图像旋转控制装置的实施例。
[0097] 参见图6,为本发明图像旋转控制装置的第一实施例框图:
[0098] 该图像旋转控制装置包括:第一读取单元610、写入单元620和第二读取单元630。
[0099] 其中,第一读取单元610,用于按照旋转角度从第一缓存中读取第一图像的图像块,所述第一图像具有第一图像格式;所述第一读取单元610,还可以具体用于按照旋转角度,每一次从第一缓存中读取所述第一图像的至少一列图像块,或一行图像块;
[0100] 写入单元620,用于将读取到的图像块写入预设的第二缓存;
[0101] 第二读取单元630,用于按照第二图像格式从所述第二缓存中读取图像数据,获得旋转后的第二图像。
[0102] 其中,当所述第一图像格式为Tile格式,所述第二图像格式为Linear格式时,所述第一读取单元610,具体用于按照旋转角度,采用突发传输Burst方式从第一缓存中顺序读取第一图像的Tile图像块;所述写入单元620,具体用于将读取的Tile图像块按照从左到右的顺序依次写入所述第二缓存;所述第二读取单元630,具体用于按照Linear格式从所述第二缓存中逐行按照从左到右的顺序读取图像数据。
[0103] 具体的,所述第一读取单元610可以包括(图6中未示出):
[0104] 旋转90度读取子单元,用于按照从右到左的顺序依次读取所述第一图像的一列Tile图像块,对于每一列的Tile图像块,按照从上到下的顺序采用突发传输方式读取每一个Tile图像块;
[0105] 旋转270度读取子单元,用于按照从左到右的顺序依次读取所述第一图像的一列Tile图像块,对于每一列的Tile图像块,按照从下到上的顺序采用突发传输方式读取每一个Tile图像块;
[0106] 旋转180度读取子单元,用于按照从下到上的顺序依次读取所述第一图像的一行Tile图像块,对于每一行的Tile图像块,按照从右到左的顺序采用突发传输方式读取每一个Tile图像块。
[0107] 相应的,所述写入单元620可以包括(图6中未示出):
[0108] 旋转90度写入子单元,用于将所述旋转90度读取子单元读取的Tile图像块按照从左到右的顺序依次写入所述乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从左到右的顺序写入每个像素列,对于每一个像素列,按照从下到上或从上到下的顺序写入每个像素数据;
[0109] 旋转270度写入子单元,用于将所述读取的Tile图像块按照从左到右的顺序依次写入所述乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从右到左的顺序写入每个像素列,对于每一个像素列,按照从上到下或从下到上的顺序写入每个像素数据;
[0110] 旋转180度写入子单元,用于将所述读取的Tile图像块按照从左到右的顺序依次写入所述乒乓缓存中的一个缓存,对于每一个Tile图像块,按照从下到上或从上到下的顺序写入每个像素行,对于每一个像素行,按照从右到左的顺序写入每个像素数据。
[0111] 参见图7,为本发明图像旋转控制装置的第二实施例框图:
[0112] 该图像旋转控制装置包括:设置单元710、第一读取单元720、写入单元730、第二读取单元740和释放单元750。
[0113] 其中,设置单元710,用于预先设置所述第二缓存由至少一对乒乓缓存组成,每一对乒乓缓存中的每一个缓存用于存储所述第一图像的一列Tile图像块,或一行Tile图像块;
[0114] 所述第一读取单元720,用于按照旋转角度,采用突发传输Burst方式从第一缓存中顺序读取第一图像的Tile图像块;
[0115] 所述写入单元730,用于将读取的Tile图像块按照从左到右的顺序依次写入所述一对乒乓缓存的一个缓存;
[0116] 所述第二读取单元740,用于当所述每一对乒乓缓存中的一个缓存存储完所述第一图像的一列Tile图像块,或一行Tile图像块后,按照Linear格式从所述一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取图像数据;
[0117] 释放单元750,用于当所述第二读取单元740按照Linear格式从所述一个缓存中按照从上到下或从下到上逐行读取每个像素行,对于每一个像素行,按照从左到右的顺序读取完图像数据后,释放所述一个缓存的缓存空间。
[0118] 需要说明的是,本发明实施例中的图像旋转控制装置可以为终端显示装置的一部分,也可以集成在终端的其它装置中。该图像旋转控制装置在获得旋转后的第二图像后,可以对该第二图像进行其它处理后,输入到显示屏进行输出显示。
[0119] 由上述实施例可见,本发明实施例中按照旋转角度从第一缓存中读取具有第一图像格式的第一图像的图像块,将读取到的图像块写入预设的第二缓存,按照第二图像格式从第二缓存中读取图像数据,获得旋转后的第二图像。本发明实施例在对图像进行旋转控制的过程中,仅需要对第一缓存进行一次读操作就可以将第一图像格式的图像数据旋转生成第二图像格式的图像数据,,因此与现有技术相比,该旋转控制过程减少了对终端内系统带宽的占用,在终端带宽有限的情况下,可以使其它功能模块获得有效带宽,同时也无需为增加系统带宽而浪费系统功耗。
[0120] 本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0121] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0122] 以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。