任意形状图像的基于块的旋转的制作方法

文档序号:6416412阅读:151来源:国知局
专利名称:任意形状图像的基于块的旋转的制作方法
技术领域
本发明通常涉及数字图像数据的操作,并且特别地涉及图像数据的旋转。
背景技术
计算机或者其他数据处理系统中的图形或者图像数据处理常常是计算代价非常高的,需要大量的内存和处理器资源。在许多数据处理系统中,图像由像素元或者“像素”的阵列表示,每个像素具有“颜颜色深度度”,其定义了每个像素中可以表达的色彩变化的总数。随着图像的分辨率和/或颜颜色深度度的增加,图像的感知质量,其可反映为真实度、准确度、税度、抖动等,也会增加。因此,存在对支持具有增加的分辨率和/或颜颜色深度度的图像的数据处理系统的持续需要。
作为一般的规则,图像的分辨率和/或颜色深度越大,所需用于表现图像的图像数据量就越大。而且,随着用于表现图像的图像数据量增加,所需用于存储、传送和操作图像的计算机资源量也会增加。
典型地需要相当大量计算资源的一种具体类型的图形操作是图像旋转。诸如为了显示、传真、复印和打印目的,在横向和纵向取向之间转换图像时,图像旋转具有许多有用的优点。而且,计算机辅助设计、图形设计、图像处理以及其他视频和图形开发环境常常利用图像旋转,用以操作用户创建文件中的图像数据。而且,可以设想,随着手持电子设备变得更加普遍,将存在对能够以不同的视角显示图像的更加灵活的显示器的需要,以适应设备的多种形状因素。
传统的图像旋转算法典型地通过软件实现,并且牵涉许多计算代价高的矩阵变换操作。该算法典型地受限于操作矩形的图像,诸如存储在帧缓冲器中的整个图像。而且,由于所需用于执行该矩阵变换的大量的计算资源,大部分基于软件的算法不能良好地适用于低功率应用,诸如手持设备、无线通讯设备、数码相机、等。
为了解决大部分基于软件的算法的昂贵资源需求,已尝试使用专用的硬件执行某些图像旋转功能。例如,专用存储器存取电路已被使用来允许出现对帧缓冲器的非连续访问,由此帧缓冲器是逐列读出的,而不是逐行读出的,用以有效地在显示器上产生90度的旋转图像。然而,对存储缓冲器的非连续访问常常是低效率的,并且可能绕过了其他性能增强电路,诸如存储器缓存和预取电路,并且因此可能对性能有负面的影响。而且,该硬件加速常常受限于非常特殊的应用,并且常常仅限于服务于特定尺寸的矩形图像。
尽管传统的图像旋转算法将注意力集中于矩形图像,这在许多应用常常是足够满足需要的,但是在某些应用中,这样做趋向于在图像旋转处理过程中引入低效率。例如,使用传统的图像旋转算法,必须由矩形区域限定图像,用于由该算法进行处理。然而,对于图像中有密切关系的(非背景)图像数据的形状实质上是非矩形的情况,由矩形限定该区域可能引入相当大量的空白或者背景数据。然而,大部分传统的图像旋转算法不能确定图像数据何时与图像密切相关,或者该图像数据何时构成背景颜色,因此矩形区域中的所有图像数据是粗略地以相同的方式进行处理的。因此,大量的处理资源可能花费在旋转与正旋转的实际图像不是特别密切相关的图像数据上。
因此,持续存在对针对不同应用具有广泛适用范围的灵活的图像旋转算法的显著需要。特别地,存在对这样的图像旋转算法的需要,即,其可与各种类型的图像结合使用,包括各种图像尺寸和形状,并且其适用于具有各种硬件和/或软件性能的数据处理系统。

发明内容
本发明解决了与现有技术领域相关的这些及其他的问题,提供了装置、程序产品和方法,其中使用基于块的方法旋转图像数据,其中对于定义了图像的多个图像数据块中的每一个,对该块应用移位向量,用以使该块绕旋转点移位所需的旋转角度,例如,使该块的锚位置自源点移位至目标点。此外,根据所需的旋转角度旋转该块中的图像数据,由此当已旋转的图像数据存储在块的目标点时,该块中的图像数据有效地旋转至所需的位置。
而且,在根据本发明的某些实施例中,旋转缓冲器可用于通过临时存储重叠的图像数据块,来协助图像数据块的旋转。通常,通过这样做,可以在存储器中原位执行图像旋转,这样消除了在图像旋转过程中对单独的源存储器和目标存储器的需要。
在形成本文一部分的附属权利要求中陈述了体现本发明特征的这些及其他优点和特征。然而,为了更好地理解本发明,并且为了更好地理解通过其使用而获得的优点和目的,应参考附图以及附属的描述性内容,其中描述了本发明的示例性实施例。


图1是根据本发明实现基于块的图像旋转的装置的框图。
图2A~2C是说明了适用于根据本发明的基于块的图像旋转算法的不同示例性源/目标存储器配置的框图。
图3是说明了能够由图1的装置执行的示例性图像旋转程序中的主要操作的流程图。
图4是将使用图3的程序使之绕旋转中心旋转的示例性图像的框图。
图5是说明了图4的图像绕旋转中心旋转90、180和270度的框图。
图6是说明了针对图3程序的替换图像旋转程序的流程图,用于处理图像中块之间的重叠。
图7是说明了能够由图1装置执行的创建块列表程序的流程图。
图8是能够由图7的程序生成、并且适于与块目标地址的动态生成结合使用的示例性块列表数据结构的框图。
图9是能够由图7的程序生成、并且适于与预存储的块目标地址结合使用的另一示例性块列表数据结构的框图。
图10是说明了图1的装置中源存储器和目标存储器之间的数据流的框图。
图11是说明了图10中涉及的块读处理的程序流程的流程图。
图12是说明了图10中涉及的块写处理的程序流程的流程图。
图13是用于图12的块写处理的示例性旋转缓冲器地址计算电路的框图。
图14是将使用图1的装置使之绕旋转中心旋转的另一示例性图像的框图。
图15是表示对于图14的示例性图像的一个示例性块排序的树形图。
图16是表示对于图14的示例性图像的另一示例性块排序的树形图。
具体实施例方式
所说明的本发明的实施例实现了基于块的图像旋转,用以协助电子设备中的快速的和有效的图像数据旋转。如下文将更加显而易见的是,在硬件和软件中常常不同程度地实现了此处描述的实施例,用以支持大量的应用,包括低成本和/或低功率的应用,诸如在手持和无线通讯设备中所期望的应用,这些设备诸如PDA、蜂窝电话等等。而且,尽管此处描述的实施例可用于旋转矩形图像的图像数据,但是本发明的原理实际上可应用于具有任何形状的图像,包括非矩形图像,其中图像自身的边界或者用于定义图像的块的边界限定了非矩形的周界。
如下文将变得显而易见的,根据本发明的实施例通过处理被组织为多个块的图像数据来旋转图像。对于每个独立的块,移位向量施加到该块,用以使该块绕旋转点移位所需的旋转角度。此外,典型地通过使用结合了专用旋转加速电路的旋转缓冲器,根据所需的旋转角度,旋转每个块中的图像数据。通过组合块的移位和块中的图像数据的旋转,图像数据块有效地旋转至其所需的位置。
现在转到附图,其中同样的数字表示全部数幅图中同样的部分,图1示出了关于装置10的示例性硬件和软件环境,其结合了根据本发明的基于块的图像旋转。对于本发明的目的而言,装置10实际上可以表示任何类型的计算机、计算机系统或其他可编程电子设备,包括客户机计算机、服务器计算机、便携式计算机、手持计算机、嵌入式控制器等。而且,装置10可以使用例如集群中的一个或者多个联网计算机或者其他的分布式计算系统实现。在下文中装置10还将被称为“计算机”,尽管应该认识到,术语“装置”还可以包括与本发明相一致的其他适合的可编程电子设备。
计算机10典型地包括系统总线12,包括耦合到存储器16的一个或者多个微处理器的中央处理单元(CPU)14耦合到该系统总线12,存储器16可以表示包括计算机10的主存储器的随机存取存储器(RAM)设备,以及任何补充级的存储器,例如,高速缓存、非易失性或者备份存储器(例如,可编程存储器或者快闪存储器)、只读存储器等。此外,存储器16可被认为包括物理上位于计算机10中其他位置的记忆存储器,例如,CPU14中处理器中的任何高速缓存,以及用作虚拟内存的任何存储容量,例如,存储在海量存储设备上或者耦合到计算机10的另一计算机上。
此外,存储控制器18耦合到系统总线12,其用于提供对非易失性存储的不同源的存取,例如,软盘或者其他可移动磁盘驱动器、硬盘驱动器、直接存取存储设备(DASD)、光驱(例如,CD驱动器、DVD驱动器等)和/或磁带驱动器,等等。而且,计算机10还可以包括网络控制器20,用以提供与一个或者多个外部网络(例如,LAN、WAN、无线网络和/或互联网,等等)的接口。计算机10还典型地例如经由键盘、鼠标、轨迹球、游戏摇柄、触控板和/或麦克风等等,接收来自用户的输入。典型地通过图形系统实现对用户的信息显示,其包括驱动显示器24(诸如,CRT显示器、LCD显示板等)的图形引擎22。可以经由网络控制器20自另一计算机或者终端接收并向其传送附加的用户输入。
为了实现根据本发明的基于块的图像旋转,在计算机10中使用了不同的硬件和软件部件的组合。特别地,在计算机10中实现作为设置在图像或视频适配卡上的图形控制器的图形引擎22。所示驻留在存储器16的程序空间中的操作系统26使用不同的设备驱动器,包括显示驱动器28,用以处理计算机中的大量的输入和输出操作。具体地,显示驱动器28定制用于图形引擎22,并且其在该显示驱动器中,其中出现了与基于块的图像旋转相关的大量基于软件的功能性。
在本领域所公知的处理中,显示驱动器28中的功能典型地通过一个或者多个应用程序30来访问,用以最终在显示器24上描绘或者绘制所需的图像数据。结合这些活动,显示驱动器28典型地在一个或者多个虚拟帧缓冲器32中建立了所需待显示的图像,所示虚拟帧缓冲器32驻留在存储器16的数据空间中。
在存储器16中还说明了结合根据本发明的基于块的图像旋转使用的各种附加的软件部件,包括多个通用对象描述34和针对多个视图A..X定义的多个对象块列表36、38。
从硬件的观点来看,图形引擎22依赖于许多硬件部件,包括旋转/移位控制器40、本地帧缓冲器42和旋转缓冲器44。控制器40被用于管理处理图像数据旋转和移位的硬件处理。本地帧缓冲器42是高速存储器,用于存储由分立的控制器读出以驱动显示器24的图像数据。旋转缓冲器44被用于临时地存储图像数据,并且可以包括旋转加速电路,用于使用多个已知的图像数据旋转电路中的任何电路来旋转存储于其中的图像数据。考虑到此处描述的实施例中可以处理在每边仅具有几个像素的块尺寸,应当认识到,在某些实施例中可以使用基于硬件的给定块中的图像数据旋转,用以在相对简单和紧凑的硬件电路中提供及其快速的旋转。
如下文将变得显而易见的,根据本发明的基于块的图像旋转可以使用旋转缓冲器来旋转存储在源存储器中的图像数据,并且将已旋转的图像数据存储在目标存储器中。确切的是,不同的实施例中用于源和目标存储器的硬件部件可以有所不同,并且如图1所示的计算机10的配置中可以支持这些硬件部件。
例如,如图2A所示,使用外部存储器52可以实现结合了旋转缓冲器50使用的源和目标存储器,例如,用以支持存储在虚拟帧缓冲器中的图像数据的旋转。而且,图像数据所读出或者写回的外部存储器的特定区域可以是相同的,或者可以是不同的,在源和目标区域相同时,使用如下文将更加详细描述的重叠处理。
在替换方案中,如图2B所示,旋转缓冲器54可以将外部存储器56用作源存储器,同时将本地帧缓冲器58用作目标存储器。在其他的实施例中,例如如图2C所示,旋转缓冲器60可以使本地帧缓冲器62既用作源存储器又用作目标存储器,用于结合图像旋转使用。根据本发明还可以使用源和目标存储器的其他配置。
回到图1,受益于本公开内容的本领域普通技术人员所理解的另外功能也可以并入到根据本发明的图形引擎22中,包括各种2D和3D处理引擎。而且,根据本发明,硬件和软件部件的其他组合可以用于实现此处描述的基于块的图像旋转功能。因此,本发明不限于此处讨论的具体实现方案。
通常,从软件的观点来看,所执行用于实现本发明的不同实施例中使用的任何功能的程序,不论其是作为操作系统的一部分实现还是作为具体的应用、部件、程序、对象、模块或者指令序列,或者甚至它们的子集,在此处都将被称为“计算机程序代码”或者简单地被称为“程序代码”。程序代码典型地包括一条或者多条指令,其在不同的时间驻留在计算机中不同的存储器或存储设备中,并且在由计算机中的一个或者多个处理器读取和执行时,使该计算机执行所需用于执行体现本发明的不同方面的步骤或元件的步骤。而且,尽管在功能完善的计算机和计算机系统的背景下已经描述了本发明,并且下文将在该背景下描述本发明,但是本领域的技术人员应认识到,本发明的不同的实施例能够作为多种形式的程序产品进行分布,并且本发明同样适用于,而不考虑用于实际实现该分布的信号承载介质的具体类型。信号承载介质包括,但不限于,可记录类型的介质,诸如易失性和非易失性存储设备,软盘和其他可移动磁盘、硬盘驱动器、磁带、光盘(例如,CD-ROM、DVD等)等等,和传输介质类型,诸如数字和模拟通信链路。
此外,下文描述的各种程序代码可以基于其中以本发明的具体实施例实现其的应用来进行识别。然而,应当认识到,所遵循的任何具体的程序命名仅用于简便的目的,并且因此,本发明不应限于在由该命名识别和/或意指的任何具体应用中唯一地使用。而且,考虑到典型地无穷数量的方式,其中计算机程序可被组织为程序、进程、方法、模块、对象等等,以及不同的方式,其中程序功能可以分配到驻留在典型计算机中的各种软件层中(例如,操作系统、库、API、应用、applet等),应当认识到,本发明不限于此处描述的程序功能的具体组织和分配。
而且,从硬件的观点来看,此处讨论的任何基于硬件的功能典型地在结合了一个或者多个集成电路设备、以及另外的支持电子元件的电路配置中得以实现。而且,如本领域所公知的,典型地使用一个或者多个计算机数据文件设计和制造集成电路设备,在此处被称为硬件定义程序,其定义了设备上的电路配置的版图。该程序典型地由设计工具生成,并且随后在用于创建版图掩模的制造过程中使用该程序,该版图掩模定义了应用到半导体晶片上的电路配置。典型地,使用硬件定义语言(HDL),诸如VHDL、verilog、EDIF等,以预定的格式提供该程序。尽管在功能完善的集成电路设备和使用该设备的数据处理系统中实现电路配置的背景下,已经描述了本发明并且下文还将描述本发明,但是本领域的技术人员应认识到,根据本发明的电路配置也能够作为多种形式的程序产品进行分布,并且本发明同样适用,而不考虑用于实际实现该分布的信号承载介质的具体类型。
本领域的技术人员应认识到,在图1和2A~2C中说明的示例性环境的目的不在于限制本发明。事实上,本领域的技术人应认识到,在不偏离本发明的范围的前提下,可以使用其他的可替换的硬件和/或软件环境。
现在参考图3,更加详细地说明了示例性的基于块的图像旋转程序100的简要概况。该示例性程序开始于像素说明,其包括任意形状的图像、图像的旋转中心C、以及绕旋转中心的所需的旋转角度,典型地以90度为增量。
在框102中程序100开始,将像素图像说明转换为有序的矩形块列表(A1...An),每个块具有m×n像素的尺寸,其完整地定义了原始图像。如上文所提及的,每个块列表还典型地包括旋转中心C,图像中的每个像素将绕其旋转,以及所需的旋转角度。块可以在尺寸上彼此相同,或者可以独立地确定尺寸。理想的是,选择具体的块尺寸和形状以优化旋转硬件资源、系统数据传输特性(例如,存储器存取突发尺寸)、存储器技术(例如,DRAM)以及其他考虑。
此外,当关于图像的源和目标存储器是相同的时,理想的是,排列块列表的顺序用以使重叠块之间的潜在冲突最小。重叠块是来自列表中这样的块,即其在旋转时具有目标坐标与来自列表中一个或者多个后继块的像素相同的一个或者多个像素。识别与列表中的后继块相重叠的块,可以在创建块列表时确定,或者在块列表的处理过程中实时地确定。应当认识到,由于块可能包括多个像素,并且由于块可能仅部分地相互重叠,因此单个重叠块可能与多个块重叠。
下一步,框104开始循环,用于处理有序列表中的每个块,当所有的块均已得到处理时终止该程序。对于每个该块,框106生成关于该块的移位向量,用以使该块绕旋转中心C旋转所需的角度。下一步,框108使旋转该块中的图像数据旋转所需的旋转角度。随后,在框110中,在框106中生成的移位向量应用于该块,用以确定该块的目标位置。然后,该目标位置用作锚位置,用以自该锚位置起存储在框108中生成的已旋转的图像数据,由此该块旋转至其新的位置。框112然后自列表中移除已经处理的块,并且使控制返回至块104以处理列表中另外的块。一旦处理了所有的块,并且列表为空,则程序100完成。
针对各种定义图像的块生成和应用移位向量,可以按如下发生。可以向各个块分配表示对于每个块的单个源位置的锚位置。通过这些锚位置,可以为这些块定义与旋转中心C相关的向量,此处被称为源旋转向量。关于块的源旋转向量是表示关于块的锚位置和旋转中心C之间的距离的(x,y)坐标的元组。换言之,对于具有坐标(Xn,Yn)的块n,相对于具有坐标(Xc,Yc)的旋转中心点C的源旋转向量(XSn,YSn)可以如下计算XSn=Xn-XcYSn=Yn-Yc例如,图4说明了由多个2×2的像素块122定义的示例性图像120,其也可以表示为A1~A6。假设块的左上位置是其锚位置,并且旋转中心具有坐标(8,8),源旋转向量124如表I中所示表I示例性源旋转向量

假设源旋转向量Sn具有元组(XSn,YSn),则对应于90、180和270度旋转的目标旋转向量Dan分别是(YSn,-XSn)、(-XSn,-YSn)和(-YSn,XSn)。由源和目标旋转向量可以计算移位向量Tan,其定义了从块的源位置到其目标位置的水平和垂直像素的数目。移位向量是目标和源旋转向量之间的算术差,其如下定义对于90度的旋转T90n=D90n-Sn=(YSn-XSn,-XSn-YSn).
对于180度的旋转
T180n=D180n-Sn=(-XSn-XSn,-YSn-YSn)=(-2XSn,-2YSn).
对于270度的旋转T270n=D270n-Sn=(-YSn-XSn,XSn-YSn)每个块的目标坐标(Xdn,Ydn)将是块的源坐标和对应于该区域和所需旋转角度的移位向量Tan的和。这样,对于90度的旋转,关于块的锚位置的目标坐标是Xdn=Yn+Xc-Yc;和Ydn=-Xn+Xc+Yc。
同样地,对于180度的旋转,块的目标坐标是Xdn=2Xc-Xn;和Ydn=2Yc-Yn。
对于经历270度旋转的块,目标坐标是Xdn=-Yn+Xc+Yc;和Ydn=Xn-Xc+Yc。
因此,对于图4的示例性图像,在图5中的120A、120B和120C处示出了关于90、180和270度旋转的块目标坐标,并且呈现在下面的表II中表II示例性的块目标坐标

除了由于旋转引起的移位向量以外,单独的位置向量也可以加入到每个块的坐标中,用以将旋转的图像设置在其最终的目标位置。
上文中基本的基于块的图像旋转程序100假设了不存在块之间重叠的可能性。然而,对于可能发生重叠的情况(例如,由于源和目标存储器是相同的),理想的是,在图像旋转过程中利用多个旋转缓冲器(或者单个旋转缓冲器中的多个块条目)协助重叠的处理。例如,图6说明了图像旋转程序140,其依赖于标识为RBUF_A和RBUF_B的两个旋转缓冲器,并且结合其中公共的帧缓冲器用作源和目标存储器的实施例使用。程序140还假设每次至多有一个块可以重叠。如受益于本公开内容的本领域普通技术人员将认识到的,对于可能存在另外的重叠的情况,可以使用另外的旋转缓冲器。
在框142中程序140开始,从帧缓冲器或者其他源存储器中读入与列表中的第一个块相关的像素数据,并且将其存储在RBUF_A中。旋转RBUF_A中的像素数据,然后在框144中执行测试,用以确定预期的目标是否与列表中的另一块冲突或重叠。如果没有冲突,则在框146中,如以上文描述的方式计算的,在由旋转中心和所需旋转角度确定的位置中,将已旋转的块写入帧缓冲器。然后从列表中移除该块,并且控制转到框148以确定列表是否结束。如果否,则控制转到框150以读入下一像素数据块并旋转该像素数据,然后转到框144以确定对于新的块是否出现了冲突。否则,一旦列表结束,则程序140终止。
回到框144,如果检测到重叠冲突,则在框152中来自处于冲突中的块的像素数据被读入到RBUF_B中,然后进行旋转。然后在框154中,RBUF_A中已旋转的数据写入到其目标,并且从列表中将其移除。然后控制转到框156,用以确定RBUF_B中像素数据的预期目标是否与列表中的另一块冲突或者重叠。如果否,则控制转到框158,用以在所需的目标位置中将已旋转的块写入到帧缓冲器中,并且从列表中移除该块。然后,如果需要,控制转到框148,用以处理列表中另外的块。
返回框156,如果对于RBUF_B中的像素数据检测到重叠,则在框160中,来自冲突中的块的像素数据被读入到RBUF_A中,然后进行旋转。然后在框162中,RBUF_B中的已旋转的数据写入到其目标,并且从列表中将其移除。然后控制转到框144,用以确定RBUF_A中像素数据的预期目标是否与列表中的另一块冲突或者重叠,其使用前文描述的方式进行操作。上文的处理顺序继续,直至旋转和移位了列表中的所有块。
下面,公开了使用硬件和软件组合的本发明一个具体的实现方案。在所说明的实现方案中,诸如创建块列表、监测旋转和激活指针、以及最初生成图像数据的功能分配给软件,而诸如来自块的图像数据的实际旋转、块列表的处理和对存储器存取的功能,则在硬件中处理。然而,应当认识到,在其他的实施例中可以使用其他的硬件和软件划分。
为了该实现方案的目的,假设通过由通用对象描述定义的多个对象来构建图像。例如,本发明的该实现方案可以具有在基于视窗的图形用户界面中的适用性,其中诸如图标、视窗、工具栏等的对象设置在复合桌面图像上,用以提供同用户的交互。因此,在要求生成所需的显示时,可以单独地表示和组合这些对象中的每一个。
通用对象描述可以存储在如图1中34处所示的存储器中。而且,通用对象可被例示用于不同的视图,例如,用以支持针对不同情况的不同对象布局。例如,考虑可在横向(landscape)和纵向(portrait)视图之间切换的显示器,例如,用以支持手持电脑,其可以在相对于用户的两个不同的取向上进行定位。在该环境中理想的是定义分别的视图,按照需要将例示的对象设置在每个视图中的不同位置。
为了支持将对象设置在多个视图中,此处描述的实现方案基于常见的通用对象描述,例示了用于每个视图的对象。与特定视图中的对象的特定例示相关的是预定的旋转和/或移位,指出了特定的对象将设置在视图上的什么位置以及以什么角度设置。因此,在此处描述的实现方案中,对象的每个视图或者例示由该对象的块列表所表示,如图1中36和38处所说明的。
因此,图7的程序170用于生成由多个对象组成的多视像,每个对象具有相对于其通用表述的移位和/或旋转,用于定位在特定视图上的具体位置和/或取向。
在框172中,程序170开始,生成第一对象的通用对象描述,例如,生成对象的图像数据表述,并且独立于与特定视图相关的任何特定的移位或旋转。
一旦创建了通用对象描述,则框174将该对象分解为矩形块的有序列表。如上文所提及的,该块可以具有相同的尺寸,或者可以按照需要确定为不同尺寸。典型地布置该块以包含完整的对象,其可以是矩形的,或者更典型地是非矩形的。每个块的尺寸可以基于许多因素进行选择。例如,可以基于图形硬件支持的突发长度来选择块尺寸,以优化数据传输性能。较小的块尺寸趋向于减少源存储器读过程和目标存储器写过程中所需的旋转缓冲存储器的量。
如上文所述,除了创建块列表以外,同样理想的是排列块列表的顺序,用以使旋转过程中块之间的任何重叠最小。在重叠块的情况中,理想的是将块列表中的每个重叠块放置在紧接着其旋转引发了重叠的块之后。此排序策略简化了块列表处理。然而,在其中源和目标存储器不同的实施例中,重叠可能不是所考虑的问题,由此其他的考虑可被用于排列块列表的顺序,诸如存储器性能问题,例如,页边界、相对存储器存取速度、预取特性等。
一旦对象被分解为矩形块的有序列表,则控制转到框176,用以创建块列表标题,其存储了许多与对象相关的参数,包括,例如,列表中的块数目、所需的旋转角度、源和目标存储器之间的间距、旋转中心、位置向量(表示用于在合成图像上移位对象例示的x,y距离)等。
下一步,任选地执行框178,基于用于执行块旋转的所需角度和旋转中心,使用上文描述的方式,来计算关于块列表中第一个块的块目标地址。此外,位置向量可以应用于将目标地址定位在图像上的特定的移位位置处。然而,在某些实施例中,可以从程序170中略去框178,由此在由图形引擎22处理每个块的过程中,动态地执行关于每个块的目标地址的计算。
下一步,框180设置关于当前块的重叠标志,以使由该块所重叠的块数目等于旋转的结果。在其中至多仅有一个块可以被重叠的实施例中,重叠标志可以是二进制标志。否则,关于特定块的重叠标志的零值将表示没有重叠,而任何非零值将表示在有序列表中与当前块重叠的后继块的数目。
下一步,如果需要回填块的原始位置,则框182设置块的回填标志。特别地,可以由块列表的分析确定出,在块旋转之后该块的原始位置是否将由来自该图像的另一块覆盖。如果否,则在某些实施例中理想的是,在该块的原始位置处涂覆背景颜色,诸如透明颜色或者回填颜色。这样,块182支持可与特定块相关的任选的回填特征。
一旦框182结束,则控制转到框184,用以处理正由程序170处理的当前有序列表中的另外的块。对于每个另外的块,控制返回到框178以计算关于该块的目标地址。一旦处理了有序列表中所有的块,则框184将控制转到框186,用以确定是否需要生成当前对象的任何更多的视图。对于每个另外的视图,框186将控制转到框174,用以将对象分解为对于新视图进行优化的另一矩形块的有序列表。一旦处理了所有的视图,则框186将控制转到框188。
框188确定是否还剩余任何更多的对象有待创建。如果是这样,则框188将控制转到框172,用以创建关于新对象的新通用对象描述。否则,一旦创建了所有的对象,则程序170结束。
这样,可以看到,程序170可用于创建在构建一个或者多个合成图像中使用的多个对象的多视图。典型地,程序170的功能将在软件中实现,并且可以在应用软件的运行过程中动态地生成,或者可以在软件应用的开发过程中执行,例如当已知每次运行应用软件时某一对象集合都会被应用软件使用时。其他的实现方案对于本领域的普通技术人员是显而易见的。
下面图8和9说明了可以由图7的程序170生成的一对有序对象列表190、200。对象列表190具有这样的类型,即其可由程序170生成,用于结合能够动态地生成块列表中不同块的目标地址的图形引擎使用。这样,对象列表190包括标题192,其包括表示列表中的块数目、所需旋转角度、旋转中心、表示用于移位块的x,y坐标量的位置向量、和在缓冲器中存储列数目以允许支持不同尺寸显示器的源/目标间距参数的字段。此外,标题192可以包括到存储器中存储的下一对象列表的链接。
对象列表190还包括多个块记录194,其存储了关于列表中每个块的识别数据。对于每个该块,记录194包括源地址,表示处于未旋转状态的块的锚位置;块尺寸,表示m×n坐标中的块尺寸;和重叠标志,表示在旋转时由块所重叠的其他块的数目;以及回填标志,表示块的原始位置在旋转之后是否应被回填。
另一方面,图9中的对象列表200用于其中图形引擎不动态地生成关于对象块的目标地址这样的情况,而不是由程序170预先生成目标地址并且将其存储在对象列表自身中的情况。在此实现方案中,标题202仅存储块数目、旋转角度、源/目标间距和到下一列表的链接,如果存在的话。另一方面,除了存储源地址、块尺寸、重叠标志和回填标志以外,每个块记录204还存储由程序170预先计算的目标地址。
应当认识到,实际上可以通过与本发明相一致的方式,使用任何数据结构来表示对象列表。因此,本发明不限于此处描述的具体的数据结构。
下面图10说明了用于处理已由程序170创建的块列表的块列表处理部件。在所说明的实施例中,图10中的各种部件在硬件中实现。具体地,源存储器210示出为向块读取处理212提供图像数据。然后该块读取处理向旋转缓冲器/先入先出(FIFO)缓冲器214输出数据,其用于存储关于一个或者多个块的图像数据,并且用于根据需要旋转该图像数据。然后已旋转的图像数据提供给块写入处理216,其向目标存储器218输出图像数据。缓冲器214还向处理212、216提供FIFO满和FIFO空信号。而且,处理216向旋转缓冲器214提供像素地址,其使用将在下文中得到更加详细的描述。
在所说明的实施例中,在诸如图1的控制器40的旋转/移位控制器中实现处理212、216。而且,源存储器和目标存储器210、218可以是分别的存储器,或者可以是相同的存储器,例如,图1的本地帧缓冲器42。
而且,任选地,旋转缓冲器214可以支持基于硬件的逐个块的图像数据旋转。在替换方案中,使用与某些传统的基于硬件的图像旋转算法相似的方式,通过对旋转缓冲器数据的非顺序存取,可以提供块数据的旋转。然而,考虑到旋转缓冲器可以在诸如SRAM的高速存储器中实现,即使在基于硬件的旋转电路未并入到缓冲器214时,也可能不会出现使用外部存储器时会发生的性能损失。
图11更加详细地说明了块读取处理212。在框222中,处理212开始,从源存储器中读取针对输入到该处理的块列表的块列表标题信息。下一步,框224从块列表中读关于第一块的块描述信息。然后框226确定旋转缓冲器是否已声明了FIFO满信号,并且一旦确定FIFO不是满的,则将控制转到框230。
框230向FIFO写入块控制字。该块控制字可以包括,例如,来自块描述的目标地址、块尺寸、重叠标志、和回填标志。下一步,框232从源存储器中读取来自块的图像数据,其存储在块描述中指定的源目标处。然后控制转到框234,用以查看FIFO当前是否是满的。一旦确定FIFO不是满的,则控制转到框238,用以向FIFO写入该块的图像数据。然后框240确定是否需要为该块写入更多的数据。如果是这样,则控制返回到框232。否则,控制转到框242,用以确定在块列表中是否剩余任何更多的块。如果是这样,则框242将控制转到框224,用以读取关于列表中下一块的块描述。否则,框242将控制转到244,用以确定是否需要从源存储器中取回任何更多的对象。如果是这样,则控制返回框222,用以读取下一对象的块列表标题信息。否则,框244终止程序212。
下面图12更加详细地说明了块写入处理216。在框252中,程序216开始,从FIFO中读取下一块控制字。下一步,框254确定是否已设置了关于该块控制字的回填标志。如果是,则控制转到框256,用以向目标存储器中的块源地址写入背景颜色,这样清除了关于该块的原始位置的图像数据。然后控制转到框258,用以确定重叠标志是否等于零。此外,回到框254,如果未设置回填标志,则绕过框256,并且将控制直接转到框258。
如果重叠标志未设置为零,则框258将控制转到框260,用以确定当前是否所有的重叠块均存储在FIFO中。该确定可以基于,例如确定有序列表中的接下来n个块是否已传到FIFO,其中n是当前处理的块的重叠标志的值。如果所有的重叠块仍未处于FIFO中,则框260等待直至所有这些块均存储到FIFO中。此时,控制转到框264,用以任选地计算块目标地址。该计算发生在这样的实施例中,即其中图形引擎支持动态地生成块目标地址的能力。在其他的实施例中,其中由创建块列表程序来计算块目标地址,诸如图7的程序170,从处理216中略去框264。
下一步,框266旋转对于该块的图像数据,并将其写到该块的目标地址。图像数据的旋转可以在处理216的控制下通过选择所示的非顺序像素地址作为处理216的输出而发生,或者可以仅仅是一旦向FIFO提供旋转角度时FIFO 214的输出的结果。在任一情况中,写到目标存储器的数据可以这样的顺序并且使用这样的数据宽度写入,即使得目标存储器的写性能最优化。
下一步,框268通过轮询来自FIFO 214的FIFO空信号,确定FIFO是否为空。如果是,则框268等待非空状态,并且然后将控制转到框272,用以确定在FIFO中另外的数据是否是另外的块数据。如果是,则控制转到框264。否则,控制返回框252,用以从FIFO中读取下一块控制字。
因此可以看到,通过处理212、214的交互,由于另一块的旋转而能够重叠的块必须在将重叠块写到其目标地址之前装载到FIFO中。
如上文所提及的,在处理216的框266中将块的图像数据写入到目标地址,可以以与本发明一致的许多方式发生。例如,图13说明了示例性的旋转缓冲器地址生成电路300,其可由处理216使用以生成像素地址,用于从旋转缓冲器214中的块中非连续地读取像素。
电路300包括一对向上/向下计数器302、304,其分别输出到乘法器306和求和器308。计数器302是模为n的计数器,其接收作为输入的值n表示在旋转之前的图像数据块中的行数目。计数器304是模为m的计数器,其接收作为输入的值m表示在旋转之前的图像数据块中的列数目。每个计数器302、304还分别由nCntUp和mCntUp信号控制,其在设置为二进制1时使计数器向上计数,并且在设置为二进制0时使计数器向下计数。如上文所提及的,计数器302的输出被输出到乘法器306,使计数器302的输出与m的值相乘,然后将其结果提供给求和器308,用以同计数器304的输出求和。求和器308的输出是用于从旋转缓冲器中读取的地址,并且因此用作图像数据块中的索引。
每个计数器302、304还包括进位输入(CI)输入端和进位输出(CO)输出端。计数器304的CO输出端耦合到AND门310的一个输入端,AND门310的另一输入端耦合用以接收nCntrMS信号,而AND门310的输出端耦合到计数器302的CI输入端。计数器302的CO输出端依次耦合到另一AND门312的一个输入端,AND门312的另一输入端耦合以接收mCntrMS信号,而AND门312的输出端耦合到计数器304的CI输入端。nCntrMS和mCntrMS信号是以互斥的方式声明的,并且用于控制计数器302、304中的哪一个表示旋转缓冲器地址的最高有效位。
为了使用电路300执行对旋转缓冲器的适当的非顺序读取,基于所需的旋转角度,如下面表III中所示,设置控制信号nCntrMS、nCntUp、mCntrMS和mCntUp表III旋转缓冲器地址生成电路控制设置

在其中计数器被设置用于向上计数的情况中,将计数器初始化为0值。另一方面,对于计数器被设置用于向下计数的情况,计数器被初始化为其最大值(即,对于计数器302是n-1)。
为了提供电路300的操作示例,下面的表IV示出了对于示例性的4×3的块(m=4,n=3)旋转0、90、180、270度时,由电路300生成的地址值,假设在未旋转的状态中,从左向右、从上向下读取该块,其具有0(左上)~11(右下)的地址表IV关于4×3的块的旋转缓冲器读地址

应当认识到,当在处理216的框266中从旋转缓冲器写出图像数据时,执行针对目标存储器的连续的写操作,其允许该处理利用目标存储器的典型的突发容量。依赖于块在旋转之后的取向,通过用于使写地址适当递增的计数器和比较器的集合,可以执行写地址的生成。例如,下面的表V示出了写地址的序列,其可被生成用于写入到用于上文讨论的相同的4×3的块尺寸的目标存储器中,其中假设目标地址为100且目标间距为480表V关于4×3的块的目标存储器写地址

如上文所讨论的,将块在列表中排序的方式可以显著地影响资源开销和根据本发明的图像旋转算法的效率。为了说明此概念,图14示出了示例性的对象280,其包括将绕旋转中心C旋转的12个块A1~A12的集合。对于该对象而言,理想的是以n元树形数据结构的形式表示块列表,其中不同的块A1~A12表示为树形数据结构中的节点。在图7~13中说明的实施例中,基于所定义的关于对象列表的树形结构,以从左到右宽度优先的顺序将每个块从源存储器读到FIFO。相似地,每个块仅在其所有的从属均已被存储到FIFO之后,才写到其目标位置。对于图14的对象280中的块的集合,可以使用许多不同的树形数据结构来表示有序对象列表中的块的相互依赖关系。
例如,图15说明了一个示例性的树形数据结构290,其可以产生作为绕旋转中心C的90度旋转的结果。在该树形结构下,示出了块A1以便与块A2、A4、A6和A8重叠,并且同样地,示出了块A2与块A9、A10、A11和A12重叠。在该设置下,通过图10的处理212、216使这些块装载到FIFO中并从FIFO中写出的装载/存储(L/S)和顺序如下L1,L2,L4,L6,L8,S1,L9,L10,L11,L12,S2,S4,S6,S8,S9,S10,S11,S12,L3,S3,L5,S5,L7,S7.
从该序列中应当注意,在将块A2存储到目标存储器中之前,需要FIFO214将8个块(块A2,A4,A6,A8,A9,A10,A11和A12)存储到FIFO中。因此,将需要足够用于存储相当于图像数据的8个块的最小FIFO尺寸。
相反地,在图16中说明的可替换的树形数据结构292,也可以用于表示关于图14的对象280的相同的对象列表。应当注意,在树形数据结构292中,重新配置了块A2、A4、A6和A8,其使得这些块的每一个分别仅具有一个重叠块A9、A10、A11和A12。通过以这样的方式重新排列树,处理212和216执行的FIFO的装载/存储顺序如下L1,L8,L6,L4,L2,S1,L9,S8,L10,S6,L11,S4,L12,S2,S9,S10,S11,S12,L3,S3,L5,S5,L7,S7.
应当注意在该设置中,在任何给定时刻,至多需要5个块驻留在FIFO中。这样,相对于树形数据结构290,可以使用较小的FIFO处理树形数据结构292。
此处描述的实施例提供了相比于传统的软件和硬件技术的许多优点。如上文所提及的,对于所旋转图像的每个像素,传统的软件技术通常需要矩阵乘法运算,其可能消耗大量的计算资源,并且对于移动设备和手持设备而言,更重要的是其可能消耗大量的电力。相反地,可以在旋转缓冲器中执行以此处描述的方式实现的图像旋转,该旋转缓冲器结合了加速硬件,用以协助可控制尺寸的块中的图像数据选中。对于需要支持多个显示取向的移动应用和信息设备应用,可以减少软件开发时间,由于单个帧缓冲器图像可以开发用于通过使用不同的块列表由该单个图像产生的应用和数个取向。
而且,执行帧缓冲器的非连续存取的传统硬件方法极大地限制了帧缓冲器可支持的存储器的类型和总线结构。例如,当从非连续的地址存取像素数据时,在DRAM中实现的帧缓冲器将增加显著的性能损失。旋转操作固有地将引起非连续的数据存取,但是通过如此处描述的在缓冲器中执行旋转,可以消除大部分的非连续存取。而且,传统的硬件方法倾向于不能良好地与其他2D图形操作集成,诸如色度键(蓝屏)和过滤/缩放。由于此处描述的方法可以直接针对帧缓冲器中的数据执行,类似于2D图形操作,因此其可以容易地与其他2D功能集成,并且甚至可以共享某些相同的硬件资源(诸如所需用于执行旋转操作的缓冲器)。基于帧缓冲器的非连续存取的传统硬件方法还受到这样的约束,即要求以像素将由显示电子装置处理的精确顺序向显示控制器输出像素。此处描述的方法并未受到相似的限制,并且,例如可以支持任意尺寸/形状的图像的旋转。
而且,给出了对任意形状图像的支持,相比于其中基于图像实质上是矩形的这一假设来处理图像的传统算法,此处描述的算法可以额外地提供更高的性能。特别地,对于如果由矩形周界限定的图像将包含相等大量的空白区域的情况,由传统算法执行的图像旋转将可能导致不必要的图像数据的旋转。相反地,支持如此处所述的旋转任意形状的图像的能力,可以定义对象列表用以仅限定重要的图像数据,这样相比于矩形区域减小了块数目,并且因此减小了与图像数据旋转相关的处理开销。
其他优点和修改方案对于受益于本公开内容的本领域的普通技术人员而言将是显而易见的。因此本发明由下文的附属权利要求限定。
权利要求
1.一种旋转图像数据的方法,对于定义图像(120)的多个图像数据块(122)中的每一个,该方法包括,将移位向量应用到块(122),用以使该块绕旋转点移位所需的旋转角度;并且,根据所需的旋转角度旋转块(122)中的图像数据。
2.权利要求1的方法,其中旋转点对于多个块(122)是公共的,并且其中应用移位向量包括,生成表示旋转点和块的锚位置之间距离的源旋转向量(124)。
3.权利要求2的方法,其中应用移位向量进一步包括,基于与所需旋转角度相关的目标旋转向量和源旋转向量(124)之间的差,生成移位向量。
4.权利要求3的方法,其中旋转点具有坐标(Xc,Yc),其中来自多个块(122)的块n的锚位置具有坐标(Xn,Yn),其中块n的源旋转向量具有坐标(XSn,YSn),并且其中XSn=Xn-Xc;且YSn=Yn-Yc。
5.权利要求4的方法,其中从包括90、180、270度的组中选择旋转角度,其中与90度旋转角度相关的目标旋转向量等于(YSn,-XSn),其中与180度旋转角度相关的目标旋转向量等于(-XSn,-YSn),且其中与270度旋转角度相关的目标旋转向量等于(-YSn,XSn)。
6.权利要求3的方法,其中对块(122)应用移位向量进一步包括,通过将块的锚位置与移位向量求和,生成关于该块的已移位的锚位置。
7.权利要求1的方法,其中具有坐标(Xc,Yc)的旋转点对于多个块(122)是公共的,其中块(122)是来自多个块(122)的块n,其具有坐标为(Xn,Yn)的锚位置,其中旋转角度是90度,其中对块(122)应用移位向量包括,生成对于块n的已移位的锚位置,其具有坐标(Xdn,Ydn),并且其中Xdn=Yn+Xc-Yc;且Ydn=-Xn+Xc+Yc。
8.权利要求1的方法,其中具有坐标(Xc,Yc)的旋转点对于多个块(122)是公共的,其中块(122)是来自多个块(122)的块n,其具有坐标为(Xn,Yn)的锚位置,其中旋转角度是180度,其中对块(122)应用移位向量包括,生成关于块n的已移位的锚位置,其具有坐标(Xdn,Ydn),并且其中Xdn=2Xc-Xn;且Ydn=2Yc-Yn。
9.权利要求1的方法,其中具有坐标(Xc,Yc)的旋转点对于多个块(122)是公共的,其中块(122)是来自多个块(122)的块n,其具有坐标为(Xn,Yn)的锚位置,其中旋转角度是270度,其中对块(122)应用移位向量包括,生成关于块n的已移位的锚位置,其具有坐标(Xdn,Ydn),并且其中Xdn=-Yn+Xc+Yc;且Ydn=Xn-Xc+Yc。
10.权利要求1的方法,其中每个块(122)被设置为矩形像素阵列。
11.权利要求10的方法,其中每个块(122)被设置为正方形像素阵列。
12.权利要求1的方法,其中多个块(122)具有相同的尺寸。
13.权利要求1的方法,其中多个块(122)具有不同的尺寸。
14.权利要求1的方法,其中根据所需的旋转角度旋转块(122)中的图像数据包括,使块(122)中的图像数据旋转90度、180度和270度中的一个。
15.权利要求1的方法,其中根据所需的旋转角度旋转块(122)中的图像数据是使用旋转缓冲器(44)执行的。
16.权利要求1的方法,进一步包括,从图像(120)生成多个块(122)。
17.权利要求16的方法,其中生成多个块(122)包括确定关于每个块(122)的锚位置。
18.权利要求16的方法,其中生成多个块(122)进一步包括确定关于每个块(122)的源旋转向量(124),其表示旋转点和每个块(122)的锚位置之间的差。
19.权利要求1的方法,其中多个块(122)配置在有序列表(36、38)中。
20.权利要求19的方法,进一步包括,将多个块(122)配置为有序列表(36、38)。
21.权利要求19的方法,其中多个块(122)配置在有序列表(36、38)中,用以使在多个块(122)的旋转过程中检测到的重叠最小。
22.权利要求19的方法,进一步包括,在将移位向量(122)应用到块并且旋转块(122)中的图像数据之后,从有序列表(36、38)中移除该块(122)。
23.权利要求19的方法,进一步包括,检测已移位的块(122)是否将与多个块(122)中的另一块重叠,如果是这样,则将重叠的块复制到旋转缓冲器(44)。
24.权利要求23的方法,进一步包括,在将重叠的块复制到旋转缓冲器(44)之后,将移位向量应用到该重叠的块,用以使该重叠的块绕旋转点移位所需的角度,并且,根据所需的旋转角度旋转该重叠块中的图像数据。
25.权利要求23的方法,其中检测已移位的块是否将与另一块重叠包括,检测已移位的块与多个块重叠,并且其中将重叠的块复制到旋转缓冲器(44)包括,将多个块复制到至少一个旋转缓冲器(44)。
26.权利要求1的方法,进一步包括从源存储器(210)中取出块(122);并且,将已移位的块存储到目标存储器(218)中。
27.权利要求26的方法,其中源和目标存储器(210、218)中的每一个选自包括帧缓冲器(42)和外部存储器(16)的组中。
28.权利要求26的方法,其中源和目标存储器(210、218)是不同的存储器。
28.权利要求26的方法,其中源和目标存储器(210、218)是相同的存储器。
30.权利要求1的方法,其中多个块(122)定义了关于图像(120)的非矩形边界。
31.权利要求1的方法,其中图像(120)包括至少一个对象,并且其中多个块(122)与该对象的第一视图相关。
32.权利要求1的方法,进一步包括,回填块(122)的原始位置。
33.权利要求1的方法,进一步包括将每个块(122)的图像数据装载到旋转缓冲器(44)中;并且,仅在与该块(122)重叠的每个块的图像数据已装载到旋转缓冲器(44)中之后,将来自旋转缓冲器(44)的关于块(122)的图像数据写入到目标存储器(218)中。
34.一种旋转图像数据的方法,该方法包括旋转来自待旋转的图像(120)中的多个图像数据块(122)中的第一块(122);确定已旋转的第一块是否与多个块(122)中的另一块重叠;如果已旋转的第一块与另一块(122)重叠,则在将已旋转的第一块存储到帧缓冲器(42)中之前,将重叠的块复制到旋转缓冲器(44)中;在将该重叠块存储到旋转缓冲器(44)中之后,旋转该重叠的块;并且,将已旋转的重叠块存储到帧缓冲器(42)中。
35.权利要求34的方法,其中多个块(122)配置在有序列表(36、38)中,该方法进一步包括,在将已旋转的第一块存储到帧缓冲器(42)中之后,从有序列表(36、38)中移除该第一块(122)。
36.一种装置,包括存储器(16),其被设置用于存储定义了图像(120)的多个图像数据块(122);和电路配置(14、22),其耦合到存储器(16),并且被设置用于通过将移位向量应用到块(122),使多个块(122)中的每个块(122)绕旋转点移位所需的角度,并且根据所需的旋转角度旋转每个块(122)中的图像数据。
37.权利要求36的装置,其中旋转点对于多个块(122)是公共的,并且其中电路配置(14、22)被设置用于通过这样的方法应用移位向量,即生成表示旋转点到块(122)的锚位置之间距离的源旋转向量(124)、基于与所需旋转角度相关的目标旋转向量和源旋转向量(124)之间的差生成移位向量;以及通过对块(122)的锚位置与移位向量求和,生成关于块(122)的已移位的锚位置。
38.权利要求37的装置,其中旋转点具有坐标(Xc,Yc),其中来自多个块(122)的块n的锚位置具有坐标(Xn,Yn),其中关于块n的源旋转向量具有坐标(XSn,YSn),并且其中XSn=Xn-Xc;且YSn=Yn-Yc;其中从包括90、180、270度的组中选择旋转角度,其中与90度旋转角度相关的目标旋转向量等于(YSn,-XSn),其中与180度旋转角度相关的目标旋转向量等于(-XSn,-YSn),且其中与270度旋转角度相关的目标旋转向量等于(-YSn,XSn)。
39.权利要求36的装置,其中每个块(122)被设置为矩形像素阵列。
40.权利要求36的装置,其中电路配置(14、22)被设置用于通过使块(122)中的图像数据旋转90度、180度和270度中的一个,根据所需的旋转角度旋转该块中的图像数据。
41.权利要求36的装置,其中电路配置(14、22)包括旋转缓冲器(44),其被设置用于旋转块(122)中的图像数据。
42.权利要求36的装置,其中电路配置(14、22)被进一步设置用于从图像(120)中生成多个块(122),并且确定关于每个块(122)的锚位置。
43.权利要求42的装置,其中电路配置(14、22)被进一步设置用于确定关于每个块(122)的源旋转,其表示旋转点和每个块(122)的锚位置之间的差。
44.权利要求36的装置,其中多个块(122)配置在有序列表(36、38)中。
45.权利要求44的装置,其中多个块(122)配置为有序列表(36、38),用以使多个块(122)的旋转过程中检测到的重叠最小。
46.权利要求44的装置,其中电路配置(14、22)被进一步设置用于在将移位向量应用到块(122)、并且旋转块(122)中的图像数据之后,从有序列表(36、38)中移除该块(122)。
47.权利要求44的装置,其中电路配置(14、22)被进一步设置用于检测已移位的块(122)是否与多个块(122)中的另一块(122)重叠,如果是这样,则将重叠的块复制到旋转缓冲器(44)中。
48.权利要求47的装置,其中电路配置(14、22)被进一步设置用于将重叠块(122)复制到旋转缓冲器(44)中,将移位向量应用到该重叠块(122),用以使该重叠块(122)绕旋转点移位所需的角度,并且,根据所需的旋转角度旋转该重叠块(122)中的图像数据。
49.权利要求36的装置,其中电路配置(14、22)被进一步设置用于从存储器(16)中取出块(122),并且,将已移位的块(122)存储到不同的存储器(16)中。
50.权利要求36的装置,其中电路配置(14、22)被进一步设置用于从存储器(16)中取出块(122),并且,将已移位的块(122)存储到该存储器(16)中。
51.权利要求36的装置,其中存储器(16)选自包括帧缓冲器(42)和外部存储器(16)的组中。
52.一种电路配置,包括旋转缓冲器(44);和电路(14、22),其耦合到旋转缓冲器(44),并且被设置用于通过这样的方法旋转图像(120),即,对于定义图像(120)的多个图像数据块(122)中的每一个,将关于块(122)的图像数据取回到旋转缓冲器(44)中,将移位向量应用到块(122),用以使块(122)绕旋转点移位所需的角度,并且根据所需的旋转角度旋转该旋转缓冲器(44)中的图像数据。
53.权利要求52的电路配置,其中电路(14、22)包括处理器(10)和程序代码(28),该程序代码(28)被设置用于在处理器(10)上执行以将移位向量应用到该块,并且启动旋转缓冲器(44)中的图像数据旋转。
54.一种集成电路,包括权利要求52的电路配置。
55.一种程序产品,包括硬件定义程序,其定义了权利要求52的电路配置;和信号承载介质,其承载硬件定义程序,其中信号承载介质包括可记录介质和传输介质中的至少一个。
全文摘要
一种装置、程序产品和方法,使用基于块的方法来旋转图像数据,其中对于定义了图像(120)的多个图像数据块(122)中的每一个,对该块(122)应用移位向量,用以使该块(122)绕旋转点移位所需的旋转角度,例如,使该块(122)的锚位置自源点移位至目标点。此外,根据所需的旋转角度旋转该块(122)中的图像数据,由此当已旋转的图像数据存储在块的目标点时,该块(122)中的图像数据有效地旋转至所需的位置。
文档编号G06T3/60GK1685363SQ03822120
公开日2005年10月19日 申请日期2003年9月12日 优先权日2002年9月18日
发明者K·洛克, J·莱曼 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1