專利名稱:在數字圖像處理中貫穿效果圖累積變換的制作方法
在數字圖像處理中貫穿效果圖累積變換
背景
視頻卡或圖形處理單元(GPU)區別于中央處理單元(CPU)之處在于它們 利用高速存儲器并且將其與能夠非常高效率地處理像素數據上的簡單計算的專用 處理器相耦合。視頻卡不是通用處理器。然而,它們可以計算例如哪些表面應對用 戶可見而哪些應被隱藏,以及什么紋理應被映射到那些表面上以使它們在三維 (3D)場景中看上去逼真,并且比CPU能完成相同的任務要迅速得多。這很大程 度上歸因于以下事實盡管CPU能夠勝任地執行各種不同的一般化任務,但是它 們不是針對任何特定操作最優化的,而視頻卡利用非常專用的硬件來一次僅執行單 個功能。
傳統上,視頻卡(GPU)用于兩種主要目的。第一,GPU被用來加速用戶屏 幕上的簡單的圖形操作。例如,當用戶滾動遍歷顯示在顯示設備(例如,常規的計 算機監視器)上的文檔時,大量的像素被移來移去。由于此類動作提出的計算要求, 傳統的CPU在完成這種任務時不是特別迅速或高效率。由此,可將GPU與CPU 聯用來實現更迅速且更高效率的滾動。
第二, GPU已經被用于繪制簡單的圖元(例如,用顏色填充一個區域,畫線 等)。隨著簡單圖形操作的加速,GPU能夠比傳統的CPU更迅速且高效率地繪制 這樣的簡單圖元。
最近,視頻游戲開始變得越來越流行,這造成了對此類游戲中增強的現實感 和加快的速度的要求有所增長。由此,視頻游戲制造商已經開始著手處理視頻繪制 的復合問題,例如,繪制一三維場景同時提供陰影、反射、紋理映射等等以使得該 場景看起來盡可能真實,同時仍然可以迅速響應于用戶輸入。 在上述特殊領域之外,視頻卡尚未被用于加速CPU功能。 在視頻游戲制造之外的舞臺上對數字圖像的使用近來也在增長。然而,隨著 數字圖像變得越來越大(更多兆像素)并且像素深度越來越大(每通道至少16位), 它們給傳統CPU中可用的計算資源造成了過度的壓力,從而導致數字圖像處理越 來越慢且效率越來越低。
概述
本發明的實施例涉及利用垂直取向的效果圖來處理一一例如非破壞性地處 理——數字圖像數據。在非破壞性處理中,在品質和性能兩者意義上來說,在何處 以及何時數據被變換是相當重要的。變換在垂直取向的效果圖中越往下處發生越 好。由此,本發明的實施例涉及將變換在效果圖中下推到最低可能點并在該點而不 是在它們原被放置的位置上應用它們。
附圖簡要說明
以下參考附圖詳細描述本發明,其中
圖1是適合在實現本發明時使用的示例性計算環境的框圖2是根據本發明的一個實施例的具有三個輸入和兩個輸出的示例性混合效 果的示意圖3是根據本發明的一個實施例的根據遮罩的指示來選擇性地模糊輸入圖像 的若干區域的典型效果圖的示意圖4是根據本發明的一個實施例的示例性效果圖的示意圖5是根據本發明的一個實施例的為每個效果示出計數的示例性效果圖的示意圖6是根據本發明的一個實施例的示出了與模糊效果相關聯的遮罩的示例性 效果圖的示意圖7是根據本發明的一個實施例的可供在效果圖中使用的示例性層的示意圖8是根據本發明的一個實施例的效果圖的示例性全連通層的示意圖9是示出根據本發明的一個實施例的利用效果圖來處理數字圖像數據的方 法的流程圖IO是示出根據本發明的一個實施例的利用垂直取向的效果圖來處理數字圖 像數據的方法的流程圖11是示出根據本發明的一個實施例的利用垂直取向的效果圖來處理數字圖 像數據的方法的流程圖12是示出根據本發明的一個實施例的利用效果圖來處理數字圖像數據的方 法的流程圖13是示出根據本發明的一個實施例的利用效果圖來處理數字圖像數據的方法的流程圖14是示出根據本發明的一個實施例的用于為數字圖像數據的處理創建效果 圖的方法的流程圖15是示出根據本發明的一個實施例的利用效果圖來處理數字圖像數據的方 法的流程圖16是示出根據本發明的一個實施例的利用效果圖來處理數字圖像數據的方 法的流程圖,圖16的方法表示可以在圖15的方法之后發生的外加處理步驟;
圖17是示出根據本發明的一個實施例的利用垂直取向的效果圖來處理數字圖 像數據的方法的流程圖18是示出根據本發明的一個實施例的利用垂直取向的效果圖來處理數字圖 像數據的方法的流程圖。
具體說明
這里用具體細節來說明本發明的主題以便于滿足法律要求。然而,此說明本 身并非旨在限定本發明的范圍。確切而言,發明人已經構想到該被要求保護的主題 也可以用其他方式實施,被實施為包括類似于本文檔中描述的步驟的不同步驟或步 驟的組合,結合其他發明或未來的技術來實施。除此之外,盡管術語"步驟"和/ 或"塊"在這里可以用來蘊含所采用的方法的不同要素,但是該術語不應被解釋為 暗示這里公開的各種步驟之中或之間有任何特定次序,除非并且除了個別步驟的次 序被顯示地描述。
本發明實施例提供了利用效果圖來處理數字圖像數據的系統和方法。已經簡 要地描述了本發明的全貌,下面將描述本發明的示例性操作環境。
總地參照附圖,并首先具體參照圖1,這里相同的附圖標記標識各圖中相同的 組件,圖中示出了一種用于實現本發明的示例性操作環境,并且將其概括地標示為 計算系統環境100。計算系統環境100僅僅是適合的計算環境的一個例子,同時它 并不旨在對本發明的使用范圍或功能集提出任何限定。計算環境100也不應被解釋 為具有與在該示例性操作環境100中示出的任何一個組件或組件的組合有關的任 何依賴或要求。
本發明可用許多其他的通用或專用計算系統環境或配置來運作。適合與本發 明聯用的公知計算系統、環境、和/或配置的例子包括但不限定于,個人計算機、 服務器計算機、手持式或膝上型設備、多處理器系統、基于微處理器的系統、機頂
盒、可編程消費電子產品、網絡PC、微型計算機、大型機、包括任何上述系統或 設備的分布式計算環境等。
本發明可以在由計算機執行的諸如程序模塊等的計算機可執行指令的一般化 上下文中描述。通常,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、 程序、對象、組件、數據結構等。本發明也可以在分布式計算環境中實施,在此環 境中,任務由通過通信網絡鏈接的遠程處理設備來執行。在分布式計算環境中,程 序模塊可以位于包括有記憶存儲設備的本地和遠程計算機存儲介質兩者中。
參照圖1,用于實現本發明的示例性系統包括計算機110形式的通用計算設 備。計算機110的組件可以包括,但不限定于,處理單元120、系統存儲器130、 以及將包括系統存儲器在內的各種系統組件耦合到處理單元120的系統總線121。 系統總線121可以是數種類型的總線結構中的任何一種,包括存儲器總線或存儲器 控制器、外圍總線、以及采用不同種類的總線架構中的任何一種的局部總線。作為 例子而非限定,這樣的架構包括工業標準架構(ISA)總線、微通道架構(MCA) 總線、增強型工業標準架構(EISA)總線、視頻電子標準協會(VESA)局部總線、 以及也稱為夾層總線的外圍組件互連(PCI)總線。
計算機110 —般包括各種計算機可讀介質。計算機可讀介質可以是任何能被 計算機IIO訪問的可用介質,并且包括易失性和非易失性介質、可移動和不可移動 介質。作為例子而非限定,計算機可讀介質可以包括計算機存儲介質和通信介質。 計算機存儲介質包括以任何方法或技術實現的用于存儲例如像計算機可讀指令,數 據指令,程序模塊或其他數據等的信息的易失性和非易失性的、可移動和不可移動 介質。計算機存儲介質包括,但不限定于,RAM、 ROM、 EEPROM、閃存或其他 存儲器技術,CDROM,數字多功能盤(DVD)或其他光盤存儲,磁帶盒、磁帶、 磁盤存儲或其他磁存儲設備,或可以用于存儲想要的信息而且能被計算機110訪問 的其他任何介質。通信介質一般具體表現為計算機可讀指令、數據結構、程序模式 或像載波或其他傳輸機制等的已調制數據信號中的其它數據,并且包括任何信息傳 送介質。術語"已調制數據信號"是指其特征中有一個或多個被以在信號內編碼信 息的方式設置或改變的信號。作為例子,而非限制,通信介質包括例如像有線網絡 或直接有線連接等的有線介質,以及例如像聲波、RF、紅外等的無線介質及其他 無線介質。上述任何介質的組合也包含在計算機可讀介質范圍之內。
系統存儲器130包括易失性和/或非易失性存儲器形式的例如像只讀存儲器 (ROM) 131和隨機存取器(RAM) 132等的計算機存儲介質。包含有助于在例如在啟動期間在計算機110內部各元件之間傳遞信息的基本例程的基本輸入/輸出系統(BIOS) 133 —般被儲存在ROM 131中。RAM 132 —般包含可以被處理單元 120立即訪問和/或當前正由其操作的數據和/或程序模塊。作為例子,而非限制, 圖l示出了操作系統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。圖l中描述的邏輯連接包括局域網(LAN) 171和廣域網(WAN) 173,但是也可以包括其他網絡。這 樣的網絡化環境常見于辦公室、企業范圍計算機網絡、內聯網以及因特網中。
當在LAN網絡化環境中使用時,計算機110通過網絡接口或適配器170連接 到LAN 171。當在WAN網絡化環境中使用時,計算機110—般包括調制解調器 172或其他用于在例如英特網等的WAN 173上建立通信的手段。可以是內置的或 外置的調制解調器172可以經由網絡接口 170或其他合適的機構被連接到系統總線 121。在連網環境中,關于計算機IIO描述的程序模塊或其部分可以被存儲在遠程 存儲器存儲設備中。作為例子而非限制,圖1示出了遠程應用程序185駐留于存儲 器設備181上。將可認識到的是,示出的網絡連接是示例性的,也可以采用在計算 機之間建立通信鏈路的其它手段。
盡管沒有示出計算機110的其他內部組件,但是本領域普通技術人員會意識 到此類組件和相互連接是公知的。因此,無需結合本發明公開關于計算機110的內 部構造的更多細節。
當計算機IIO被開機或復位時,存儲在ROM 131中的BIOS 133指令處理單 元121從硬盤驅動器141將操作系統或必要的部分加載到RAM 132中。 一旦標示 為操作系統144的操作系統的拷貝部分被加載到RAM 132中,處理單元120便執 行操作系統代碼并且使得與操作系統134的用戶界面相關聯的可視元件被顯示在 監視器191上。 一般,當用戶打開應用程序145時,從硬盤驅動器141讀取程序代 碼以及相關數據,并將必要部分拷貝到RAM132中,在這里拷貝的部分由附圖標 記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中不存在循環。g卩,例如混合效果對象314的輸出不是其他效果對象(圖 像效果對象310,模糊效果對象314,或遮罩效果對象316)的輸入。當效果圖被 繪制和/或被改變時,本發明的模型自動地檢測循環以防止無限循環。
當一效果被調用來進行繪制時,某些有意思的事情發生在每個效果上。第一, 每個效果利用現有的高速緩存的緩沖來確定請求是否能被滿足。雖然下面將會討論 高速緩存策略,但是目前構想如果該工作的輸出已存在于適合的高速緩存中則不需 要做任何工作就足夠了。如果該請求能被現有的高速緩存的緩沖部分地(這經常會 發生,例如,當用戶掃視整個圖像或重新設置窗口的大小時),則重疊的像素被從 高速緩存拷貝到新的圖像緩沖中,接著其余的像素被繪制并拷貝到新緩沖的合適部 分中。
效果可利用兩種不同的方法來繪制 一種是操作CPU (軟件繪制)的必要繪 制方法, 一種是操作GPU (硬件繪制)的可任選繪制方法,每個效果確定其應以 在硬件(GPU)還是軟件(CPU)中來繪制。這種選擇可以由用戶來委任(存在與
每個效果相關聯的唯僅軟件繪制超馳),由應用程序委任,和/或由當前上下文(上 下文中的唯軟件繪制超馳允許客戶或圖中較高位的效果強制子圖的軟件繪制)。如 果沒有委任軟件超馳,則基類將會試圖在硬件中繪制效果并且,如果可能,包含被 請求的結果的圖像緩沖將被返回。如果效果不能在硬件中繪制,則將發生軟件繪制。
注意,也存在會影響繪制方法被調用的動態條件。例如,效果可能調用硬件 繪制,但是捕捉到內存不足的異常,嘗試分配的臨時緩沖超過了視頻卡的可用存儲 空間。默認響應是讓該效果調用軟件繪制(CPU)來得到其所需要的結果。g卩,該 模型在用盡GPU存儲空間的情況下能退讓到CPU。以這種方式,可以基于資源可 用性來使性能最優化。
圖像緩沖呈現儲存在系統存儲器(CPU存儲器)、視頻存儲器(GPU存儲器)、
或其兩者中的圖像(像素),并貫穿效果圖從一個效果傳到另一個。數據的實際位 置對用戶來說一般不重要,因為用戶可以簡單地在她/他想要處理數據的位置上請 求想要處理的數據,并且如有需要,圖像緩沖將自動地把數據拷貝到那個位置。艮p, 圖像緩沖隱藏了像素數據被存儲在何處的詳情,并自動地將其在合適的位置上以供 效果使用。
圖像緩沖是被效果用來讀和寫圖像數據的主類。圖像緩沖的最大空間與用戶 可能想要繪制的圖像的尺寸相比一般非常小。例如,在一個實施例中,在任一維度
上,由硬件限制規定的最大寬度或高度不可以超過2K像素。 一特定的效果圖甚至 在一通中不能繪制2K個像素。最大尺寸取決于圖中所包含的特定效果。例如,大 半徑的模糊效果必須讀取的像素要比其寫入的像素多得多,因此它能產生的最大的 緩沖空間減少了其過采樣其輸入的量。
當提出繪制請求時用戶不能容易地預見這些限制。由此,用戶僅僅請求他們 所需要的。然而,有可能被返回的緩沖與原來請求的相比大小不同。
圖像緩沖的一個實例保持被分配的且不能被回收的存儲空間。圖像緩沖適用 于保持正被一效果活動地讀取或寫入的圖像數據。
有時,效果可能想要高速緩存各通繪制之間圖像數據。然而,此數據如果是 被保持在圖像緩沖中則不能被回收。如果當效果圖的其余部分被繪制時視頻存儲器 短缺,則引擎必須返回到軟件繪制,除非它能回收足夠的資源。
圖像高速緩存對象是高速緩存圖像數據的替換途徑。該圖像高速緩存對象允 許效果保持對它在隨后的繪制期間想要再次使用的圖像數據的引用,但是它在不得 己的情況下也可重新生成此圖像數據。通過保持圖像緩沖器對象并釋放圖像緩沖對象,效果允許內存在視頻存儲空間緊張的情況下被回收。目的是為了允許其他效果 能使用硬件(GPU)加速,而不是在低存儲空間的情景中返回到軟件(CPU)繪制。 用戶從任何她/他想在稍后讀取的圖像緩沖獲得圖像高速緩存實例。隨后,圖像緩 沖可以被釋放,同時圖像高速緩存繼續被保持。這保持了對圖像數據的引用并且允 許在必要情況下回收其內容。
將效果組織成圖,與樹相比而言,在繪制期間帶來了一些挑戰。例如,構想
諸如圖4的示意圖中示出的效果圖。在所示的效果圖400中,存在四種讓圖像數據 從底部圖像效果對象410流到頂部混合效果對象即混合效果B 418的輸出的途徑。 第一,圖像數據可以從圖像效果對象410流到混合效果對象A414,到混合效果對 象B418。第二,圖像數據可以從圖像效果對象410流到水平效果對象412,到混 合效果對象A414,到混合效果對象B418。第三,圖像數據可以從圖像效果對象 410流到水平效果對象412,到混合效果對象A414,到模糊效果對象416,到混合 效果對象B418。第四,圖像數據可以從圖像效果對象416流到混合效果對象A414, 到模糊效果對象416,到混合效果對象B418。
雖然貫穿效果圖的四條通路看起來并不是不可管理的,但是其組合的可能性 是指數式的。如果將再多幾個效果與附加的混合效果耦合,則貫穿該圖唯一性路徑 的數目會增加到數百或數千。樸素的繪制模型必須在圖的底部附近多次繪制效果, 每次產生相同的輸出。這種指數式增長和相同效果的重復繪制導致效率極其低下并 且速度很慢的數字圖像處理。
本發明實施例的模型通過在每個效果處包括一自動緩沖高速緩存來一定程度 地——即便不是全部——減輕這種過度的繪制。例如,如果圖4的效果圖中的混合 效果對象A 414保持一高速緩存,則它可以簡單地在隨后每一次被要求繪制時返回 此高速緩存,而不是對水平效果412和圖像效果410多作出兩次請求來繪制其輸入。 在這個例子中,圖像效果對象410僅被請求輸出兩次,而不是四次。
更特別的是,為了利用效果圖從原始圖像得到最終輸出,沿著路徑的每個效 果必須被詢問其輸出。然而,效果在其輸入緩沖被繪制之前不能繪制其輸出。由此, 在被請求輸出之際,每個效果詢問它的輸入(即,詢問它的輸入效果的圖像緩沖以 便它能對其進行操作)。然而,效果的輸入在它們各自的輸入緩沖被繪制之前不能 繪制它們的輸出,并且因此必須詢問它自己的輸入。這種詢問過程從效果圖的頂部 (這里最終的輸出被繪制) 一直繼續到輸入(例如,原始圖像、JPEG等)被繪制 的底部。另外,此過程必須通過一次走貫穿效果曲線的一條可能的路徑來完成每個詢問。例如,在如上所述的利用圖4的效果圖的例子中,雖然混合效果對象B418
僅具有兩個輸入,但是那些輸入中的每一個必須沿著兩條不同的路徑詢問其輸入才 能繪制其輸出。每個效果為每一條可能的路徑產生一個圖像緩沖并為最終的效果
(在這個例子中,是混合效果對象B418)提供輸出最終輸出所需的輸入之一。
然而,當高速緩存被效果圖內的中間效果(例如,水平效果對象412、混合效 果對象A414、以及模糊效果對象416)利用時,每個中間效果可保持或高速緩存 在效果圖最近之前被繪制的時間期間計算出的詢問結果。以這種方式,當詢問在效 果圖的頂部被發起時, 一旦到達正被檢測的兩條路徑之間的共同的中間效果,就不 必一直往回詢問到效果圖的底部。即,詢問僅需要返回到被檢査的路徑之間的共同 的第一效果。定位到效果圖的兩條路徑之間的這一共同的效果并在這一點處高速緩 存或保持信息減輕了如上所述的可能為指數式的計算量。
為了確定高速緩存在貫穿效果圖的初始通期間應保持哪些效果(并且為防止 在不會再被詢問的效果處的不必要的高速緩存),在繪制開始之前執行圖的一通預 繪制。該通預繪制在對像素執行任何實際的計算之前標識出在繪制期間效果圖的什 么區域將要被詢問并標識出那個區域中將要被請求多次的那些部分,以及可預期的 詢問實例的數量。接著,在繪制之際,被標識為請求多次詢問的任何效果可以在相 關聯的圖像緩沖中高速緩存被詢問的信息,直到它己經調用最大次數。此時,圖像 緩沖可以被釋放,因為包含在其中的信息將不會被再次請求。
在圖4所示的例子中,混合效果對象414被詢問具有兩個不同大小的圖像緩 沖,因為混合效果對象416讀取的像素比它寫入的更多。這種情形中,幸運的是較 大的那個圖像緩沖首先被請求,并且第二次請求可被滿足而沒有進一步的繪制。然 而,如果較大的圖像緩沖請求在較小的圖像緩沖請求之后才到來,則該請求將不會 這么輕易地實現。
為了避免當到來的繪制請求大小遞增時不恰當的執行,本發明的模型提供一 通預繪制的執行。預繪制通以上已關于標識出效果圖中將受到對相同信息多次詢問 的部分來討論。在預繪制通期間,每個效果還累積包含相似繪制請求的外接矩形。 因此,在隨后的繪制期間,效果可以產生比當前請求所必須的要大的輸出緩沖,這 是出于使用同一高速緩存來無額外成本地滿足此后的請求的預期。
這些圖像高速緩存避免了一個問題,但是引起了另一個問題,因為大量視頻 存儲空間開始被保留來保持高速緩存緩沖,其中的一些可能從來不會再次被使用。 簡單的解決辦法是每當作出將導致存儲空間不足的異常被返回的分配高速緩存緩沖的嘗試時就在最近使用時間最遠的基礎上回收高速緩存緩沖。但是這意味著視頻 存儲器頻繁地在全容量下被運行(這對于該視頻存儲器的任何其他任何用戶而言都 是不合乎需要的),并且這將在幾乎每次分配上都招致異常處理的開支。
參照圖5,示出了為每個效果顯示計數的效果圖的示意圖,并且將其總地標為 500。每個效果具有一個與其輸出中的每一個相關聯的計數器,其計數有多少個連 接器被連接到該輸出。每一次利用效果的輸出緩沖來完成該效果時,它將調用對應 的輸入效果來釋放輸出緩沖,并且對應于該輸出的計數器被遞減。當它到達零時, 該效果假定在當前一通繪制期間將不會再接收到對該請求緩沖的其他請求,所以效 果釋放它的輸出高速緩存。圖像緩沖僅在單通繪制期間被保持,因為保持任何多于
必要的信息都是不合需要的,這是因為視頻卡(GPU)存儲空間有限。
甚至當效果具有高速緩存時,它也仍必須告訴其輸入效果釋放它們的輸出緩 沖高速緩存,盡管它需要它們并不是為了進行繪制。這是確保效果計數器被正確地 調整所必須的(并且因此,高速緩存被正確地釋放)。
在完成繪制之后,頂部效果是圖中唯一保持高速緩存的。實際上,正如下面 將更全面地討論的,存在用戶可能想要保持其他高速緩存來加速交互式的繪制的其 他原因。這里提供本示例僅為示出高速緩存是如何被用于防止指數式繪制。
為了加速交互式繪制,為效果圖中在各通繪制之間不會變換的一些部分保持 高速緩存是有用的。用戶構建項目的一般方式是一次一層或一個效果(層將在下面 更全面地討論)。例如,用戶將會添加效果來調整圖像的曝光并且接著添加另一個 效果來調整圖像的溫度,以及接著添加第三種效果來銳化圖像。由于這種一步接一 步的效果添加,用戶一般一次僅調整最近添加的效果,例如,用戶將在添加溫度效 果之前完成整個曝光調整。然而, 一次以上的曝光調整可能是有必要的,每次調整 需要一通繪制。
為了適應這種典型的項目情景并避免不必要地繪制效果圖中自前通繪制以來 沒有變化的那些部分,效果基類包括一"臟標志",該標志在效果自上一通繪制以 來有變化時才被設置。在預繪制圖遍歷(預繪制通)期間,臟值被向上傳播貫穿效 果圖,從而在臟的效果和圖的根之間的任何路徑上設置高速緩存。
臟值被用來為圖中不在變化的部分保持高速緩存。假定任何臟的效果在下一 通繪制中也很可能是臟的。這是當用戶調整參數值或要不然一次修改一個效果時的 情形。
例如,假設用戶在圖6的示意圖中所示的效果圖中與模糊效果相關聯的遮罩上畫圖。在預繪制通期間,頂部的混合效果,即混合效果B618偵測到它具有兩個不是臟的輸入效果(混合效果A614和模糊效果616)以及臟的第三輸入效果(遮 罩效果620)。無論何時效果檢測到其各輸入之間有這種臟值差異,它都假定遮罩 效果620是將要在下一通繪制上被修改的唯一輸入,并且指令非臟的輸入效果保持 它們的高速緩存。在所示的情形中,混合效果B618將指令模糊效果616和混合效 果A614保持到它們的高速緩存并將指令遮罩效果620釋放它的高速緩存。(注意, 圖像效果610和水平效果612在下一通繪制上將不會被詢問,因為它們為混合效果 A614提供輸入。)這種可選的高速緩存可以被稱為"交叉繪制高速緩存",并且 在加速的交互式繪制意義上的性能提高是顯著的,因為僅有混合效果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)中是否有足夠存儲空 間可用來處理該數字圖像數據。
仍然進一步地,本發明的一個實施例涉及一種利用效果圖來處理數字圖像數 據的方法。該方法包括接收效果圖,其中效果圖包括多個效果對象,其中每一個具有一與之相關聯的用于存儲數字圖像數據的圖像緩沖,接收要利用效果圖來處理的 數字圖像數據,以及確定與這多個效果對象相關聯的圖像緩沖中是否有一個或多個 在數字圖像數據處理期間要被高速緩存。
在另一個實施例中,本發明涉及一種創建用于數字圖像數據的處理的效果圖 的方法。該方法包括提供一個或多個效果層,每個效果層具有與之相關聯的包含多 個邏輯效果的邏輯效果子圖,接收有關數字圖像數據的處理的輸入,確定在數字圖 像數據處理之際接收到的輸入對每個邏輯效果的影響,并且根據所確定的影響來創 建物理效果子圖。
在另一個實施例中,本發明涉及一種利用效果圖來處理數字圖像數據的方法。 該方法包括接收效果圖,該效果圖具有至少一個與一效果層相關聯的遮罩效果對 象,接收數字圖像數據,接收關于對數字圖像數據中滿足某個準則的至少一部分的 選擇的輸入,并且將該至少一個遮罩效果對象應用于接收到的數字圖像數據。
在又一個實施例中,本發明涉及一種用于處理數字圖像數據的系統。該系統 包括用于提供一個或多個效果層的提供組件,每個效果層具有與之相關聯的包含三 個或以上邏輯效果的邏輯效果子圖,用于根據在數字圖像數據的處理之際每個邏輯 效果的影響將邏輯效果子圖變換為物理效果子圖的變換組件,以及用于利用物理效 果子圖來繪制圖像的繪制組件。如有需要,該系統可以進一步包括用于將所提取的 數字圖像數據轉換成分析結果的變換組件和/或用于將分析結果轉發到主效果的轉 發組件。
在另一個實施例中,本發明涉及一種利用垂直取向的效果圖來處理數字圖像 數據的方法,該數字圖像數據是從效果圖的底部向效果圖的頂部來處理的。該方法 包括接收垂直取向的效果圖,該效果圖具有位于其中的第一垂直位置上的第一變換 效果對象,并且確定該第一變換效果對象是否可以在第二垂直位置上被應用于數字 圖像數據,該第二垂直位置比第一垂直位置更接近效果圖的底部。如果確定該第一 變換效果對象可以在第二垂直位置上被應用于數字圖像數據,則該方法可以進一步 包括在第二垂直位置上而不是第一垂直位置上應用該第一變換對象。但是如果確定 該第一變換效果對象不可以在第二垂直位置被應用于數字圖像數據,則該方法可以 進一步包括在第一垂直位置上應用該第一變換效果對象。
在另一個實施例中,本發明涉及一種利用垂直取向的效果圖來處理數字圖像 數據的系統。該系統包括用于接收垂直取向的效果圖的接收組件,該效果圖具有位 于第一垂直位置上的第一變換效果對象,用于確定該第一變換效果對象是否可以在第二垂直位置上被應用于數字圖像數據的確定組件,該第二垂直位置比第一垂直位 置更接近效果圖底部,以及用于在確定該第一變換效果對象可以在第二垂直位置上 被應用于數字圖像數據的情況下在第二垂直位置上而不是第一垂直位置上應用該 第一變換對象的應用組件。
在一進一步的實施例中,本發明涉及一種利用垂直取向的效果圖來處理數字 圖像數據的方法。該方法包括接收具有初始變換值的數字圖像數據,接收效果圖, 該效果圖具有至少一個變換效果對象,在至少一個變換效果對象處將接收到的數字 圖像數據從初始變換值變換到第一經變換的變換值,以及在至少一個變換效果對象 處將接收到的數字圖像數據從初始變換值變換到第二經變換的變換值。。
本發明的各實施例進一步涉及一個或多個具有用于執行這里所描述的方法的 計算機可執行指令的計算機可讀介質,以及被編程為執行這些方法的計算機。
已經有關特定實施例來描述了本發明,其在任何方面均旨在說明而不是限制。 本發明涉及而沒有背離其范圍的替換實施例對本領域普通技術人員而言是顯而易 見的。
根據前述內容,連同其他明顯的以及系統和方法固有的優點一起,將看到本 發明能很好地適應于實現所有前面提及的結果和目標。可以理解,某些特征和再組 合都是有用的,并且可以不參照其他特征和再組合來使用。這都是已構想的并落在 權利要求范圍中的。
權利要求
1、一種利用垂直取向的效果圖來處理數字圖像數據的方法,所述數字圖像數據是自所述效果圖的底部向所述效果圖的頂部來處理的,所述方法包括接收所述垂直取向的效果圖,所述效果圖具有位于其中的第一垂直位置上的第一變換效果對象;以及確定所述第一變換效果對象是否可以在第二垂直位置上被應用于所述數字圖像數據,所述第二垂直位置比所述第一垂直位置更接近于所述效果圖的底部。
2、 如權利要求1所述的方法,其中如果確定所述第一變換效果對象可以在所述第二垂直位置上被應用于所述數字圖像數據,則所述方法進一步包括在所述第二垂直位置上而不是在所述第一垂直位置上應用所述第一變換對象。
3、 如權利要求l所述的方法,其中如果確定所述第一變換效果對象不可以在所述第二垂直位置上被應用于所述數字圖像數據,則所述方法進一步包括在所述第一垂直位置上應用所述第一變換效果對象。
4、 如權利要求1所述的方法,其中有一第二變換效果對象位于所述第二垂直位置上。
5、 如權利要求4所述的方法,其中如果確定所述第一變換效果對象可以在所述第二垂直位置上被應用于所述數字圖像數據,則所述方法進一步包括在所述第二垂直位置上累加地應用所述第一和第二變換效果對象。
6、 如權利要求l所述的方法,其中所述效果圖包括一比所述第一垂直位置更接近于該效果圖的底部并且比所述第二垂直位置更接近于該效果圖的頂部的效果對象,并且其中確定所述第一變換效果對象是否可以在所述第二垂直位置上被應用 于所述數字圖像數據包括接收有關所述一效果對象是否能處理已根據所述第一變 換效果對象變換了的數字圖像數據的輸入。
7、 如權利要求6所述的方法,其中接收有關所述一效果對象是否能處理已根據所述第一變換效果對象變換了的數字圖像數據的輸入包括接收來自所述一效果對象的輸入。
8、 如權利要求6所述的方法,其中所述第一變換效果對象包括至少兩個部分,并且其中接收有關所述一效果對象是否能處理已根據所述第一變換效果對象變換了的數字圖像數據的輸入包括接收有關所述一效果對象是否能處理已根據所述至少兩個部分中的每一個變換了的數字圖像數據的輸入。
9、 如權利要求8所述的方法,其中如果接收到指示所述一效果對象能處理己根據少于所述至少兩個部分中的所有部分變換了的數字圖像數據,則該方法進一步 包括在所述第二垂直位置處而不是在所述第一垂直位置處僅應用所述變換對象中 根據其變換了的數字圖像數據能被所述一效果對象處理的那些部分。
10、 一個或多個具有用于執行如權利要求1所述的方法的計算機可執行指令 的計算機可讀介質。
11、 一種被編程為執行如權利要求1所述的方法的計算機。
12、 一種利用垂直取向的效果圖來處理數字圖像數據的系統,所述系統包括 用于接收所述垂直取向的效果圖的接收組件,所述效果圖具有位于其中的第一垂直位置上的第一變換效果對象;用于確定所述第一變換效果對象是否可以在第二垂直位置上被應用于所述數 字圖像數據的確定組件,所述第二垂直位置比所述第一垂直位置更接近于所述效果 圖的底部;以及用于在確定所述第一變換效果對象可以在所述第二垂直位置處被應用于所述 數字圖像數據的情況下在所述第二垂直位置上而不是在所述第一垂直位置上應用 所述第一變換效果對象的應用組件。
13、 如權利要求12所述的系統,其中所述效果圖包括一比所述第一垂直位置 更接近于所述效果圖的底部并且比所述第二垂直位置更接近于所述效果圖的頂部 的效果對象,并且其中所述系統進一步包括用于從所述一效果對象接收有關該效果 對象是否能處理已根據所述第一變換效果對象變換了的數字圖像數據的輸入接收 組件。
14、 如權利要求12所述的系統,其中有一第二變換效果對象位于所述第二垂 直位置上,并且其中所述系統進一步包括用于累積所述第一和第二變換效果對象的 累積組件。
15、 一種利用垂直取向的效果圖來處理數字圖像數據的方法,所述方法包括; 接收具有初始變換值的數字圖像數據;接收所述效果圖,所述效果圖具有至少一個變換效果對象; 在所述至少一個變換效果對象處將所接收到的數字圖像數據從所述初始變換 值變換到第一經變換的變換值;以及在所述至少一個變換效果對象處將所接收到的數字圖像數據從所述初始變換值變換到第二經變換的變換值。
16、 如權利要求15所述的方法,進一步包括接收指示所述第一和第二變換值 的輸入。
17、 如權利要求15所述的方法,進一步包括在將所接收到的數字圖像數據從所述初始變換值變換到第一經變換的變換值 之后重新采樣所接收到的數字圖像數據;以及創建具有所述第一變換值的經修改的數字圖像數據。
18、 如權利要求15所述的方法,進一步包括在將所接收到的數字圖像數據從所述初始變換值變換到所述第二經變換的變換值之后重新釆樣所接收到的數字圖像數據;以及創建具有所述第二變換值的經修改的數字圖像數據。
19、 如權利要求15所述的方法,進一步包括將所述第二變換值計算為至少部 分地包括所述初始變換值與所述第一變換值之差的累加值。
20、 一個或多個具有用于執行如權利要求15所述的方法的計算機可執行指令 的計算機可讀介質。
全文摘要
提供了利用垂直取向的效果圖來處理——例如非破壞性處理——數字圖像數據的方法和系統。在非破壞性處理中,在品質和性能兩者意義上來說,在何處以及何時數據被變換是相當重要的。變換在垂直取向的效果圖中越往下處發生越好。由此,提供用于將變換在效果圖中下推到最低可能點并在該點而不是在它們原被放置的位置處應用它們的方法。還提供用于執行這里所公開的方法的系統。
文檔編號G06K9/36GK101203864SQ200680022378
公開日2008年6月18日 申請日期2006年6月7日 優先權日2005年6月24日
發明者D·A·理查德, D·M·瑪什, D·德曼多勒克斯, J·徐, S·J·懷特 申請人:微軟公司