用于優化數字相機中圖像質量的系統和方法
【專利摘要】公開了用于優化數字相機中圖像質量的系統和方法。數字相機包括配置為基于由數字相機所采集的原始圖像來生成經優化的圖像的圖像優化引擎。圖像優化引擎實現一個或多個機器學習引擎以選擇隨后可用來渲染原始圖像的渲染算法和渲染算法引數。
【專利說明】用于優化數字相機中圖像質量的系統和方法
【技術領域】
[0001]本發明總地涉及數字攝影,并且更具體地,涉及用于優化數字相機中圖像質量的系統和方法。
【背景技術】
[0002]數字攝影的普及在過去十年里突飛猛進,這主要是由于在諸如手機的移動設備中包含了數字相機。由于數字相機技術改進,導致數字圖像分辨率的增加,越來越多的人們已達到完全依靠基于手機的數字相機用于所有攝影需求。用戶需要快速拍攝具有專業質量的照片的能力,并且因此,大部分現代數字相機現在包括實現眾多圖像處理算法并可用來改進數字圖像質量的圖像信號處理器(ISP)。
[0003]典型地,相機從傳感器獲得圖像被稱為“圖像采集”,并且將圖像處理算法應用到原始圖像以產生經優化的圖像的過程被稱為“圖像渲染”。提供這種處理的算法被稱為“渲染算法”并且包括但不限于噪聲降低、自動白平衡調節、色調校正、銳化、顏色增強等。典型地,每個渲染算法的精密操作由具體引數(argument)所控制。例如,顏色飽和度算法可由引數所控制,該引數是高于或低于某一標準值的飽和度的百分比。這些算法可以完全實現在硬件、數字信號處理器上的固件、如圖形處理單元(GPU)的可編程引擎上的特殊代碼、或軟件或以上的某一組合中。
[0004]每個這種算法典型地由算法設計師基于設計師關于計算攝影的經驗來手動地設計和實現。因此,許多設計師已在與圖像質量相關的狹窄領域中變成專家。例如,給定的設計師可在針對“噪聲降低”或針對控制“白平衡”的設計算法方面被視為專家。考慮到產生高質量圖像所要求的巨大數量的算法以及在處理來自數字傳感器的原始圖像中的各種問題,許多數字相機供應商雇用一大批算法設計師,其中每個設計師具有設計和調整算法以校正或增強一個高度具體問題的廣泛經驗。在許多情況下,這些算法要求來自數字相機的用戶的輸入以正確運行。例如,給定的算法可要求描述用戶希望攝影的場景類型諸如“海灘”或“森林”的信息。算法隨后根據該用戶所提供的信息調節某些參數。
[0005]數字攝影的當前狀態的一個問題在于:數字相機供應商典型地投入大量時間和金錢設計要包括在ISP中的算法,并且盡管如此,許多數字相機仍然要求顯著的用戶交互以產生質量過得去的圖像。該安排不太理想,因為盡管在ISP開發中投入了該大規模的時間和金錢,但是大部分數字相機供應商仍然達不到利用用戶期望的“傻瓜相機(point andshoot)”功能性來產生高質量圖像。
[0006]因此,本領域需要的是用于實現數字相機中的圖像處理算法的更有效技術。
[0007]在技術開發的另一條路線中,已開發出豐富的機器學習技術集,其使機器學習引擎(MLE)能被訓練為實現任意復雜的功能和算法。使用諸如監督式學習、諸如人工神經網絡(ANN)的MLE、或支持向量機(SVM)、或眾多其他MLE中的一個的技術,可被訓練為將新的但尚看不見的數據分類。MLE還可被訓練為實現從新的但看不見的輸入到輸出的變換,該輸出與如由訓練數據所表示的期望的理想輸出緊密地匹配。
【發明內容】
[0008]本發明的一個實施例闡述用于渲染圖像的方法,包括經由包括在數字相機中的光學傳感器采集原始圖像、基于與原始圖像相關聯的像素值集來生成針對原始圖像的圖像統計集、使第一機器學習引擎選擇渲染算法以及與所選擇的渲染算法相對應的渲染算法引數集;以及通過利用渲染算法和渲染算法引數集處理原始圖像來渲染經優化的圖像。
[0009]本文所描述的技術的優勢在于:圖像優化引擎內的機器學習引擎可被訓練為生成圖像而不要求設計師團隊來創作以及調整大規模的算法合集。進一步地,數字相機的用戶可以利用較少的手動相機控制取得更優秀的經優化的圖像,從而改進用戶體驗。
【專利附圖】
【附圖說明】
[0010]因此,可以詳細地理解本發明的上述特征,并且可以參考實施例得到對如上面所簡要概括的本發明更具體的描述,其中一些實施例在附圖中示出。然而,應當注意的是,附圖僅示出了本發明的典型實施例,因此不應被認為是對其范圍的限制,本發明可以具有其他等效的實施例。
[0011]圖1是示出了配置為實現本發明的一個或多個方面的計算機系統的框圖;
[0012]圖2是根據本發明的一個實施例的、用于圖1的計算機系統的并行處理子系統的框圖;
[0013]圖3是根據本發明的一個實施例的、示出了數字相機的框圖;
[0014]圖4A是根據本發明的一個實施例的、示出了配置為處理數字圖像的圖像優化引擎的示意圖;
[0015]圖4B是根據本發明的一個實施例的、示出了訓練圖4A中示出的圖像優化引擎的示意圖;
[0016]圖5A是根據本發明的一個實施例的、示出了圖3中示出的圖像優化引擎的另一個實施例的不意圖;
[0017]圖5B是根據本發明的一個實施例的、示出了訓練圖5A中示出的圖像優化引擎的示意圖;
[0018]圖6是根據本發明的一個實施例的、用于使用圖4A和4B的圖像優化引擎處理數字圖像的方法步驟的流程圖;
[0019]圖7是根據本發明的一個實施例的、用于使用圖5A和5B的圖像優化引擎處理數字圖像的方法步驟的流程圖;
[0020]圖8是根據本發明的一個實施例的、用于訓練圖4A和4B的圖像優化引擎的方法步驟的流程圖;以及
[0021]圖9是根據本發明的一個實施例的、用于訓練圖5A和5B的圖像優化引擎的方法步驟的流程圖。
【具體實施方式】
[0022]在下面的描述中,將闡述大量的具體細節以提供對本發明更透徹的理解。然而,本領域的技術人員應該清楚,本發明可以在沒有一個或多個這些具體細節的情況下得以實施。在其他實例中,未描述公知特征以避免對本發明造成混淆。
[0023]系統概述
[0024]圖1為示出了配置為實現本發明的一個或多個方面的計算機系統100的框圖。計算機系統100包括中央處理單元(CPU) 102和包括設備驅動程序103的系統存儲器104。CPU102和系統存儲器104經由可以包括存儲器橋105的互連路徑通信。存儲器橋105可以是例如北橋芯片,經由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到輸入/輸出(I/O)橋107。I/O橋107,其可以是例如南橋芯片,從一個或多個用戶輸入設備108 (例如鍵盤、鼠標)接收用戶輸入并且經由路徑106和存儲器橋105將該輸入轉發到CPU102。并行處理子系統112經由總線或其他通信路徑113 (例如外圍部件互連(PCI)express、加速圖形端口(AGP)或超傳輸鏈路)耦連到存儲器橋105 ;在一個實施例中,并行處理子系統112是將像素傳遞到顯示設備110 (例如常規的基于陰極射線管(CRT)或液晶顯示器(IXD)的監視器)的圖形子系統。系統盤114也連接到I/O橋107。交換器116提供I/O橋107與諸如網絡適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮光盤(⑶)驅動器、數字視頻光盤(DVD)驅動器、膠片錄制設備及類似部件,也可以連接到I/O橋107。將圖1中的各種部件互連的通信路徑可以使用任何適合的協議實現,諸如PC1、PC1-Express (PCIe),AGP、超傳輸或者任何其他總線或點到點通信協議,并且如本領域已知的,不同設備間的連接可使用不同協議。
[0025]在一個實施例中,并行處理子系統112包含經優化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構成圖形處理單元(GPU)。在另一個實施例中,并行處理子系統112包含經優化用于通用處理的電路,同時保留底層(underlying)的計算架構,本文將更詳細地進行描述。在又一個實施例中,可以將并行處理子系統112與一個或多個其他系統元件集成起來,該其他系統元件諸如存儲器橋105、CPU102以及I/O橋107,以形成片上系統(SoC)。
[0026]應該理解,本文所示系統是示例性的,并且變化和修改都是可能的。連接拓撲,包括橋的數目和安排、CPU102的數目以及并行處理子系統112的數目,可根據需要修改。例如,在一些實施例中,系統存儲器104直接連接到CPU102而不是通過橋,并且其他設備經由存儲器橋105和CPU102與系統存儲器104通信。在其他替代性拓撲中,并行處理子系統112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲器橋105。而在其他實施例中,I/O橋107和存儲器橋105可能被集成到單個芯片上。大型實施例可以包括兩個或兩個以上的CPU102以及兩個或兩個以上的并行處理系統112。本文所示的特定部件是可選的;例如,任何數目的插卡或外圍設備都可能得到支持。在一些實施例中,交換器116被去掉,網絡適配器118和插卡120、121直接連接到I/O橋107。
[0027]圖2示出了根據本發明的一個實施例的并行處理子系統112。如所示的,并行處理子系統112包括一個或多個并行處理單元(PI3U) 202,每個并行處理單元202都耦連到本地并行處理(PP)存儲器204。通常,并行處理子系統包括U個PPU,其中U≥I。(本文中,類似對象的多個實例需要時以標識對象的參考數字和標識實例的括號中的數字來表示。)PPU202和并行處理存儲器204可使用一個或多個集成電路設備來實現,諸如可編程處理器、專用集成電路(ASIC)或存儲器設備,或者以任何其他技術可行的方式來實現。[0028]再參考圖1,在一些實施例中,并行處理子系統112中的一些或所有PPU202是具有渲染管線的圖形處理器,其可以配置為實施與下述相關的各種任務:經由存儲器橋105和總線113從CPU102和/或系統存儲器104所供應的圖形數據生成像素數據,與本地并行處理存儲器204 (可被用作圖形存儲器,包括例如常規幀緩沖區(buffer))交互以存儲和更新像素數據,傳遞像素數據到顯示設備110等等。在一些實施例中,并行處理子系統112可包括一個或多個作為圖形處理器而操作的PPU202以及一個或多個用于通用計算的其他PPU202。這些PTO可以是同樣的或不同的,并且每個PPU可具有其自身的專用并行處理存儲器設備或不具有專用并行處理存儲器設備。一個或多個PPU202可輸出數據到顯示設備110,或者每個PPU202可輸出數據到一個或多個顯示設備110。
[0029]在操作中,CPU102是計算機系統100的主處理器,控制和協調其他系統部件的操作。具體地,CPU102發出控制PPU202的操作的命令。在一些實施例中,CPU102寫入用于每個PPU202的命令流到入棧緩沖區(pushbuffer)中(在圖1或圖2中未明確示出),該入棧緩沖區可位于系統存儲器104、并行處理存儲器204、或CPU102和PPU202都可訪問的其他存儲位置中。PPU202從入棧緩沖區讀取命令流,然后相對于CPU102的操作異步地執行命令。
[0030]現在返回參考圖2,每個PPU202包括經由連接到存儲器橋105 (或者,在一個替代性實施例中,直接連接到CPU102)的通信路徑113與計算機系統100的其余部分通信的I/O單元205。PPU202到計算機系統100的其余部分的連接也可以變化。在一些實施例中,并行處理子系統112可實現為可插入到計算機系統100的擴展槽中的插卡。在其他實施例中,PPU202可以和諸如存儲器橋105或I/O橋107的總線橋集成在單個芯片上。而在其他實施例中,PPU202的一些或所有元件可以和CPU102集成在單個芯片上。
[0031]在一個實施例中,通信路徑113是PCIe鏈路,如本領域所知的,其中專用通道被分配到每個PPU202。也可以使用其他通信路徑。I/O單元205生成用于在通信路徑113上傳送的包(或其他信號),并且還從通信路徑113接收所有傳入的包(或其他信號),將傳入的包引導到PPU202的適當部件。例如,可將與處理任務相關的命令引導到主機接口 206,而將與存儲器操作相關的命令(例如,對并行處理存儲器204的讀取或寫入)引導到存儲器交叉開關單元210。主機接口 206讀取每個入棧緩沖區,并且將由入棧緩沖區所指定的工作輸出到前端212。
[0032]有利地,每個PPU202都實現高度并行處理架構。如詳細示出的,PPU202 (O)包括處理集群陣列230,該陣列230包括C個通用處理集群(GPC)208,其中C≤I。每個GPC208能夠并發執行大量的(例如,幾百或幾千)線程,其中每個線程是程序的實例(instance)。在各種應用中,可分配不同的GPC208用于處理不同類型的程序或用于實施不同類型的計算。例如,在圖形應用中,可以分配第一 GPC208集以實施曲面細分(tessellation)操作以及產生用于補丁的基元拓撲,可以分配第二 GPC208集以實施曲面細分著色(shading)以評估用于基元拓撲的補丁參數以及確定頂點位置和每個頂點的其他屬性。GPC208的分配可以取決于因每種類型的程序或計算所產生的工作量而變化。
[0033]GPC208經由工作分布單元200接收所要執行的處理任務,工作分布單元200從前端單元212接收定義處理任務的命令。處理任務包括所要處理的數據的索引,例如表面(補丁)數據、基元數據、`頂點數據、和/或像素數據,以及定義數據將被如何處理(例如,什么程序將被執行)的狀態參數和命令。工作分布單元200可配置為獲取與任務相對應的索引,或者工作分布單元200可從前端212接收索引。前端212確保在由入棧緩沖區所指定的處理發起前,將GPC208配置為有效狀態。
[0034]當PPU202用于圖形處理時,例如,將用于每個補丁的處理工作量分成近似相等大小的任務以使曲面細分處理分布到多個GPC208。工作分布單元200可配置為以能夠將任務提供到多個GPC208用于處理的頻率來產生任務。相比之下,在常規系統中,處理典型地由單個處理引擎實施,而其他處理引擎保持空閑,在開始它們的處理任務之前等待單個處理引擎完成其任務。在本發明的一些實施例中,部分GPC208配置為實施不同類型的處理。例如,第一部分可配置為實施頂點著色和拓撲生成,第二部分可配置為實施曲面細分和幾何著色,以及第三部分可配置為實施屏幕空間中的像素著色以產生經渲染的圖像。由GPC208所產生的中間數據可被存儲在緩沖區中以允許中間數據在GPC208之間被傳送用于進一步處理。
[0035]存儲器接口 214包括D個分區單元215,每個分區單元215直接耦連到并行處理存儲器204的一部分,其中D≥I。如所示的,分區單元215的數目一般等于DRAM220的數目。在其他實施例中,分區單元215的數目也可以不等于存儲器設備的數目。本領域的技術人員應該理解動態隨機存取存儲器(DRAM) 220可以用其他合適的存儲設備來替代并且可以是一般常規的設計。因此省略了詳細描述。諸如幀緩沖區或紋理映射圖的渲染目標可以跨DRAM220加以存儲,這允許分區單元215并行寫入每個渲染目標的各部分以有效地使用并行處理存儲器204的可用帶寬。
[0036]任何一個GPC208都可以處理要被寫到并行處理存儲器204內的任何DRAM220的數據。交叉開關單元210配置為路由每個GPC208的輸出到任何分區單元215的輸入或到另一個GPC208用于進一步處理。GPC208通過交叉開關單元210與存儲器接口 214通信,以對各種外部存儲器設備進行讀取或寫入。在一個實施例中,交叉開關單元210具有到存儲器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲器204的連接,從而使得在不同GPC208內的處理內核能夠與系統存儲器104或對于PPU202而言非本地的其他存儲器通信。在圖2所示的實施例中,交叉開關單元210直接與I/O單元205連接。交叉開關單元210可使用虛擬信道來分開GPC208與分區單元215之間的業務流。
[0037]另外,GPC208可被編程以執行與種類繁多的應用相關的處理任務,包括但不限于,線性和非線性數據變換、視頻和/或音頻數據過濾、建模操作(例如,應用物理定律以確定對象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細分著色器、頂點著色器、幾何著色器、和/或像素著色器程序)等等。PPU202可將數據從系統存儲器104和/或本地并行處理存儲器204轉移到內部(片上)存儲器中,處理該數據,并且將結果數據寫回到系統存儲器104和/或本地并行處理存儲器204,其中這樣的數據可以由其他系統部件訪問,所述其他系統部件包括CPU102或另一個并行處理子系統112。
[0038]PPU202可配備有任何容量(amount)的本地并行處理存儲器204,包括沒有本地存儲器,并且可以以任何組合方式使用本地存儲器和系統存儲器。例如,在統一存儲器架構(UMA)實施例中,PPU202可以是圖形處理器。在這樣的實施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲器,并且PPU202會以排他或幾乎排他的方式使用系統存儲器。在UMA實施例中,PPU202可集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PCIe)的分立芯片提供,所述高速鏈路經由橋式芯片或其他通信手段將PPU202連接到系統存儲器。
[0039]如上所示,在并行處理子系統112中可以包括任何數目的PPU202。例如,可在單個插卡上提供多個PPU202、或可將多個插卡連接到通信路徑113、或可將一個或多個PPU202集成到橋式芯片中。在多PPU系統中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數目的處理內核、不同容量的本地并行處理存儲器等等。在存在多個PPU202的情況下,可并行操作那些PI3U從而以高于單個PPU202所可能達到的吞吐量來處理數據。包含一個或多個PPU202的系統可以以各種配置和形式因素來實現,包括臺式電腦、筆記本電腦或手持式個人計算機、服務器、工作站、游戲控制臺、嵌入式系統等等。
[0040]優化數字圖像
[0041]圖3是根據本發明的一個實施例的、示出了數字相機302的框圖300。數字相機302可包括在諸如手機或平板計算機的移動設備內,或者可表示專用于數字攝影的設備。通過操作數字相機302,用戶可以采集數字圖像。如所示,數字相機302包括CPU304、PPU306、光學傳感器308、存儲器312以及輸入/輸出(I/O)設備310。CPU304可以與圖1中示出的CPU102大致相似,而PPU306可以與圖2中示出的PPU202大致相似。
[0042]光學傳感器308配置為接收光波并配置為輸出表示這些光波的顏色和強度的電信號等等。光學傳感器308可以是例如濾色器陣列(CFA)或電荷耦合器件(CCD)等等。I/O設備310可包括諸如鍵盤、觸模板、麥克風、快門釋放按鈕等等的輸入設備,以及諸如屏幕、揚聲器、一個或多個發光二極管(LED)等等的輸出設備。此外,I/O設備310可包括能夠實施輸入和輸出操作二者的設備,諸如觸摸屏、以太網端口、通用串行總線(USB)、串行端口等。CPU304、PPU306、光學傳感器308以及I/O設備310耦連到一起并且耦連到存儲器312。
[0043]存儲器312可以是能夠存儲數據的任何類型的單元,包括隨機存取存儲器(RAM)、只讀存儲器(ROM)、一個或多個硬件/軟件寄存器、緩沖區等等。如所示,存儲器312包括原始圖像320、圖像優化引擎322以及經優化的圖像324。當數字相機302的用戶希望采集數字圖像時,用戶操縱I/O設備310以使光學傳感器308接收光波(S卩,用戶可以按快門釋放按鈕來“照相”)。光學傳感器308隨后使所采集的光波的表示被寫到存儲器312作為原始圖像320中的一個或多個。CPU304和/或PPU306可以參與處理由光學傳感器308所生成的信號以產生原始數據320。
[0044]圖像優化引擎(IOE) 322可隨后處理原始圖像320以渲染經優化的圖像324。10E322可以如所示的是駐留在存儲器312中的軟件程序,并且可由CPU304和/或PPU306執行以處理原始圖像320。可替代地,10E322可以是嵌入在數字相機302內并且耦連到CPU304/PPU306、光學傳感器308、存儲器312以及I/O設備310的硬件單元。如下文結合圖4A-10所更詳細描述的,10E322可以實現處理原始圖像320以產生經優化的圖像324的各種不同技術。
[0045]圖4A是示出了圖3中示出的10E322的一個實施例的示意圖400。如所示,示意圖400包括也在圖3中示出的原始圖像320、10E322以及經優化的圖像324。如上所述,10E322配置為通過處理原始圖像320生成經優化的圖像324。
[0046]對于給定的原始圖像320,10E322首先生成原始圖像統計402。原始圖像統計402可包括不同值,其中每個值與可針對給定的圖像計算的不同統計相對應。原始圖像統計402可包括種類繁多的不同統計,包括表示與圖像相關聯的顏色分布、亮度分布、對比度、飽和度、曝光度和/或其他統計的量。
[0047]10E322配置為使用機器學習引擎(MLE) 404來處理原始圖像302和原始圖像統計402。MLE404實現一般可用來基于一個或多個輸入值計算一個或多個輸出值的一個或多個機器學習算法。MLE404可包含決策樹、人工神經網絡(ANN)、貝葉斯網絡、不同機器學習算法的組合等等,并且可使用一個或多個監督式學習技術被訓練,如下文更詳細論述的。10E322實現MLE404以基于原始圖像統計402以及可選地基于原始圖像302來生成渲染控制參數406集。
[0048]渲染控制參數406的一個子集包括渲染算法選擇器406A,其中的每一個與不同渲染算法408相對應,剩余的渲染控制參數406包括要被提供到渲染算法408的渲染算法引數406B。10E322選擇與渲染算法選擇器406A相對應的算法408,并且隨后利用所指定的參數406B將所選擇的算法應用到原始圖像以渲染經優化的圖像。10E322可針對原始圖像320中的每一個重復該過程以渲染經優化的圖像324。在一個實施例中,10E322使用與給定的原始圖像320相關聯的原始圖像統計402以及使用與先前的和/或隨后的圖像相關聯的原始圖形統計來處理該給定的原始圖像320。
[0049]如上所述,MLE404配置為實現一個或多個機器學習算法并且通過實現一個或多個監督式學習技術來被訓練,如下文結合圖4B所更詳細描述的。
[0050]圖4B是根據本發明的一個實施例的、示出了用于訓練MLE404的技術的示意圖450。針對每個原始圖像320,提供了用來訓練MLE404的“理想的”經標示的經優化的圖像424。如所示,針對每個原始圖像320,原始圖像統計402被生成并且其可選地與原始圖像聯合被提供到MLE404。利用可以是隨機的、或以符合機器學習工藝的狀態的方式所更加仔細地選擇的值的合集來初始化MLE404。MLE404生成隨后用來選擇渲染算法408的渲染算法選擇器406A,并且還生成提供給這些算法的渲染算法引數406B。算法408渲染隨后與“理想的”經優化的圖像424相比較的經優化的圖像324,該“理想的”經優化的圖像424被期望渲染自原始圖像320。訓練引擎405隨后計算經優化的圖像324與經標示的經優化的圖像424的偏差,并且基于該偏差計算用于MLE404的經改進的參數。MLE404可隨后生成經改進的渲染控制參數406。
[0051]迭代上文概述的過程直到由訓練引擎405所計算的偏差小于某一期望的容差(tolerance)為止,這時來源于渲染控制參數406的經優化的圖像324接近“理想的”經標示的經優化的圖像424。例如,可以應用該過程來訓練MLE404以選擇色調映射曲線,該色調映射曲線將導致渲染經優化的圖像324最接近訓練集424中的“理想的”經標示的經優化的圖像,使得當不在訓練集中的給定的原始圖像320被提供到MLE404時,MLE404將產生渲染控制參數406,該渲染控制參數406將生成與“理想的”經優化的圖像相似的經優化的圖像。
[0052]在一個實施例中,手動地、即通過收集由可替代渲染控制參數406所產生的圖像的人為生成的評級(rating)來生成經標示的經優化的圖像424。在另一個實施例中,MLE404可通過從數字相機302的用戶接收輸入而持續地被訓練,該輸入表示使用給定的渲染控制參數406集所生成的經優化的圖像324的感知質量。通過針對用于不同原始圖像的不同渲染控制參數來重復該過程,訓練引擎405可以調節與MLE404相關聯的權值以更有效地選擇渲染算法選擇器406A和渲染算法引數406B。以這種方式,MLE404可被訓練為預測用戶的偏好。
[0053]在一個實施例中,MLE404在數字相機302中被原地訓練。在另一個實施例中,MLE404在計算機系統100或并行處理子系統112上被脫機訓練,并且該經訓練的MLE404實現在數字相機302中。在又一個實施例中,MLE404在位于遠程的計算系統即基于云的計算系統上持續地被訓練。通過實現上文所描述的技術,可以顯著改進由數字相機302所渲染的輸出圖像的質量。圖5A概述了用于改進圖像質量的另一個技術。
[0054]圖5A是根據本發明的一個實施例的、示出了圖3示出的10E322的另一個實施例的示意圖500。如所示,10E322配置為基于原始圖像322渲染經優化的圖像324。10E322配置為以與結合圖4A-4B所描述的同樣方式針對給定的原始圖像320生成原始圖像統計502。因此,原始圖像統計可以與圖4A-4B示出的原始圖像統計402大致相似。10E322配置為使用MLE504處理原始圖像統計502以及可選地處理原始圖像320以生成導出的圖像統計512。導出的圖像統計512表示可基于原始圖像統計502而推斷的統計,并且可表示原始圖像的質量,諸如場景類型(例如“海灘”、“森林”等)、聚焦深度等等。一般而言,導出的圖像統計512表示外部環境的性質。
[0055]MLE504可與圖4A-4B示出的MLE404大致相似,并且因此,可使用若干不同的機器學習算法來實現并且可被訓練為通過應用各種不同的監督式學習技術來生成導出的圖像統計512。圖5B是根據本發明的一個實施例的、示出了訓練MLE504的方法的示意圖550。針對每個原始圖像320提供用來訓練MLE504的“理想的”經標示的經優化的圖像524。如所示,對于每個原始圖像320,原始圖像統計502被生成并且其可選地與原始圖像聯合被提供到MLE504,該MLE504以基本與在圖4A中MLE404被初始化的相似方式被初始化。MLE504基于原始圖像統計502以及可選地原始圖像320和導出的統計512來計算隨后被提供到MLE514的導出的統計512、計算轉而對算法508進行選擇以及提供其輸入引數的渲染控制參數506。算法依然計算與經標示的“理想的”經優化的圖像524相比較的經優化的圖像324,并且其輸出被提供到MLE504,并且過程被迭代直到經優化的圖像如所期望般接近“理想的”經優化的圖像524。
[0056]一旦導出的圖像統計512已由MLE504所生成,則這些統計以及原始圖像320和原始圖像統計502由MLE514加以處理以生成渲染控制參數506。與圖4中示出的渲染控制參數406相似,渲染算法選擇器506A中的每一個是與渲染算法508相對應的值,并且渲染算法引數506B中的每一個作為被提供給所選擇的渲染算法508。以與結合圖4A所描述的同樣的方式,10E322對算法508進行選擇并且提供它們的引數,并且隨后將算法應用到原始圖像以渲染經優化的圖像。10E322可針對原始圖像320中的每一個來重復該過程以生成經優化的圖像324。
[0057]MLE514可與圖4A-4B中示出的MLE404大致相似,并且因此,MLE504可使用若干不同的機器學習算法來實現并且可以通過應用各種不同的監督式學習技術而被訓練為生成渲染控制參數506。例如,可使用具有相對應的“理想的”經標示的經優化的圖像524的“示范性的”原始圖像320集來訓練MLE514。針對每個原始圖像320,原始統計502以及導出的統計512被生成并被作為輸入提供到MLE514,其生成對算法508進行選擇并且提供它們的輸入的渲染控制參數506,隨后生成經優化的圖像324。經優化的圖像324依然通過訓練引擎505與理想的經標示的經優化的圖像524“相比較”。訓練引擎505計算經優化的圖像324與經標示的經優化的圖像524的偏差,并且基于該偏差計算用于MLE504和514的經改進的參數。MLE514可隨后生成經改進的渲染控制參數506。該過程依然迭代直到由訓練引擎505所計算的偏差小于某一期望的容差為止,這時來源于渲染控制參數506的經優化的圖像324接近“理想的”經標示的經優化的圖像524。
[0058]在該過程的一個實施例中,MLE514可在具有已經經訓練的MLE504的系統中被訓練。在另一個實施例中,MLE504可在具有已經經訓練的MLE514的系統中被訓練。在又一個實施例中,MLE504和MLE514可以同時一起被訓練。與MLE404 —樣,MLE504和MLE514可在數字相機302中被原地訓練、在計算機系統100或并行處理子系統112上被脫機訓練并隨后在數字相機302上實現、或在位于遠程的計算系統及基于云的計算系統上持續地被訓練。通過實現上文所描述的技術,可以顯著改進由數字相機302所渲染的輸出圖像的質量。
[0059]在一個實施例中,手動地、即通過收集由可替代渲染控制參數506所產生的圖像的人為生成的評級來生成經標示的經優化的圖像524。在另一個實施例中,MLE504和/或MLE514可通過從數字相機302的用戶接收輸入而持續地被訓練,該輸入表示使用給定的渲染控制參數506集所生成的經優化的圖像324的感知質量。通過針對用于不同原始圖像的不同渲染控制參數來重復該過程,訓練引擎505可以調節與MLE504和/或514相關聯的權值以更好地選擇渲染算法選擇器506a和渲染算法引數506b。以這種方式,MLE514可被訓練為預測用戶的偏好。
[0060]通過實現上文所描述的技術,可以顯著改進由數字相機302所渲染的經優化的圖
像的質量。
[0061]本領域的技術人員將認識到的是,可以應用種類繁多的機器學習算法和相關聯的訓練技術以實現MLE404、504和514中的每一個。進一步地,可以以任何技術上可行的方式將上文結合圖3-5所描述的10E322的不同實施例加以組合。下文結合圖7_10更詳細地對這些不同實施例中的每一個進行描述。
[0062]圖6是根據本發明的一個實施例的、用于使用圖4A-4B中示出的10E322來處理數字圖像的方法步驟的流程圖。盡管結合圖1-4B的系統描述了方法步驟,但是本領域的技術人員將理解的是,配置為以任何次序實施方法步驟的任何系統均在本發明的范圍內。
[0063]如所示,方法600開始于步驟602,其中10E322接收原始圖像。原始圖像可由例如圖3中示出的數字相機302內的光學傳感器308采集。在步驟604,10E322針對原始圖像生成原始圖像統計。由10E322所生成的原始圖像統計可包括不同的值,其中每個值與可針對原始圖像所計算的不同統計相對應。原始圖像統計可包括種類繁多的不同統計,包括表示與圖像相關聯的顏色分布、亮度分布、對比度、飽和度、曝光度和/或其他統計的量。
[0064]在步驟606,10E322使用MLE404基于原始圖像統計并且可選地也基于原始圖像來生成渲染控制參數。渲染控制參數選擇要被應用到原始圖像的算法以及要被給定到這些算法的引數。如上文結合圖4A所描述的,MLE404可以通過應用任何技術上可行的監督式學習算法而被訓練,如結合圖4B所描述的。
[0065]在步驟608,10E322通過利用所選擇的算法和它們的引數處理原始圖像來渲染經優化的圖像。方法600然后結束。通過實現方法600,10E322可以生成經優化的圖像,所述經優化的圖像與原始圖像相比具有經改進的質量。圖7概述了用于生成經優化的圖像的另一個方法。[0066]圖7是根據本發明的一個實施例的、用于使用圖5A-5B中示出的10E322來處理數字圖像的方法步驟的流程圖。盡管結合圖1-3及5A的系統描述了方法步驟,但是本領域的技術人員將理解的是,配置為以任何次序實施方法步驟的任何系統均在本發明的范圍內。
[0067]如所示,方法700開始于步驟702,其中10E322接收原始圖像。在步驟704,10E322針對原始圖像生成原始圖像統計。步驟702和704可以分別與圖6中示出的方法600的步驟602和604大致相似。
[0068]在步驟706,10E322基于原始圖像統計并且可選地還基于原始圖像來生成針對原始圖像的導出的圖像統計。導出的圖像統計表示可基于原始圖像統計而推斷的統計,并且可表示原始圖像的質量,諸如場景類型(例如“海灘”、“森林”等)、亮度顏色、聚焦深度等等。一般而言,導出的圖像統計表不外部環境的性質。如上文結合圖5A所描述的,10E322實現MLE504以生成導出的圖像統計。還如上所描述的,MLE504可通過將任何技術上可行的監督式學習算法應用到MLE504而被訓練以調節MLE504內的權值。這樣做時,可將“示范性的”原始圖像與它們的相對應的“理想的”經標示的經優化的圖像結合使用來訓練包括MLE504的系統。
[0069]在步驟708,10E322使用MLE514基于導出的統計以及可選地還基于原始圖像統計以及可選地完全或部分原始圖像來生成渲染控制參數。渲染控制參數選擇要被應用到原始圖像的算法以及要被給定到這些算法的引數。與MLE504 —樣,MLE514可通過應用任何技術上可行的監督式學習算法而被訓練,如結合圖5B所描述的。
[0070]在步驟710,10E322將具有所指定的引數的所選擇的算法應用到原始圖像以渲染經優化的圖像。方法700然后結束。通過實現方法700,10E322可生成經優化的圖像,所述經優化的圖像與原始圖像相比具有經改進的質量。圖8和9概述了用于訓練MLE404、504和514的方法的兩個實施例。
[0071]圖8是根據本發明的一個實施例的、用于訓練圖4A-4B中示出的10E322的方法步驟的流程圖。盡管結合圖1-4B的系統描述了方法步驟,但是本領域的技術人員將理解的是,配置為以任何次序實施方法步驟的任何系統均在本發明的范圍內。
[0072]如所示,方法800開始于步驟802,其中10E322內的訓練引擎405初始化MLE404。訓練引擎405可利用可以是隨機的、或以符合機器學習工藝的狀態的方式所更加仔細地選擇的值的合集來初始化MLE404。
[0073]在步驟804,10E322接收原始圖像。原始圖像可通過例如圖3中示出的數字相機302內的光學傳感器308來采集。在步驟806,10E322針對原始圖像生成原始圖像統計。原始圖像統計可包括不同的值,其中每個值與可針對原始圖像所計算的不同統計相對應。原始圖像統計可包括種類繁多的不同統計,包括表示與圖像相關聯的顏色分布、亮度分布、對比度、飽和度、曝光度和/或其他統計的量。
[0074]在步驟808,10E322內的MLE404基于原始圖像統計并且可選地也基于原始圖像來生成渲染控制參數。渲染控制參數選擇要被應用到原始圖像的算法以及要被給定到這些算法的引數。在步驟810,10E322通過利用渲染算法選擇和渲染控制參數內的渲染算法引數處理原始圖像來渲染經優化的圖像。
[0075]在步驟812,訓練引擎405計算在經優化的圖像和經標示的經優化的圖像之間的偏差。可以手動地、即通過收集由渲染控制參數所產生的圖像的人為生成的評級來生成經標示的經優化的圖像。在步驟814,訓練引擎405確定在步驟812所計算的偏差是否超過閾值。如果是,則訓練引擎405基于在經優化的圖像和經標示的經優化的圖像之間的差異來調節MLE404內的權值,并且方法800隨后返回到步驟804并且如上所述地繼續進行。經調節的值隨后可由MLE404用來計算經改進的渲染控制參數。如果在步驟814訓練引擎405確定偏差落在閾值之下,那么方法800結束。
[0076]圖9是根據本發明的一個實施例的、用于訓練圖5A-5B中示出的10E322的方法步驟的流程圖。盡管結合圖1-3及5A-5B的系統描述了方法步驟,但是本領域的技術人員將理解的是,配置為以任何次序實施方法步驟的任何系統均在本發明的范圍內。
[0077]如所示,方法900開始于步驟902,其中10E322內的訓練引擎505初始化MLE504和514。訓練引擎505可利用可以是隨機的、或以符合機器學習工藝的狀態的方式所更加仔細地選擇的值的合集來初始化MLE504和514。
[0078]在步驟904,10E322接收原始圖像。原始圖像可通過例如圖3中示出的數字相機302內的光學傳感器308來采集。在步驟906,10E322針對原始圖像生成原始圖像統計。原始圖像統計可包括不同的值,其中每個值與可針對原始圖像所計算的不同統計相對應。原始圖像統計可包括種類繁多的不同統計,包括表示與圖像相關聯的顏色分布、亮度分布、對比度、飽和度、曝光度和/或其他統計的量。在步驟908,10E322內的MLE514基于原始圖像統計生成導出的圖像統計。導出的圖像統計表示可基于原始圖像統計而推斷的統計,并且可表示原始圖像的質量,諸如場景類型(例如“海灘”、“森林”等)、聚焦深度等等。一般而言,導出的圖像統計表示外部環境的性質。
[0079]在步驟910,10E322內的MLE514基于原始圖像統計以及導出的圖像統計以及可選地也基于原始圖像來生成渲染控制參數。渲染控制參數選擇要被應用到原始圖像的算法以及要被給定到這些算法的引數。在步驟912,10E322通過利用渲染算法選擇和渲染控制參數內的渲染算法弓I數處理原始圖像來渲染經優化的圖像。
[0080]在步驟914,訓練引擎505計算在經優化的圖像和經標示的經優化的圖像之間的偏差。可以手動地、即通過收集由渲染控制參數所產生的圖像的人為生成的評級來生成經標示的經優化的圖像。在步驟916,訓練引擎505確定在步驟914所計算的偏差是否超過閾值。如果是,則訓練引擎505基于在經優化的圖像和經標示的經優化的圖像之間的差異來調節MLE504和514內的權值。該調節可以同時發生,訓練引擎504可以在牽涉不同原始圖像的不同訓練周期期間調節MLE504和514內的權值。經調節的值隨后可由MLE504和514用來計算經改進的渲染控制參數。方法900隨后返回到步驟904并且如上所述地繼續進行。如果在步驟916訓練引擎505確定偏差落在閾值之下,那么方法900結束。
[0081]本領域的技術人員將認識到的是,上文結合圖3-9所描述的技術可以以任何技術上可行的方式進行結合。例如,MLE404、504和514可以全部合并入10E322并且實現為配置為從原始圖像生成經優化的圖像的圖像處理管線的一部分。進一步地,本文所描述的MLE可以在數字相機302被發布到市場之前被初始訓練,并且還可以基于用戶輸入而經受持續的訓練。
[0082]總之,數字相機包括配置為基于由數字相機所采集的原始圖像來生成經優化的圖像的圖像優化引擎。圖像優化引擎實現一個或多個機器學習引擎以選擇渲染算法并且對它們提供引數以渲染來自原始圖像的經優化的圖像。圖像優化引擎配置為通過利用所選擇的算法和相對應的引數處理原始圖像來生成經優化的圖像。
[0083]有利地,圖像優化引擎內的機器學習引擎可被訓練為生成圖像而不要求圖像處理算法設計師團隊來產生調整這種算法的算法合集。進一步地,數字相機的用戶不再被要求向數字相機提供關于外部環境的質量的大量的手動輸入,從而改進了用戶體驗。
[0084]本發明的一個實施例可被實施為與計算機系統一起使用的程序產品。該程序產品的程序定義實施例的各功能(包括本文中描述的方法)并且可以被包含在各種計算機可讀存儲介質上。示例性計算機可讀存儲介質包括但不限于:(i)不可寫的存儲介質(例如,計算機內的只讀存儲器設備,諸如可由CD-ROM驅動器讀取的CD-ROM盤、閃存、ROM芯片或任何類型的固態非易失性半導體存儲器),在其上存儲永久性信息;和(ii)可寫的存儲介質(例如,磁盤驅動器或硬盤驅動器內的軟盤或者任何類型的固態隨機存取半導體存儲器),在其上存儲可更改的信息。
[0085]以上已參照特定實施例對本發明進行了描述。然而,本領域的技術人員將理解的是,可對此做出各種修改和變化而不脫離如隨附權利要求書中所闡述的本發明的較寬精神和范圍。因此,前面的描述以及附圖應被視為是例示性而非限制性的意義。
【權利要求】
1.一種用于渲染圖像的計算機實現的方法,包括: 經由包括在數字相機中的光學傳感器來采集原始圖像; 基于與所述原始圖像相關聯的像素值集生成針對所述原始圖像的圖像統計集; 使第一機器學習引擎選擇渲染算法和與所選擇的渲染算法相對應的渲染算法引數集;以及 通過利用所述渲染算法和所述渲染算法引數集處理所述原始圖像來渲染所述圖像。
2.根據權利要求1所述的計算機實現的方法,其中所述第一機器學習引擎通過以下各項被訓練: 接收目標圖像; 通過將所述圖像與所述目標圖像比較來計算偏差值; 確定所述偏差值超過閾值;以及 基于在與所述圖像和所述目標圖像相關聯的像素值之間的差異來調節所述第一機器學習引擎內的權值集。
3.根據權利要求2所述的計算機實現的方法,其中所述第一機器學習引擎包括人工神經網絡并且其中調節與所述第一機器學習引擎相關聯的所述權值集包括將反向傳播學習算法應用到所述權值集。
4.根據權利要求1所述的計算機實現的方法,其中所述圖像統計集包括表示與所述原始圖像相關聯的白平衡、對比度、飽和度和/或曝光度的原始圖像統計。
5.根據權利要求4所述的計算機實現的方法,其中所述圖像統計集進一步包括由第二機器學習引擎基于所述原始圖像統計所生成的導出的圖像統計,并且其中所述導出的圖像統計指示外部環境的性質。
6.根據權利要求5所述的計算機實現的方法,其中所述第一和第二機器學習引擎通過以下各項被訓練: 接收目標圖像; 通過將所述圖像與所述目標圖像比較來計算偏差值; 確定所述偏差值超過閾值; 基于在與所述圖像和所述目標圖像相關聯的像素值之間的差異來調節所述第一機器學習引擎內的權值集;以及 基于在與所述圖像和所述目標圖像相關聯的像素值之間的差異來調節所述第二機器學習引擎內的權值集。
7.根據權利要求6所述的計算機實現的方法,其中所述第一機器學習引擎包括人工神經網絡并且調節與所述第一機器學習引擎相關聯的所述權值集包括將反向傳播學習算法應用到所述權值集,以及其中所述第二機器學習引擎包括人工神經網絡并且調節與所述第二機器學習引擎相關聯的所述權值集包括將反向傳播學習算法應用到所述權值集。
8.一種配置為渲染圖像的計算設備,包括: 處理單元,其配置為: 經由包括在數字相機中的光學傳感器來采集原始圖像; 基于與所述原始圖像相關聯的像素值集生成針對所述原始圖像的圖像統計集; 使第一機器學習引擎選擇渲染算法和與所選擇的渲染算法相對應的渲染算法引數集;以及 通過利用所述渲染算法和所述渲染算法引數集處理所述原始圖像來渲染所述圖像。
9.根據權利要求8所述的計算設備,進一步包括: 存儲器,其耦連到所述處理單元并且存儲程序指令,所述程序指令當由所述處理單元執行時使所述處理單元: 采集所述原始圖像, 生成所述圖像統計集, 使所述第一機器學習引擎選擇所述渲染算法和所述渲染算法引數集,以及 渲染所述圖像。
10.根據權利要求8所述的計算設備,其中所述第一機器學習引擎通過以下各項被訓練: 接收目標圖像; 通過將所述圖像與所述目標圖像比較來計算偏差值; 確定所述偏差值超過閾值;以及 基于在與所述圖像和所述目標圖像相關聯的像素值之間的差異來調節所述第一機器學習引擎內的權值集,其中所述第一機器學習引擎包括人工神經網絡并且其中調節與所述第一機器學習引擎相關聯的所`述權值集包括將反向傳播學習算法應用到所述權值集。
【文檔編號】H04N17/00GK103731660SQ201310479312
【公開日】2014年4月16日 申請日期:2013年10月14日 優先權日:2012年10月12日
【發明者】邁克爾·布賴恩·考克斯 申請人:輝達公司