用于圖像采集和處理的統(tǒng)一跨設備控制的抽象相機管道的制作方法
【專利摘要】一種用于具有集成相機的設備獲取數(shù)字圖像的系統(tǒng)包括應用程序接口(API)。API適于從操作在設備上的分立應用接收預處理和其他指令。API還適于使用管道配置處理多個圖像采集請求。
【專利說明】用于圖像采集和處理的統(tǒng)一跨設備控制的抽象相機管道
【技術領域】
[0001]本申請涉及用于在設備中獲取數(shù)字圖像的方法和系統(tǒng)。具體地,本公開涉及允許安裝在設備上的分立程序控制相同設備上的數(shù)字圖像傳感器的應用編程接口(API)。
【背景技術】
[0002]很多現(xiàn)代設備依賴于來自一個供應商的操作系統(tǒng)和來自一個或者多個其他供應商的硬件。進一步地,設備可以包括來自第三供應商的另外的程序或者應用。
[0003]在設備上,操作系統(tǒng)包括監(jiān)管操作系統(tǒng)或者硬件(例如,顯示器、觸摸屏、音頻輸出、網(wǎng)絡連接、數(shù)字圖像傳感器等)的應用控制的應用編程接口(API)。這些API提供用于在硬件上執(zhí)行功能的通用指令準則。
[0004]當前的相機API可以包括高水平準則,諸如用于獲取圖像的指令和用于使閃光燈發(fā)光的指令。另外的低水平功能不存在于API中,并且因此應用對數(shù)字圖像傳感器具有有限的控制。提供具有低水平功能但是與更大數(shù)目的獨立硬件配置兼容的API將是有利的。
【發(fā)明內(nèi)容】
[0005]一種用于具有集成相機的設備獲取數(shù)字圖像的系統(tǒng)包括應用程序接口(API) οAPI適于從操作在設備上的分立應用接收指令。指令可以包括圖像采集指令和圖像數(shù)據(jù)預處理指令。API還可以適于使用管道配置處理多個圖像采集指令,其中根據(jù)第一圖像采集請求執(zhí)行處理的不同元素,而根據(jù)第二圖像采集請求執(zhí)行處理的其他元素。在預處理后,系統(tǒng)將經(jīng)預處理的圖像輸出回到分立應用,和/或到存儲器和GPU。
[0006]由API從分立應用接收的指令允許分立應用自定義API輸出的圖像數(shù)據(jù)的采集和預處理。
[0007]從下文的詳細描述中,本公開另外的特征將顯而易見,詳細描述借助于示例圖示了本公開的特征。
【專利附圖】
【附圖說明】
[0008]本領域的技術人員從下文的詳細描述和其附圖中將會領會和理解本公開的上述和其他優(yōu)點和特征。
[0009]圖1是本公開的用于獲取圖像的系統(tǒng)的示例的透視圖;
[0010]圖2是本公開的用于獲取圖像的系統(tǒng)的示例的示意圖;
[0011]圖3是本公開的用于獲取圖像的系統(tǒng)的不例的另一不意圖;
[0012]圖4是本公開的用于獲取圖像的系統(tǒng)的示例的預處理器的示意圖;以及
[0013]圖5是本公開的用于獲取圖像的系統(tǒng)的不例的另一不意圖。
【具體實施方式】
[0014]本公開提供用于相機和傳感器的改進的API。如圖1所示,API (有時稱為“接口”)優(yōu)選地設計用于移動設備100,雖然它可以用在具有相機102的任何設備上。API被配置成基于指令集控制一類硬件配置。
[0015]假定設備100包括操作系統(tǒng)(OS) 210和分立應用220。OS 210協(xié)調(diào)應用220、集成相機202 (貫穿本書面描述,術語相機和傳感器可以互換使用)和顯示器204的功能。OS210進一步包括相機API212和顯示器API 214,其中相機API 212與相機202通信,并且顯示器API 214與顯示器204通信。
[0016]預處理
[0017]無論何時(相機的)圖像傳感器獲取圖像或視頻(下文中“圖像”可以用于包括圖像和視頻二者),初始傳感器數(shù)據(jù)在其可以被顯示前必須被預處理。初始傳感器數(shù)據(jù)包括噪聲、邊影、模糊(pixilat1n)和使圖像對于人眼更不可識別的其他特性。因此,必須使用預處理算法(例如,去馬賽克、噪聲降低、噪點校正、白平衡調(diào)整、對比度調(diào)整、邊緣增強)調(diào)整初始傳感器數(shù)據(jù)。本公開允許在圖像創(chuàng)建中的該數(shù)據(jù)的預處理中的更大的靈活性。
[0018]本公開將提供統(tǒng)一的指令集,借此在系統(tǒng)300上運行的分立應用312(即,結(jié)合但獨立于操作系統(tǒng)運行的應用)能夠操縱預處理器330。具體地,系統(tǒng)300允許應用312控制包括在數(shù)字圖像獲取中的預處理器330。例如,隨后安裝在設備100上的應用可以提供用于先前標識的預處理功能的新算法。系統(tǒng)300還能夠操作在一類硬件配置上,而不是設計用于特定的圖像傳感器和處理器。
[0019]如圖3所示,圖像獲取系統(tǒng)300從傳感器302或者Raw輸入308獲得初始傳感器數(shù)據(jù)306,其中傳感器302和Raw輸入308可以由獲取圖像指令啟動。Raw輸入308包括已經(jīng)存儲在存儲器中的先前獲得的傳感器數(shù)據(jù)。初始傳感器數(shù)據(jù)306被輸送到統(tǒng)計發(fā)生器320和Raw輸出350。Raw輸出350前進到多路復用器360,這在下文中討論。
[0020]統(tǒng)計發(fā)生器320測量統(tǒng)計數(shù)字,諸如日期、分辨率、閃光、和與正被獲取的圖像相關的其他信息。在一個示例中,統(tǒng)計發(fā)生器320計算直方圖并且將直方圖輸出到應用。
[0021]在生成統(tǒng)計數(shù)字后,基于來自應用312的預處理指令314由如圖4所示的預處理器330處理Raw輸入308。如上文所討論的那樣,預處理器適于執(zhí)行:陰影校正332、噪聲降低334、去馬賽克336、噪點校正338、幾何校正340、色彩校正342、色調(diào)曲線調(diào)整344、和邊緣增強346。這些功能的順序可以由預處理器330預定或者可以由預處理指令314控制。雖然系統(tǒng)還可以接受來自應用312的作為預處理指令314的部分的預處理算法,但是系統(tǒng)可以包括用于預處理功能332、334、336、338、340、342、344、346的各種已知的算法。進一步地,應用312的預處理指令314可以包括禁用預處理功能332、334、336、338、340、342、344、346中的一個或者多個預處理功能。
[0022]新近預處理的數(shù)據(jù)348以YUV Raw輸出352、壓縮輸出354和視頻輸出356的形式被轉(zhuǎn)換和輸出。YUV Raw輸出352、壓縮輸出354和視頻輸出356通過多路復用器360與Raw輸出350組合,并且然后從API 310輸出到應用312。然后應用312基于多路復用器360的輸出可以進一步處理數(shù)據(jù)(使用任何或者所有格式)和/或顯示圖像。
[0023]管道
[0024]如與圖2相補的圖5所圖示的那樣,提供用于獲取圖像的API500。API 500可以由getCameralnfo O 502和open (ID) 504命令啟動,所述命令由OS 210提供給系統(tǒng)500 (部分對應于API 212)。getCameralnfo O 502命令測量相機特性510,優(yōu)選地包括ID 512、位置信息514、光學信息516、傳感器信息518和管道信息520。
[0025]ID 512包括相機202的型號名稱和型號。位置信息514涉及設備上的傳感器的位置(可以應用于多相機立體圖像獲取應用)。光學信息516包括關于相機202的固定信息,諸如焦距和光圈范圍。傳感器信息518包括關于傳感器202的固定信息,諸如最大分辨率、類型(例如CMOS、CCD等)和尺寸。管道信息520包括可用的處理類別(例如,肖像、運動、動畫、視頻、風景等)。
[0026]Open(ID)命令504啟動API 500并且允許創(chuàng)建多個管道530 (圖5中圖示了四個createPipelineO函數(shù)522、524、526、528)和采集請求540 (與createCaptureRequest ()538 有關)。createPipelineO 函數(shù) 522、524、526、528 和createCaptureRequest O函數(shù)538是從系統(tǒng)500調(diào)用的方法的所有實例。每個管道530是一組串聯(lián)連接的數(shù)據(jù)處理元素,其中一個元素的輸出是下一元素的輸入;第一管道530的一個元素可以與第二管道530的不同元素并行地執(zhí)行。
[0027]多個管道530中的每個管道被分配槽編號532、幀大小534和幀格式536。米集請求540包括針對傳感器控制544、透鏡控制546、3A控制(自動曝光、自動聚焦、自動白平衡)548、處理控制550和統(tǒng)計控制552的準則。處理控制準則550可以包括上文關于圖3和圖4描述的預處理指令314。通過包含與每個輸出管道530相關的采集請求信息544、546,548,550和552,采集請求540形成多個輸出管道530。
[0028]分別響應于streamO方法554或capture O方法556,輸出管道540被轉(zhuǎn)發(fā)到輸入請求隊列560和/或流式保持槽570。輸入請求隊列560包含多個請求562,并且流式保持槽570包含流請求572。輸入請求隊列560和流式保持槽570還可以由reprocess O方法558填入。reprocessO方法558涉及來自存儲器而不是傳感器的數(shù)據(jù)。
[0029]輸入請求隊列560包括保持請求562的有序列表的多個空間,以采集具有采集請求538細節(jié)的圖像。一旦圖像傳感器580(圖5中稱為平臺硬件抽象層(HAL)實施方式)已經(jīng)獲取圖像,輸入請求隊列560中的下一請求562被傳遞給傳感器580。傳感器580不僅獲取數(shù)據(jù),而且根據(jù)預處理指令314預處理數(shù)據(jù)以創(chuàng)建RAW圖像592。
[0030]如果新請求562沒有在輸入請求隊列560中準備好,則從流式保持槽570中獲取流請求572。流式保持槽570提供在存儲器要求方面可能較低的備份請求。在很多實例中,流式保持槽570用于在設備100的顯示器104上提供預覽圖像。在這樣的場景中,系統(tǒng)500避免生成連續(xù)請求562以維持連續(xù)的預覽圖像。在其他實例中,流式保持槽570用于防止冗余請求562的連續(xù)流動。
[0031]除了輸入請求隊列560和流式保持槽570之外,傳感器580可以接收再處理558的請求。再處理558的請求涉及來自先前圖像獲取的、現(xiàn)在正在被再處理成可視圖像的存儲的RAW文件642。
[0032]在傳感器580獲取或者處理圖像592后,傳感器580輸出圖像592和元數(shù)據(jù)612。圖像被輸出到圖像緩沖管道590 (其依賴于Gralloc環(huán)形緩沖區(qū),其中有限數(shù)目的大容量存儲器位置被分配以存儲圖像數(shù)據(jù)并且位置以環(huán)形方式循環(huán)),其中具有針對每個管道530的分離的緩沖區(qū)590。元數(shù)據(jù)612被輸出到輸出幀元數(shù)據(jù)隊列,其包含多個元數(shù)據(jù)612。一旦由getframe()620請求,RAW圖像592和元數(shù)據(jù)612 二者都被移動到幀630。幀630將圖像592和與其相關聯(lián)的采集請求632、最終設置634、基本元數(shù)據(jù)636、統(tǒng)計輸出638和字節(jié)緩沖區(qū)640合并。字節(jié)緩沖區(qū)640保持圖像592。幀630被保存為RAW文件642。另外,RAW圖像592可以被發(fā)送到設備GPU 650、視頻編碼器652、渲染腳本(3D渲染)654和/或應用656。當RAW圖像592被發(fā)送到設備GPU 650、視頻編碼器652和/或渲染腳本654時,RAW圖像592被處理(例如,通過JPEG、YUV等)成可視格式并且被顯示。
[0033]附圖圖示了 API以及其硬件環(huán)境的示例。其他類型和方式是可能的,并且就這點而言附圖并不旨在于是限制性的。因此,雖然上文的描述和附圖包含很多特殊性,但是所提供的細節(jié)不應當被解釋為限制示例的范圍,而是僅僅作為提供目前優(yōu)選示例中的一些示例的說明。附圖和描述不應當被認為限制示例的范圍,而是根據(jù)本公開理解為廣義和一般教導。雖然已經(jīng)使用特定術語描述了本公開的現(xiàn)有示例,但是這樣的描述僅用于目前圖示性的目的,并且應當理解的是,對這些示例的修改和變化(包括但不限于等價特征、材料、或部分的替代,以及其各種特征的變更)在不脫離本公開的精神和范圍的情況下可以由本領域的普通技術人員實踐。
【權利要求】
1.一種用于具有集成相機的設備的獲取數(shù)字圖像的系統(tǒng),所述系統(tǒng)包括: 圖像傳感器,適于獲取初始傳感器數(shù)據(jù); 圖像獲取接口,適于控制所述圖像傳感器和預處理所述初始傳感器數(shù)據(jù)以形成預處理圖像; 其中所述圖像獲取接口被配置成基于指令集控制一類硬件配置; 操作在所述設備上的分立應用,所述分立應用根據(jù)所述指令集向所述圖像獲取接口提供預處理指令。
2.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于陰影校正的指令。
3.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于噪聲降低的指令。
4.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于去馬賽克的指令。
5.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于噪點校正的指令。
6.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于幾何校正的指令。
7.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于色彩校正的指令。
8.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于色調(diào)曲線調(diào)整的指令。
9.根據(jù)權利要求1所述的系統(tǒng),其中所述預處理指令包括用于邊緣增強的指令。
10.根據(jù)權利要求1所述的系統(tǒng),其中所述圖像獲取接口適于向所述分立應用提供直方圖。
11.根據(jù)權利要求1所述的系統(tǒng),其中所述圖像獲取接口適于基于所述預處理指令獲取多個初始傳感器數(shù)據(jù)。
12.根據(jù)權利要求11所述的系統(tǒng),其中所述預處理指令包括用于預處理不同初始傳感器數(shù)據(jù)的不同準則。
13.—種操作在具有集成相機的設備上的用于獲取多個數(shù)字圖像的方法,所述方法包括步驟: 生成第一請求以獲取圖像,所述第一請求包括第一預處理指令; 生成第二請求以獲取圖像,所述第二請求包括第二預處理指令; 根據(jù)所述第一請求獲取第一傳感器數(shù)據(jù); 與根據(jù)所述第二請求獲取第二傳感器數(shù)據(jù)并行地根據(jù)所述第一預處理指令預處理所述第一傳感器數(shù)據(jù)以生成第一預處理圖像; 與根據(jù)所述第二預處理指令預處理所述第二傳感器數(shù)據(jù)以生成第二預處理圖像并行地根據(jù)所述第一請求輸出所述第一預處理圖像;以及輸出所述第二預處理圖像。
14.根據(jù)權利要求13所述的方法,進一步包括當?shù)谝徽埱蠛偷诙埱笪传@得時基于流請求獲取圖像的步驟。
15.根據(jù)權利要求13所述的方法,其中所述預處理指令包括從由以下組成的群組中選取的指令:陰影校正、噪聲降低、去馬賽克、噪點校正、幾何校正、色彩校正和邊緣增強。
16.一種用于具有集成相機的設備的獲取數(shù)字圖像的系統(tǒng),所述系統(tǒng)包括: 接口,適于從分立應用接收多個指令,其中所述指令被配置以操作在多個硬件配置上; 傳感器,適于根據(jù)所述指令獲取初始圖像數(shù)據(jù);以及 處理器,適于根據(jù)所述多個指令中的第一指令預處理第一初始圖像數(shù)據(jù)并且輸出第一預處理圖像數(shù)據(jù),以及適于根據(jù)所述多個指令中的第二指令并行地預處理第二初始圖像數(shù)據(jù)并且輸出第二預處理圖像數(shù)據(jù)。
17.根據(jù)權利要求16所述的用于具有集成相機的設備的獲取數(shù)字圖像的系統(tǒng),其中所述指令包括從由以下組成的群組中選取的指令:陰影校正、噪聲降低、去馬賽克、噪點校正、幾何校正、色彩校正和邊緣增強。
18.根據(jù)權利要求16所述的用于具有集成相機的設備的獲取數(shù)字圖像的系統(tǒng),其中所述第一預處理圖像數(shù)據(jù)和所述第二預處理圖像數(shù)據(jù)被輸出到所述分立應用。
19.根據(jù)權利要求16所述的用于具有集成相機的設備的獲取數(shù)字圖像的系統(tǒng),其中所述多個指令中的每個指令通過輸入請求隊列和流式保持槽之一傳遞; 其中當所述輸入請求隊列為空時,訪問所述流式保持槽。
20.根據(jù)權利要求16所述的用于具有集成相機的設備的獲取數(shù)字圖像的系統(tǒng),其中所述指令包括從由以下組成的群組中選取的指令:流請求、采集請求和再處理請求。
【文檔編號】H04N5/232GK104471510SQ201380036682
【公開日】2015年3月25日 申請日期:2013年7月11日 優(yōu)先權日:2012年7月11日
【發(fā)明者】E-V·A·塔爾瓦拉 申請人:谷歌公司