具体实施方式
这里用具体细节来说明本发明的主题以便于满足法律要求。然而,此说明本身并非旨在限定本发明的范围。确切而言,发明人已经构想到该被要求保护的主题也可以用其他方式实施,被实施为包括类似于本文档中描述的步骤的不同步骤或步骤的组合,结合其他发明或未来的技术来实施。除此之外,尽管术语“步骤”和/或“块”在这里可以用来蕴含所采用的方法的不同要素,但是该术语不应被解释为暗示这里公开的各种步骤之中或之间有任何特定次序,除非并且除了个别步骤的次序被显示地描述。
本发明实施例提供了利用效果图来处理数字图像数据的系统和方法。已经简要地描述了本发明的全貌,下面将描述本发明的示例性操作环境。
总地参照附图,并首先具体参照图1,这里相同的附图标记标识各图中相同的组件,图中示出了一种用于实现本发明的示例性操作环境,并且将其概括地标示为计算系统环境100。计算系统环境100仅仅是适合的计算环境的一个例子,同时它并不旨在对本发明的使用范围或功能集提出任何限定。计算环境100也不应被解释为具有与在该示例性操作环境100中示出的任何一个组件或组件的组合有关的任何依赖或要求。
本发明可用许多其他的通用或专用计算系统环境或配置来运本发明可用许多其他的通用或专用计算系统环境或配置来运作。适合与本发明联用的公知计算系统、环境、和/或配置的例子包括但不限定于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶 盒、可编程消费电子产品、网络PC、微型计算机、大型机、包括任何上述系统或设备的分布式计算环境等。
本发明可以在由计算机执行的诸如程序模块等的计算机可执行指令的一般化上下文中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在分布式计算环境中实施,在此环境中,任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括有记忆存储设备的本地和远程计算机存储介质两者中。
参照图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括,但不限定于,处理单元120、系统存储器130、以及将包括系统存储器在内的各种系统组件耦合到处理单元120的系统总线121。系统总线121可以是数种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及采用不同种类的总线架构中的任何一种的局部总线。作为例子而非限定,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型工业标准架构(EISA)总线、视频电子标准协会(VESA)局部总线、以及也称为夹层总线的外围组件互连(PCI)总线。
计算机110一般包括各种计算机可读介质。计算机可读介质可以是任何能被计算机110访问的可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。作为例子而非限定,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储例如像计算机可读指令,数据指令,程序模块或其他数据等的信息的易失性和非易失性的、可移动和不可移动介质。计算机存储介质包括,但不限定于,RAM、ROM、EEPROM、闪存或其他存储器技术,CDROM,数字多功能盘(DVD)或其他光盘存储,磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用于存储想要的信息而且能被计算机110访问的其他任何介质。通信介质一般具体表现为计算机可读指令、数据结构、程序模式或像载波或其他传输机制等的已调制数据信号中的其它数据,并且包括任何信息传送介质。术语“已调制数据信号”是指其特征中有一个或多个被以在信号内编码信息的方式设置或改变的信号。作为例子,而非限制,通信介质包括例如像有线网络或直接有线连接等的有线介质,以及例如像声波、RF、红外等的无线介质及其他无线介质。上述任何介质的组合也包含在计算机可读介质范围之内。
系统存储器130包括易失性和/或非易失性存储器形式的例如像只读存储器(ROM)131和随机存取器(RAM)132等的计算机存储介质。包含有助于在例 如在启动期间在计算机110内部各元件之间传递信息的基本例程的基本输入/输出系统(BIOS)133一般被储存在ROM 131中。RAM 132一般包含可以被处理单元120立即访问和/或当前正由其操作的数据和/或程序模块。作为例子,而非限制,图1示出了操作系统134、应用程序135、其他程序模式136、以及程序数据137。
计算机110还可以包括其它可移动的/不可移动的、易失性/非易失性计算机存储介质。仅作为例子,图1示出了从不可移动的非易失性磁性介质读取或向其写入的硬盘驱动器141、从可移动的非易失性磁盘152读取或向其写入的磁盘驱动器151、以及从例如CD-ROM或其他光学介质等的可移动非易失性光盘156读取或向其写入的光盘驱动器155。其他可在示例性操作环境中使用的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限定于,磁带盒、闪存卡、数字多功能盘(DVD)、数字录像带、固态RAM、固态ROM等。硬盘驱动器141一般经由不可移动存储器接口例如接口140连接到系统总线121,并且磁盘驱动器151和光盘驱动器155一般通过可移动存储器接口例如像接口150连接到系统总线121。
上面讨论的并在图1中示出的各驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模式以及其他数据的存储。图1中,例如,硬盘驱动器141被示为存储了操作系统114、应用程序145、其他程序模式146以及程序数据147。注意,这些组件可以与操作系统134、应用程序135、其他程序模式136和程序数据137相同或不同。这里给予操作系统144、应用程序145、其他程序模式146和程序数据147不同的附图标记以说明最低限度它们是不同的拷贝。用户可通过输入设备例如键盘162和定点设备161一般指鼠标、跟踪球或触摸板来向计算机110中输入指令和信息。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、卫星天碟、扫描仪等。这些以及其他输入设备常常通过耦合到系统总线的用户输入接口160连接到处理单元120,但是也可以通过其他接口和总线结构连接,例如并行端口,游戏端口或通用串行总线(USB)。监视器191或其他类型的显示设备也可以经由接口例如视频接口190连接到系统总线121。除了监视器191之外,计算机还可以包括其他外围输出设备,例如像扬声器197和打印机196,它们可以通过输出外围接口195连接。
利用至一个或多个远程计算机例如远程计算机180的逻辑连接,计算机110可以在连网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他普通的网络节点,并且一般包括许多或所有上述有关计算机110描述的元件,尽管图1中仅仅示出了存储器设备181。图1中描述的逻辑连 接包括局域网(LAN)171和广域网(WAN)173,但是也可以包括其他网络。这样的网络化环境常见于办公室、企业范围计算机网络、内联网以及因特网中。
当在LAN网络化环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN网络化环境中使用时,计算机110一般包括调制解调器172或其他用于在例如英特网等的WAN 173上建立通信的手段。可以是内置的或外置的调制解调器172可以经由网络接口170或其他合适的机构被连接到系统总线121。在连网环境中,关于计算机110描述的程序模块或其部分可以被存储在远程存储器存储设备中。作为例子而非限制,图1示出了远程应用程序185驻留于存储器设备181上。将可认识到的是,示出的网络连接是示例性的,也可以采用在计算机之间建立通信链路的其它手段。
尽管没有示出计算机110的其他内部组件,但是本领域普通技术人员会意识到此类组件和相互连接是公知的。因此,无需结合本发明公开关于计算机110的内部构造的更多细节。
当计算机110被开机或复位时,存储在ROM 131中的BIOS 133指令处理单元121从硬盘驱动器141将操作系统或必要的部分加载到RAM 132中。一旦标示为操作系统144的操作系统的拷贝部分被加载到RAM 132中,处理单元120便执行操作系统代码并且使得与操作系统134的用户界面相关联的可视元件被显示在监视器191上。一般,当用户打开应用程序145时,从硬盘驱动器141读取程序代码以及相关数据,并将必要部分拷贝到RAM 132中,在这里拷贝的部分由附图标记135标示。
如前面所提及的,本发明的实施例提供在数字图像处理中利用视频卡或GPU的加速能力的系统和方法。这样的方法和系统可以采用,例如,图1中的视频接口190。本领域普通技术人员会理解和意识到“数字图像”,作为这里采用的术语,指的是包括静态和/或动态数字图像的任何数字图像数据,并且其任何或所有组合或变形都被构想为落在本发明的范围之内。利用这里描述的系统和方法,就能以被加速的速度,即比CPU自身能够做到的更快的速度以各种不同的方法来变换像素数据。
本发明的实施例另外将非破坏性编辑与GPU加速集成。这里所采用的术语“非破坏性编辑”或“非破坏性处理”指的是在请求之际仅那些被请求绘制的图像数据将被绘制,即,不将数据平化或保存到中间步骤。换句话说,每当图像被绘制时,绘制都是应请求从未变更过的原始加载的图像数据开始发生的。
现有的应用程序已经尝试不同程度地结合CPU处理进行各种非破坏性处理。然而,这并没有被完全实现,因为CPU处理慢到足以使性能不能匹配那个时候流行的相对小的图像上的平化模型的性能。然而更近期一些,非常大的(兆像素)的照片图像就越来越受欢迎,从而使得非破坏性编辑模式更具吸引力。
结合非破坏性编辑使用GPU,如本发明实施例所构想的,使得图像处理的性能比传统的基于CPU的平化模型高得多——往往高几个数量级。实际上,考虑到GPU相对较小的存储器占用(平化是高度存储器密集的)以及将图像数据从GPU读取到CPU存储器可用的带宽有限这一前提,平化模型不适合GPU。
结合GPU的非破坏性编辑允许仅将应请求绘制所需要的位加载到GPU中。因此,避免了需要确保所有原始像素对于每次编辑均需要在全分辨率下被处理的需要。
根据本发明实施例的方法和系统将GPU加速能力集成到CPU数字图像处理模型中。即,GPU被集成到数字图像处理模型架构中,这与纯粹作为特别特征等外围地提供形成对比。以这种方式,CPU和GPU处理被统一,以便在数字图像处理中工作的用户(例如,程序员或开发员)能够以目标设备来相互可交换地使用这两种模态的效力或能力,而不必例如单独选择CPU处理或GPU处理。
应当注意的是,虽然被集成到系统架构中,但是GPU的使用作为可任选组件提供。因此,如果绘制设备包括有能力的视频卡,则系统可以根据需要或希望来调用它的加速功能。然而,如果系统不包括有能力的视频卡,则它仍然可被用于数字图像处理。
本发明的方法和系统提供利用GPU、CPU、或这两者的某种组合来创建效果图并将其串起的功能集。根据本发明实施例的该数字图像处理模型架构由在此称为效果的元素构成。效果,作为这里使用的术语,是一基本的图像处理类。即,效果基本上是像素算子。它们取入缓冲和像素数据,操纵数据,并输出经修改的像素。例如,锐化效果取入图像像素,锐化像素边缘,并输出比所取入的图像像素更锐化的图像。在另一个例子中,曝光效果取入图像像素数据,调整像素的色平衡,并输出从所取入的修改了的色平衡的图像。因此效果的主要功能是处理像素。
不同的效果,例如,蒙蔽,混合,旋转等,可以被定义来实现各种不同的图像处理算法。如以下更加充分地描述的,允许用户将预定义的效果串起以实现想要的结果。如果想要的话,用户也可以定义新的效果来实现感兴趣的图像处理算法。效果能处理任意数目的输入图像并产生任意数目的输出图像。输入和输出的数目在 构造的时间就被确定了,并且不重新创建该效果就不能被更改。每个输入或输出的意义由效果本身定义。大部分情况下,意义是依赖于次序的。
仅作为例子,图2示出了具有三个输入和两个输出的混合效果的示意图。这种特定的混合效果混合其首两个输入(输入0和输入1),用向其第三输入(输入2)供应的遮罩来调制。在这个例子中,第一输出(输出0)产生彩色图像,而第二输出(输出1)产生灰色色调的图像。许多效果仅产生一个输出。
在某种程度上,效果起到类似集成电路的作用,因为用户必须先了解每个效果要做什么才能把它们串在一起。像集成电路,串在一起的效果的集合能够实现超过各部分的总和的复合结果。
当效果被串在一起,它们形成效果图。效果图,像这里用到的术语,是一种有向无环图(DAG)。它是“有向的”因为所有的连接暗示着数据流的方向(从一个效果的输出到下一个的输入)。它是“无环的”因为不允许循环,即,贯穿图中没有任何路径使一效果的输出返回作为它的一个输入。它是“图”而不是“树”因为效果的输出能够馈至多个效果的输入。效果图将多个效果连接到一起来实现从多个较简单的构件块构建起的复合输出。
参照图3,示出了一示例性的效果图300的示意图,其按遮罩的指示选择性地模糊输入图像的若干区域。注意,图像效果对象310是如何向模糊效果对象312和混合效果对象314两者供应图像数据的。这在树结构中是不可能的。另外,在效果图300中不存在循环。即,例如混合效果对象314的输出不是其他效果对象(图像效果对象310,模糊效果对象314,或遮罩效果对象316)的输入。当效果图被绘制和/或被改变时,本发明的模型自动地检测循环以防止无限循环。
当一效果被调用来进行绘制时,某些有意思的事情发生在每个效果上。第一,每个效果利用现有的高速缓存的缓冲来确定请求是否能被满足。虽然下面将会讨论高速缓存策略,但是目前构想如果该工作的输出已存在于适合的高速缓存中则不需要做任何工作就足够了。如果该请求能被现有的高速缓存的缓冲部分地(这经常会发生,例如,当用户扫视整个图像或重新设置窗口的大小时),则重叠的像素被从高速缓存拷贝到新的图像缓冲中,接着其余的像素被绘制并拷贝到新缓冲的合适部分中。
效果可利用两种不同的方法来绘制:一种是操作CPU(软件绘制)的必要绘制方法,一种是操作GPU(硬件绘制)的可任选绘制方法,每个效果确定其应以在硬件(GPU)还是软件(CPU)中来绘制。这种选择可以由用户来委任(存在与 每个效果相关联的唯仅软件绘制超驰),由应用程序委任,和/或由当前上下文(上下文中的唯软件绘制超驰允许客户或图中较高位的效果强制子图的软件绘制)。如果没有委任软件超驰,则基类将会试图在硬件中绘制效果并且,如果可能,包含被请求的结果的图像缓冲将被返回。如果效果不能在硬件中绘制,则将发生软件绘制。
注意,也存在会影响绘制方法被调用的动态条件。例如,效果可能调用硬件绘制,但是捕捉到内存不足的异常,尝试分配的临时缓冲超过了视频卡的可用存储空间。默认响应是让该效果调用软件绘制(CPU)来得到其所需要的结果。即,该模型在用尽GPU存储空间的情况下能退让到CPU。以这种方式,可以基于资源可用性来使性能最优化。
图像缓冲呈现储存在系统存储器(CPU存储器)、视频存储器(GPU存储器)、或其两者中的图像(像素),并贯穿效果图从一个效果传到另一个。数据的实际位置对用户来说一般不重要,因为用户可以简单地在她/他想要处理数据的位置上请求想要处理的数据,并且如有需要,图像缓冲将自动地把数据拷贝到那个位置。即,图像缓冲隐藏了像素数据被存储在何处的详情,并自动地将其在合适的位置上以供效果使用。
图像缓冲是被效果用来读和写图像数据的主类。图像缓冲的最大空间与用户可能想要绘制的图像的尺寸相比一般非常小。例如,在一个实施例中,在任一维度上,由硬件限制规定的最大宽度或高度不可以超过2K像素。一特定的效果图甚至在一通中不能绘制2K个像素。最大尺寸取决于图中所包含的特定效果。例如,大半径的模糊效果必须读取的像素要比其写入的像素多得多,因此它能产生的最大的缓冲空间减少了其过采样其输入的量。
当提出绘制请求时用户不能容易地预见这些限制。由此,用户仅仅请求他们所需要的。然而,有可能被返回的缓冲与原来请求的相比大小不同。
图像缓冲的一个实例保持被分配的且不能被回收的存储空间。图像缓冲适用于保持正被一效果活动地读取或写入的图像数据。
有时,效果可能想要高速缓存各通绘制之间图像数据。然而,此数据如果是被保持在图像缓冲中则不能被回收。如果当效果图的其余部分被绘制时视频存储器短缺,则引擎必须返回到软件绘制,除非它能回收足够的资源。
图像高速缓存对象是高速缓存图像数据的替换途径。该图像高速缓存对象允许效果保持对它在随后的绘制期间想要再次使用的图像数据的引用,但是它在不得已的情况下也可重新生成此图像数据。通过保持图像缓冲器对象并释放图像缓冲对 象,效果允许内存在视频存储空间紧张的情况下被回收。目的是为了允许其他效果能使用硬件(GPU)加速,而不是在低存储空间的情景中返回到软件(CPU)绘制。用户从任何她/他想在稍后读取的图像缓冲获得图像高速缓存实例。随后,图像缓冲可以被释放,同时图像高速缓存继续被保持。这保持了对图像数据的引用并且允许在必要情况下回收其内容。
将效果组织成图,与树相比而言,在绘制期间带来了一些挑战。例如,构想诸如图4的示意图中示出的效果图。在所示的效果图400中,存在四种让图像数据从底部图像效果对象410流到顶部混合效果对象即混合效果B 418的输出的途径。第一,图像数据可以从图像效果对象410流到混合效果对象A 414,到混合效果对象B 418。第二,图像数据可以从图像效果对象410流到水平效果对象412,到混合效果对象A 414,到混合效果对象B 418。第三,图像数据可以从图像效果对象410流到水平效果对象412,到混合效果对象A 414,到模糊效果对象416,到混合效果对象B 418。第四,图像数据可以从图像效果对象416流到混合效果对象A 414,到模糊效果对象416,到混合效果对象B 418。
虽然贯穿效果图的四条通路看起来并不是不可管理的,但是其组合的可能性是指数式的。如果将再多几个效果与附加的混合效果耦合,则贯穿该图唯一性路径的数目会增加到数百或数千。朴素的绘制模型必须在图的底部附近多次绘制效果,每次产生相同的输出。这种指数式增长和相同效果的重复绘制导致效率极其低下并且速度很慢的数字图像处理。
本发明实施例的模型通过在每个效果处包括一自动缓冲高速缓存来一定程度地——即便不是全部——减轻这种过度的绘制。例如,如果图4的效果图中的混合效果对象A 414保持一高速缓存,则它可以简单地在随后每一次被要求绘制时返回此高速缓存,而不是对水平效果412和图像效果410多作出两次请求来绘制其输入。在这个例子中,图像效果对象410仅被请求输出两次,而不是四次。
更特别的是,为了利用效果图从原始图像得到最终输出,沿着路径的每个效果必须被询问其输出。然而,效果在其输入缓冲被绘制之前不能绘制其输出。由此,在被请求输出之际,每个效果询问它的输入(即,询问它的输入效果的图像缓冲以便它能对其进行操作)。然而,效果的输入在它们各自的输入缓冲被绘制之前不能绘制它们的输出,并且因此必须询问它自己的输入。这种询问过程从效果图的顶部(这里最终的输出被绘制)一直继续到输入(例如,原始图像、JPEG等)被绘制的底部。另外,此过程必须通过一次走贯穿效果曲线的一条可能的路径来完成每个 询问。例如,在如上所述的利用图4的效果图的例子中,虽然混合效果对象B 418仅具有两个输入,但是那些输入中的每一个必须沿着两条不同的路径询问其输入才能绘制其输出。每个效果为每一条可能的路径产生一个图像缓冲并为最终的效果(在这个例子中,是混合效果对象B 418)提供输出最终输出所需的输入之一。
然而,当高速缓存被效果图内的中间效果(例如,水平效果对象412、混合效果对象A 414、以及模糊效果对象416)利用时,每个中间效果可保持或高速缓存在效果图最近之前被绘制的时间期间计算出的询问结果。以这种方式,当询问在效果图的顶部被发起时,一旦到达正被检测的两条路径之间的共同的中间效果,就不必一直往回询问到效果图的底部。即,询问仅需要返回到被检查的路径之间的共同的第一效果。定位到效果图的两条路径之间的这一共同的效果并在这一点处高速缓存或保持信息减轻了如上所述的可能为指数式的计算量。
为了确定高速缓存在贯穿效果图的初始通期间应保持哪些效果(并且为防止在不会再被询问的效果处的不必要的高速缓存),在绘制开始之前执行图的一通预绘制。该通预绘制在对像素执行任何实际的计算之前标识出在绘制期间效果图的什么区域将要被询问并标识出那个区域中将要被请求多次的那些部分,以及可预期的询问实例的数量。接着,在绘制之际,被标识为请求多次询问的任何效果可以在相关联的图像缓冲中高速缓存被询问的信息,直到它已经调用最大次数。此时,图像缓冲可以被释放,因为包含在其中的信息将不会被再次请求。
在图4所示的例子中,混合效果对象414被询问具有两个不同大小的图像缓冲,因为混合效果对象416读取的像素比它写入的更多。这种情形中,幸运的是较大的那个图像缓冲首先被请求,并且第二次请求可被满足而没有进一步的绘制。然而,如果较大的图像缓冲请求在较小的图像缓冲请求之后才到来,则该请求将不会这么轻易地实现。
为了避免当到来的绘制请求大小递增时不恰当的执行,本发明的模型提供一通预绘制的执行。预绘制通以上已关于标识出效果图中将受到对相同信息多次询问的部分来讨论。在预绘制通期间,每个效果还累积包含相似绘制请求的外接矩形。因此,在随后的绘制期间,效果可以产生比当前请求所必须的要大的输出缓冲,这是出于使用同一高速缓存来无额外成本地满足此后的请求的预期。
这些图像高速缓存避免了一个问题,但是引起了另一个问题,因为大量视频存储空间开始被保留来保持高速缓存缓冲,其中的一些可能从来不会再次被使用。简单的解决办法是每当作出将导致存储空间不足的异常被返回的分配高速缓存缓 冲的尝试时就在最近使用时间最远的基础上回收高速缓存缓冲。但是这意味着视频存储器频繁地在全容量下被运行(这对于该视频存储器的任何其他任何用户而言都是不合乎需要的),并且这将在几乎每次分配上都招致异常处理的开支。
参照图5,示出了为每个效果显示计数的效果图的示意图,并且将其总地标为500。每个效果具有一个与其输出中的每一个相关联的计数器,其计数有多少个连接器被连接到该输出。每一次利用效果的输出缓冲来完成该效果时,它将调用对应的输入效果来释放输出缓冲,并且对应于该输出的计数器被递减。当它到达零时,该效果假定在当前一通绘制期间将不会再接收到对该请求缓冲的其他请求,所以效果释放它的输出高速缓存。图像缓冲仅在单通绘制期间被保持,因为保持任何多于必要的信息都是不合需要的,这是因为视频卡(GPU)存储空间有限。
甚至当效果具有高速缓存时,它也仍必须告诉其输入效果释放它们的输出缓冲高速缓存,尽管它需要它们并不是为了进行绘制。这是确保效果计数器被正确地调整所必须的(并且因此,高速缓存被正确地释放)。
在完成绘制之后,顶部效果是图中唯一保持高速缓存的。实际上,正如下面将更全面地讨论的,存在用户可能想要保持其他高速缓存来加速交互式的绘制的其他原因。这里提供本示例仅为示出高速缓存是如何被用于防止指数式绘制。
为了加速交互式绘制,为效果图中在各通绘制之间不会变换的一些部分保持高速缓存是有用的。用户构建项目的一般方式是一次一层或一个效果(层将在下面更全面地讨论)。例如,用户将会添加效果来调整图像的曝光并且接着添加另一个效果来调整图像的温度,以及接着添加第三种效果来锐化图像。由于这种一步接一步的效果添加,用户一般一次仅调整最近添加的效果,例如,用户将在添加温度效果之前完成整个曝光调整。然而,一次以上的曝光调整可能是有必要的,每次调整需要一通绘制。
为了适应这种典型的项目情景并避免不必要地绘制效果图中自前通绘制以来没有变化的那些部分,效果基类包括一“脏标志”,该标志在效果自上一通绘制以来有变化时才被设置。在预绘制图遍历(预绘制通)期间,脏值被向上传播贯穿效果图,从而在脏的效果和图的根之间的任何路径上设置高速缓存。
脏值被用来为图中不在变化的部分保持高速缓存。假定任何脏的效果在下一通绘制中也很可能是脏的。这是当用户调整参数值或要不然一次修改一个效果时的情形。
例如,假设用户在图6的示意图中所示的效果图中与模糊效果相关联的遮罩 上画图。在预绘制通期间,顶部的混合效果,即混合效果B 618侦测到它具有两个不是脏的输入效果(混合效果A 614和模糊效果616)以及脏的第三输入效果(遮罩效果620)。无论何时效果检测到其各输入之间有这种脏值差异,它都假定遮罩效果620是将要在下一通绘制上被修改的唯一输入,并且指令非脏的输入效果保持它们的高速缓存。在所示的情形中,混合效果B 618将指令模糊效果616和混合效果A 614保持到它们的高速缓存并将指令遮罩效果620释放它的高速缓存。(注意,图像效果610和水平效果612在下一通绘制上将不会被询问,因为它们为混合效果A 614提供输入。)这种可选的高速缓存可以被称为“交叉绘制高速缓存”,并且在加速的交互式绘制意义上的性能提高是显著的,因为仅有混合效果B 618和遮罩效果620需要为每一通绘制做实际的工作。
如前面所提到的,考虑到大多数用户一次一层或一个效果地构建他们的项目,并且他们通常调整他们添加的最后一层或最后一个效果——其一般在效果图的顶部,交叉绘制高速缓存的益处是特别有意义的。在本发明实施例的动态绘制模型中,用户能自由地在任何时候改变任何层或效果。在采用交叉绘制高速缓存的情况下,效果图顶部附近的调整将快于底部附近的调整。
注意,在采用交叉绘制高速缓存的情况下,高速缓存被跨特定数字图像数据(即,单个图像)的各绘制操作地保持,而不是像关于为避免处理操作的指数增长而高速缓存的情形中那样仅在单通绘制期间被保持。
效果图中“层”的概念已经在这里提到过多次。在本发明实施例的效果图模型中,效果是“原子的”图像处理元素。层以针对感兴趣的情景的有用方式来组合效果。层构造效果图,但不是直接地包含在处理或绘制它们的过程中。
为了理解为什么层是有用的,考虑一种调整层模型。构想了各种不同类型的调整被支持,但是它们全部都支持遮罩和混合模型。这是通过将遮罩和混合功能集分离成单独的效果、并接着将多个简单效果串在一起以实现想要实现的复合结果来完成的。然而,当存在重复的编辑单元时,用户不得不一遍又一遍地将相同的效果串在一起,并且很难发展局部化的智能来对图进行优化。例如,如果遮罩是空的则遮罩效果可以被忽略,并且如果这里不存在混合模式也不存在遮罩则可以忽略混合效果。
可以认为层是简化标准图像编辑管线的创建的智能宏。事实上,管线的概念是由层引入的。一层取单个图像输入并产生单个输出。当然,层内的效果能被组织成任意复合的子图。
层取任何效果并为由可选遮罩控制的任意的混合模式提供支持。在一个例子中,这看起来像图7中所示的示意图,层一般被概括地标示为附图标记700。每个层拥有其自己的效果并动态地(即,在运行时)将它们串在一起以创建其在效果图中的部分。它能向图提供智能的动态优化。例如,由于层在其效果变化时接收到事件,因此如果它注意到混合效果710的混合参数已经改变为其最小值,那么它会将混合效果和遮罩效果712自它构建的效果图中排除。
图7的效果图示出了混合效果710、遮罩效果712、以及主效果714能够被串在一起的最常用的方法。然而,层支持这三个效果间更复杂的关系。在一些情形中,遮罩效果可以基于层的输入图像自动地生成遮罩数据。该主效果可以依赖于也可以不依赖于输入图像数据。在一些情形中,该主效果需要访问遮罩数据。
全连通的层可如图8的示意图中所示。当然,层可以比图8中所示的更复杂。层能够取代附图中示出的任何效果,其中多个效果被任意地串起。
一种输出单通道图像缓冲的效果能够起到遮罩效果的作用。遮罩可以是基于恒定像素的遮罩(即,单通道图像效果)或基于恒定矢量的遮罩(即,将基于矢量的数据光栅化成单通道输出缓冲的遮罩)。另外,在一些情况下,可以从输入数据动态地生成遮罩。通常,这是由用户动态选择满足一些准则——例如,特殊的颜色范围——的像素来实现的。
例如,参照图8的遮罩效果,假设用户想要使得自管线而上的特定图像中的阴影亮化。因此,她/他向效果图添加曝光层并在该层上放置遮罩,以便遮罩仅位于图像的阴影区域。通常,遮罩是基于像素选择被画上或贴入的,并且因此它们是静态的。然而,根据本发明的实施例,通过包括允许用户例如选择天空来进行暗化等的指令,就可使像素数据和遮罩成为动态的。这是通过用户动态选择满足天空的特定颜色范围的准则的像素来实现的。随后,无论何时改变管线(例如,通过添加旋转层),遮罩都被自动地重新计算而不是不得不由用户重新画上。
在自动校正的情况下,例如动态遮罩可在GPU中进行,这是非常强制性的情景,因为遮罩将在与输入图像相同的分辨率下生成。与恒定的遮罩不同,矢量的光栅化或图像采样的内插是不需要的。
动态遮罩的主要优势之一在于动态遮罩允许用户对管线进行改变并且使得遮罩在适合的场合自适应于那些变化。红眼就是一个例子。红眼可以通过利用遮罩在降低饱和度效果层上定位到瞳孔以降低瞳孔区域饱和度来校正。如果底下的图像被移动的话(例如被平移、旋转或比例缩放),则静态地设置遮罩(算法地利用对红 色像素的选择或手动进行)会失败。然而动态遮罩可以在图像中重新检测到红色瞳孔所在的位置并重新设置遮罩。
层类预期混合效果具有三个输入(两个要混合的图像加上一个遮罩)。每个混合算法由一单独的效果子类表示。一般会有足够共同代码来保证共同的基类。当用户改变层的混合模式时,先前的混合效果便被丢弃,并且新的混合效果在效果图重建时取代其位置。
如果没有遮罩效果被连接到混合效果,就不需要混合效果(该层的输出仅仅是主效果的输出);即假设完全不透明的遮罩。
“单输入单输出”层模式显著地简化了构建效果图的过程。层另外的优点在用户想要保存他们已经创建的管线的配置时体现出来。在采用效果图的情况下,保存实际上是一项难以完成的任务。每个效果将不得不被要求自我串行化(即,保存其设置等),并且,利用该信息,效果图将不得不被缮写为例如XML。层模型使得这更简化,因为绘制引擎自己知道图包含多个层并且能够描述它们中的每一个。层接着被请求来描绘它们自己。因为每一层具有其各自内部构建的图,所以信息不需要被存储。
层串行化超越效果串行化的另外一个优点是层在树中而效果在可能为(并且通常是)DAG的图中。可以执行树的贪婪法深度优先递归串行化(例如,在每一个节点处,效果能询问其子节点要它们描述自己并接着描述它自己)。在DAG中,这是指数式运行的,出于与以上有关高速缓存讨论的所有原因相同的原因,要防止绘制在效果DAG中呈指数式增长。由此,在记录层的层面上解决此问题要比在效果层面上解决要清楚得多。
在根据本发明的实施例的动态数字处理图像模型中,在品质和执行两者的意义上而言,何处以及何时变换数据是相当重要的。为了理解品质所关心的,假设用户希望利用常规的图像处理模型来旋转图像。一旦它确定图像位于想要的取向,绘制引擎就必须在新旋转到的值上重新采样该图像并从该数据产生新的一组像素。如果用户接着再次旋转该图像,则常规的绘制引擎不会记住在前次旋转之前图像是从什么位置开始的。由此,它仅仅是再次旋转图像(不知道它之前已经被旋转过),并且在完成之际,重新采样该图像并生成新的图像。随着更多次的旋转校正被执行,这种处理能够继续进行,每一次数据都被重新采样并且新图像被创建。这种方法的挑战在于每一次它重新采样时,数据将会退化。
然而,在根据本发明实施例的动态数字处理图像模型中,所有调整都是动态 的。因此,当用户旋转图像时,绘制引擎记下它已经被旋转的累积量。即,每一次它被请求作旋转修改时,它就返回到原是数据并应用旋转。因此,当图像在旋转修改之后被重新生成时,仅从原始图像数据对其重新采样一次。这显著地减少了图像必须忍受的退化量。
此外,此行为可以被保留,即便是当每一次添加一些旋转时在项目的不同层面上存在不同的变换。贯穿整个效果图的所有变换的累积产物被合计并且仅应用一次。这种应用程序一般在管线的底层附近执行,因为在绘制引擎中有一种累积所有变换并将它们尽可能在管线中下推的机制。通过这种方式,变换的执行不超过必要的次数,并且只对产生准确绘制所需的最小数目的像素执行变换。
应当注意的是,存在几种会阻止变换被推进贯穿效果图的事物。例如,可能会遇到一不了解如何对已经变换过的像素进行操作的效果,因此该特定效果必须在未经变换的图像上操作,该变换仅在该效果被应用之后才被应用。
为了适应如此的情况,如下面更全面描述地,预绘制通期间,每个效果通知引擎其可处理什么种类的变换以及不能处理什么种类的变换。
像之前所述的,变换何时发生从执行角度来看也是很重要。在效果图管线中,处理尽可能少的数据是最高效率的。假设用户已经加载了非常大的图像(例如,十亿像素)并且想要开始编辑该图像。不是在该图像的分辨率下操作(例如,不是对十亿像素进行操作),本发明实施例的动态绘制模型代之以在用户实际浏览的分辨率下,例如,在显示设备用于输出该图像的大约两百万像素下进行操作。在管线中尽可能早的时刻就迫使图像分辨率下降以便处理该图像的每个效果在此之后能处理减小了相当程度的数据的分辨率是合乎需要的。由此,效果能够以快得多的速度并使用显著较少的GPU或CPU图像存储空间来对图像进行操作。应当注意的是,对数据应用了比例因数来允许此结果发生。然而,就像之前关于品质因素所讨论那样,可能有不能处理比例缩放的效果,即,不知道如何处理经比例缩放的数据的效果。因此,在预绘制通期间,每个效果在其不能处理这种类型的变换的情况下将通知引擎,并且比例缩放在该效果已经处理了未经比例缩放的数据之前不会发生。
进一步需要注意的是,在管线中尽可能下推变换的效果会导致在绘制引擎确定一特定效果实际上能在效果图中更下方的另一个变换位置处被应用则其将不在用户原指定的位置上发生。
仅作为例子,想象用户已经用模糊效果(用五个像素的半径来模糊)、接着是下降采样或比例缩放效果(以十为因数)产生了一效果图。用户将预期模糊半径 被应用,接着图像被比例缩放。然而实际上,因为下降采样的效果是一种变换,因此如果它能在图中被下推,则它将先被应用于采样,接着模糊将被应用于分辨率较低的图像。注意,在此实例中,模糊效果将不得不被修改到例如1/2像素的模糊以便使总效果从用户的(浏览)角度上来看相同。如果模糊效果向绘制引擎生命其不能处理对经比例缩放的图像的模糊,则该比例缩放效果将不会在管线中被下推到其下方。
现在转到图9,图解了示出根据本发明的一个实施例的利用效果图来处理数字图像数据的方法900的流程图。开始,如框910所示,接收到多个效果对象。效果对象已在上文中作了详尽的讨论,并且仅作为例子可以包括混合效果对象、遮罩效果对象、模糊效果对象等。一旦这多个效果对象已经被接收到,效果图便利用这多个效果对象中的至少一部分来穿线成一个效果图,如框912所示。效果图可根据需要和/或希望利用CPU存储器、GPU存储器、以及CPU存储器和GPU存储器的组合来绘制。
随后,如框914所示,接收到要被处理的数字图像数据。接着利用效果图来处理该数字图像数据,如框916所示。在一个实施例中,处理数字图像数据可以包括非破坏性地处理所接收的数字图像数据的至少一部分。下一步,经处理的数字图像数据可以与至少一个图像缓冲相关联地被存储在CPU存储器和GPU存储器中的至少一个中。这在框918示出。
应当注意的是,根据本发明实施例的图像缓冲能在GPU与CPU之间自动传递而不需要用户的介入。另外,根据本发明实施例的图像缓冲能在第一像素数据格式与第二像素数据格式自动地转换而不需要用户的介入。
参照图10,图解了示出根据本发明的一个实施例的利用垂直取向的效果图来处理数字图像数据的方法1000的流程图,该数字图像数据是从效果图的底部向效果图的顶部来处理的。开始,如框1010所示,接收到具有位于发出两条分歧路径的交叉点处的效果对象的垂直取向的效果图。随后或同时地,接收到要利用效果图来处理的数字图像数据,如框1012所示。接下来,如框1014所示,对效果图自底部向顶部的第一通处理沿着这两条分歧路径中的第一条被执行。
在处理期间,数字图像数据的至少一部分被高速缓存到与效果对象的输出相关联的图像缓冲中。这在框1016示出。随后,执行效果图的第二通处理,该第二通自与效果对象相关联的图像缓冲延伸,如框1018所示。
参照图11,图解了示出根据本发明的一个实施例的利用垂直取向的效果图来 处理数字图像数据的方法1100的流程图,该数字图像数据是从效果图的底部向效果图的顶部来处理的。开始,如框1110所示,接收到垂直取向的效果图。该效果图包含至少第一和第二效果对象。随后或同时地,接收到要利用该效果图来处理的数字图像数据,如框1112所示。随后,对包括第一和第二效果对象的效果图的至少一部分进行第一通处理,如框1114所示。接下来,如框1116所示,数字图像数据的至少一部分被高速缓存在与第一效果对象输出相关联的图像缓冲中,如框1116所示的。
随后,检测到一个或多个与第二效果对象相关联的用户修改,如框1118所示。接下来,如框1120所示,执行效果图的第二通处理,第二通处理从与效果对象的输出相关联的图像缓冲延伸。
现在转到图12,图解了示出根据本发明的一个实施例的利用效果图来处理数字图像数据的方法1200的流程图。开始,如框1210所示,接收到效果图。该效果图包括多个效果对象,每一个具有与之相关联的用于存储数字图像数据的图像缓冲。随后或同时地,如框1212所示,接收到要利用该效果图来处理的数字图像数据。接下来,执行效果图的一通预绘制,如框1214所示。随后,利用效果图处理数字图像数据,如框1216所示。
参照图13,图解了示出根据本发明的一个实施例的利用效果图来处理数字图像数据的方法1300的流程图。开始,如框1310所示,接收到效果图。该效果图包括多个效果对象,每一个具有与之相关联的用于存储数字图像数据的图像缓冲。随后或同时地,接收到要利用该效果图来处理的数字图像数据,如框1312所示。接下来,确定与效果图相关联的GPU中是否有足够的存储空间可用来处理该数字图像数据。这在框1314示出。如果与效果图相关联的GPU中有足够存储空间可用来处理该数字图像数据,则利用GPU来处理该数字图像数据,如框1316所示。然而,如果与效果图相关联的GPU中没有足够的存储空间可用来处理该数字图像数据,则至少部分地利用与该效果图相关联的CPU来处理该数字图像数据。这在框1318示出。
现在转到图14,图解了根据本发明的一个实施例的创建用于处理数字图像数据的效果图的方法1400的流程图。开始,如框1410所示,提供了一个或多个效果层,每一效果层具有一个与之相关联的包括多个逻辑效果的逻辑效果子图。随后,接收到关于数字图像数据的处理的输入,如框1412所示。仅作为例子,这样的输入可以包括包含在层中的主效果的类型、应用于层界面的设置(例如,不透明度等 于100%)、以及其他设置和属性。随后,如框1414所示,在数字图像数据处理之际接收到的输入对这些逻辑效果中的每一个的影响被确定。接下来,根据被确定的影响来创建物理效果子图,如框1416所示。接着利用物理效果子图来绘制图像,如框1418所示。
参照图15,图解了根据本发明的实施例的利用效果图来处理数字图像数据的方法的流程图。开始,如框1510所示,接收到具有至少一个遮罩效果对象的效果图,该遮罩效果对象与一效果层相关联。随后或同时地,接收到数字图像数据,如框1512所示。接下来,如框1514所示,有关对接收到的数字图像数据中满足某种准则至少一部分选择的输入被接收。随后,如框1516所示,该至少一个遮罩效果对象被应用于所接收到的数字图像数据。
在一个实施例中,权利要求15的方法可以包括如图16中所示的进一步的处理步骤。开始,如框1610所示,接收到有关数字图像数据的修改的输入。随后,根据接收到的输入修改数字图像数据以创建经修改的数字图像数据,如框1612所示。接下来,如框1614所示,该至少一个遮罩效果对象被应用到该经修改的数字图像数据并且该至少一个遮罩效果对象被自动地修改以满足该准则。
参照图17,图解了根据本发明的一个实施例的利用垂直取向的效果图来处理数字图像数据的方法1700流程图,该数字图像数据是从效果图的底部向效果图的顶部来处理的。开始,如框1710所示,接收到垂直取向的效果图,该效果图具有位于其中的第一垂直位置上的第一变换效果对象。随后,如框1712所示,确定该第一变换效果对象是否可以在比第一垂直位置更接近效果图底部的第二垂直位置上被应用于数字图像数据。如果确定该第一变换效果对象不可以在第二垂直位置上被应用于数字图像数据,就在第一垂直位置上应用该第一变换效果对象,如框1714所示。
但是,如果确定该第一变换效果对象可以在第二垂直位置上被应用于数字图像数据,则接着确定第二垂直位置上是否存在变换效果对象。这由框1716所示。如果在第二垂直位置上不存在变换效果对象,就在第二垂直位置而不是在第一垂直位置上应用该第一变换效果对象,如框1718所示。然而,如果确定在第二垂直位置上存在变换效果对象,就在第二垂直位置上累加地应用第一和第二变换效果对象,如框1720所示。
现在转到图18,图解了根据本发明的一个实施例的利用垂直取向的效果图来处理数字图像数据的方法1800的流程图。开始,如框1810所示,接收到具有初始 变换值的数字图像数据。随后或同时地,接收到具有至少一个变换效果对象的效果图,如框1812所示。接下来,在变换效果对象处所接收到的数字图像数据被从初始变换值变换到第一经变换的变换值,如框1814所示。随后,在变换效果对象处数字图像数据被从初始变换值变换到第二经变换的变换值,如框1816所示。
鉴于以上内容,本发明的实施例针对一种用于编辑数字图像数据的系统。该系统包括具有与之相关联的GPU存储器的图形处理单元(GPU),以及利用GPU存储器来非破坏性地编辑数字图像数据的至少一部分的编辑组件。在一个实施例中,该编辑组件能利用GPU存储器以及GPU存储器与CPU存储器的组合中的一种来非破坏性地编辑接收到的数字图像数据的至少一部分。
该系统可以进一步包括用于接收多个被串在一起形成效果图的效果对象的效果图接收组件,效果图能被用于编辑数字图像数据。另外,该系统可以进一步包括用于接收要被编辑的数字图像数据的数据接收组件。
在另一个实施例中,本发明针对一种利用效果图来处理数字图像数据的方法。该方法包括接收多个效果对象并将这多个的效果对象中的至少一部分串在一起称为效果图,其中该效果图能利用CPU存储器和GPU存储器中的至少一个来被串起。在一个实施例中,处理接收到的数字图像数据可以包括非破坏性地处理数字图像数据的至少一部分。该方法可以进一步包括接收要被处理的数字图像数据和/或根据需要利用效果图来处理接收到的数字图像数据。再进一步地,该方法可以包括将数字图像数据与图像缓冲相关联地存储在CPU存储器和GPU存储器中的至少一个里。
在另一实施例中,本发明针对一种用于处理数字图像数据的系统。该系统包括用于接收要被处理的数字图像数据的数据接收组件、用于获取要在处理所接收到的数字图像数据时使用的包括多个效果对象的效果图的效果图获取组件、以及用于利用效果图以及CPU存储器和GPU存储器中的至少一个来处理数字图像数据的处理组件。在一个实施例中,效果图获取组件能将这多个效果对象中的至少一部分串在一起以创建效果图。在另一个实施例中,处理组件能利用效果图以及GPU存储器和GPU存储器与CPU存储器的组合中的至少一个来非破坏性处理数字图像数据的至少一部分。如果希望的话,该系统可以进一步包括用于将数字图像数据存储到CPU存储器和GPU存储器中的至少一个的存储组件。
在另一实施例中,本发明一种利用垂直取向的效果图来处理数字图像数据的方法,该数字图像数据是从效果图的底部向效果图的顶部来处理的。该方法包括接 收到垂直取向的效果图,其中该效果图包括位于发出两条分歧路径的交叉点上的效果对象,接收要利用效果图来处理的数字图像数据,在效果图中沿着这两条分歧路径中的第一条从底部向顶部地来执行效果图的第一通处理,以及在处理期间将数字图像数据的至少一部分高速缓存在与效果对象的输出相关联的图像缓冲中。
在另一个实施例中,本发明针对利用垂直取向的效果图来处理数字图像数据的方法,该数字图像数据是从效果图的底部向效果图的顶部来处理的。该方法包括接收垂直取向的效果图,其中效果图至少包括第一效果对象和第二效果对象,第二效果对象比第一效果对象更接近于效果图的顶部,接收要利用效果图来处理的数字图像数据,对包括第一和第二效果对象的效果图的至少一部分上执行第一通处理,以及将该数字图像数据的至少一部分高速缓存在与第一效果对象的输出相关联的图像缓冲中。该方法可以进一步包括检测与第二效果对象相关联的用户修改。
在另一个实施例中,本发明针对利用垂直取向的效果图来处理数字图像数据的系统,该数字图像数据是从效果图的底部向效果图的顶部来处理的。该系统包括用于接收垂直取向的效果图的第一接收组件,其中该效果图包括位于发出两条分歧路径的交叉点上的效果对象。该系统进一步包括用于接收要利用效果图来处理的数字图像数据的第二接收组件,用于在效果图中从其底部向顶部执行一通处理的第一处理组件,用于在处理期间将数字图像数据的至少一部分高速缓存在与效果对象的输出相关联的缓冲中的高速缓存组件,以及用于根据两条分歧路径中的一条来执行效果图的第二通处理的第二处理组件,其中第二通处理从与效果对象的输出相关联的缓冲延伸。
在另一个实施例中,本发明涉及一种利用效果图来处理数字图像数据的方法。该方法包括接收效果图,其中效果图包括多个效果对象,其中每一个具有与之相关联的用于存储数字图像数据的图像缓冲,接收要利用效果图来处理的数字图像数据,以及在处理数字图像数据之前执行效果图的一通预绘制。
在又一个实施例中,本发明涉及一种利用效果图来处理数字图像数据的方法。该方法包括接收效果图,其中接收到的效果图包括多个效果对象,其中每一个具有与之相关联的用于存储数字图像数据的图像缓冲,接收要利用效果图来处理的数字图像数据,并且确定与效果图相关联的图形处理单元(GPU)中是否有足够存储空间可用来处理该数字图像数据。
仍然进一步地,本发明的一个实施例涉及一种利用效果图来处理数字图像数据的方法。该方法包括接收效果图,其中效果图包括多个效果对象,其中每一个具 有一与之相关联的用于存储数字图像数据的图像缓冲,接收要利用效果图来处理的数字图像数据,以及确定与这多个效果对象相关联的图像缓冲中是否有一个或多个在数字图像数据处理期间要被高速缓存。
在另一个实施例中,本发明涉及一种创建用于数字图像数据的处理的效果图的方法。该方法包括提供一个或多个效果层,每个效果层具有与之相关联的包含多个逻辑效果的逻辑效果子图,接收有关数字图像数据的处理的输入,确定在数字图像数据处理之际接收到的输入对每个逻辑效果的影响,并且根据所确定的影响来创建物理效果子图。
在另一个实施例中,本发明涉及一种利用效果图来处理数字图像数据的方法。该方法包括接收效果图,该效果图具有至少一个与一效果层相关联的遮罩效果对象,接收数字图像数据,接收关于对数字图像数据中满足某个准则的至少一部分的选择的输入,并且将该至少一个遮罩效果对象应用于接收到的数字图像数据。
在又一个实施例中,本发明涉及一种用于处理数字图像数据的系统。该系统包括用于提供一个或多个效果层的提供组件,每个效果层具有与之相关联的包含三个或以上逻辑效果的逻辑效果子图,用于根据在数字图像数据的处理之际每个逻辑效果的影响将逻辑效果子图变换为物理效果子图的变换组件,以及用于利用物理效果子图来绘制图像的绘制组件。如有需要,该系统可以进一步包括用于将所提取的数字图像数据转换成分析结果的变换组件和/或用于将分析结果转发到主效果的转发组件。
在另一个实施例中,本发明涉及一种利用垂直取向的效果图来处理数字图像数据的方法,该数字图像数据是从效果图的底部向效果图的顶部来处理的。该方法包括接收垂直取向的效果图,该效果图具有位于其中的第一垂直位置上的第一变换效果对象,并且确定该第一变换效果对象是否可以在第二垂直位置上被应用于数字图像数据,该第二垂直位置比第一垂直位置更接近效果图的底部。如果确定该第一变换效果对象可以在第二垂直位置上被应用于数字图像数据,则该方法可以进一步包括在第二垂直位置上而不是第一垂直位置上应用该第一变换对象。但是如果确定该第一变换效果对象不可以在第二垂直位置被应用于数字图像数据,则该方法可以进一步包括在第一垂直位置上应用该第一变换效果对象。
在另一个实施例中,本发明涉及一种利用垂直取向的效果图来处理数字图像数据的系统。该系统包括用于接收垂直取向的效果图的接收组件,该效果图具有位于第一垂直位置上的第一变换效果对象,用于确定该第一变换效果对象是否可以在 第二垂直位置上被应用于数字图像数据的确定组件,该第二垂直位置比第一垂直位置更接近效果图底部,以及用于在确定该第一变换效果对象可以在第二垂直位置上被应用于数字图像数据的情况下在第二垂直位置上而不是第一垂直位置上应用该第一变换对象的应用组件。
在一进一步的实施例中,本发明涉及一种利用垂直取向的效果图来处理数字图像数据的方法。该方法包括接收具有初始变换值的数字图像数据,接收效果图,该效果图具有至少一个变换效果对象,在至少一个变换效果对象处将接收到的数字图像数据从初始变换值变换到第一经变换的变换值,以及在至少一个变换效果对象处将接收到的数字图像数据从初始变换值变换到第二经变换的变换值。
本发明的各实施例进一步涉及一个或多个具有用于执行这里所描述的方法的计算机可执行指令的计算机可读介质,以及被编程为执行这些方法的计算机。
已经有关特定实施例来描述了本发明,其在任何方面均旨在说明而不是限制。本发明涉及而没有背离其范围的替换实施例对本领域普通技术人员而言是显而易见的。
根据前述内容,连同其他明显的以及系统和方法固有的优点一起,将看到本发明能很好地适应于实现所有前面提及的结果和目标。可以理解,某些特征和再组合都是有用的,并且可以不参照其他特征和再组合来使用。这都是已构想的并落在权利要求范围中的。