經受的模糊在最優模糊半徑范 圍內。
[0106] 以下討論描述了可以根據至少一個示例使用本文所描述的技術執行的示例動作 和/或程序。圖5描繪了包括關于確定用于在如本文所描述的深度圖生成中使用的圖像捕 獲指令的示例功能的過程500。不管實現在用戶設備402(1)-402 (N)(圖4)中的一個中,還 是在圖像編輯服務404(圖4)內,圖像特征引擎102(圖1)可以執行圖6的過程600。在一 些示例中,過程600的全部或者部分可以使用深度倒數(8卩,1/深度)測量進行計算。在一 些示例中,過程600比過程500簡單,因為過程600預先確定圖像的最小數量,并且將景深 平均分布在整個深度范圍內。
[0107] 過程600通過接收深度范圍信息而在602處開始。深度范圍信息可以包括距離估 計。接收距離估計可以包括含場景內的最近對象的估計的接收距離估計。在一些示例中, 距離估計可以指示場景的平均距離。在一些示例中,距離估計可以包括場景的部分與觀察 點的距離。在一些示例中,深度范圍信息可以用于標識深度范圍。例如,深度范圍信息可以 指示最小深度(例如,兩米),并且可以估計最大深度。在一些示例中,深度范圍信息指示最 小深度和最大深度兩者。這些深度中的一個或者兩個可以由用戶輸入,或者使用設備或者 自動方法收集。在一些示例中,深度范圍信息包括圖像的目標數量的輸入。圖像的目標數 量可以指示用于希望拍攝的圖像數,或者相機在某個時間閾值(例如,五秒)內可能拍攝的 圖像數。在一些示例中,過程600在確定圖像捕獲指令和相應地調整輸出時考慮圖像的目 標數量。在一些示例中,這可以導致超過或者達不到最優模糊半徑范圍的深度信息。在一 些示例中,當圖像的目標數量超過圖像的最小數量時,在景深中可以存在重疊和/或可以 存在過量的深度信息。在一些示例中,當圖像的目標數量小于圖像的最小數量時,在景深中 可以存在間隙和/或可以存在深度信息的缺乏。
[0108] 在604處,過程600針對待捕獲的圖像標識最優模糊半徑的范圍。在一些示例中, 最優模糊半徑范圍在過程600執行之前確定。例如,最優模糊半徑范圍可以被預計算并且 提供給執行過程600的計算機。在一些示例中,最優模糊半徑范圍部分地通過評估包括場 景依賴部分和場景獨立部分的深度辨別力函數的場景獨立部分而確定。場景獨立部分獨立 于場景,因為它依賴于用于捕獲圖像的數碼相機的校準數據,而不依賴于下面的場景。在一 些示例中,深度辨別力函數包括如本文所描述的方程(3)。評估深度辨別力函數使得最大化 深度辨別力函數的場景獨立部分。在一些示例中,最優模糊半徑的范圍被分解為圖像捕獲 指令的確定以便確保將存在足夠的信息使得可以從捕獲的圖像生成質量深度圖。以這種方 式,確定圖像捕獲指令使得最大化深度信息的數量,而且最小化待捕獲的圖像數。在一些示 例中,最優模糊半徑范圍是約1像素至約2像素。
[0109] 在606處,過程600標識光圈設置。在一些不例中,相同的光圈設置可以用于待捕 獲的圖像中的至少兩個。在一些示例中,光圈設置是基于相機的可用光圈設置的最小可允 許光圈設置之一。在一些示例中,最優地,光圈設置作為評估深度辨別力函數的場景獨立部 分的一部分進行選擇。在一些示例中,光圈設置可以大于最小可允許光圈。在一些示例中, 過程600在606處使用不同的光圈設置被評估。以這種方式,光圈設置可以針對不同的光 圈設置而確定。
[0110] 在608處,過程600基于用于相機的校準數據,確定最大K值。K值指示在深度范 圍內的最大長度的間隔。在一些示例中,深度范圍基于深度范圍信息確定。在一些示例中, 相機校準數據包括最優模糊半徑的范圍和透鏡常數a。特別地,最大K值可以通過將深度 范圍的長度除以最優模糊半徑的范圍與透鏡常數a的商而確定。透鏡常數a表示透鏡倒 數與模糊半徑(例如,模糊核)之間的轉換因子。模糊核通過校準設置(例如,光圈和焦 距)和深度到模糊核的映射來標識。映射從相機的校準中導出。在該示例中,透鏡常數a 基于模糊半徑根據深度倒數的變化率在深度范圍內近似恒定的假設。在方程(12)中的厚 透鏡模型示例中,對于厚透鏡參數C_f^PD_f,透鏡常數a表示在厚度范圍內近似恒定的乘 積 C_f*D_f。
[0111] 在610處,過程600基于最大K值,確定在深度范圍內的間隔的數量。間隔的數量 對應于所建議的圖像的最小數量。在一些示例中,每個間隔對應于景深間隔。因此,間隔的 數量是將完全填滿深度范圍而沒有任何間隙且沒有重疊的景深的景深數,在一些示例中, 景深貫穿深度范圍等間距。在一些示例中,間隔的數量對應于圖像的最小數量,因為對于深 度范圍中的每個間隔指定一個圖像。因此,對應可以是一對一的。在一些示例中,存在比圖 像更多的間隔,反之亦然。
[0112] 在612處,過程600基于間隔的數量,確定最優間隔長度。在一些示例中,最優間 隔長度基于間隔的集合的數量。以這種方式,每個間隔的最優間隔長度是深度范圍的總長 (例如,最小深度減去最大深度)除以間隔的數量。
[0113] 在614處,過程600基于每個間隔的最優長度,確定用于最小數量的圖像中的每 個圖像的焦距設置。在一些示例中,用于每個圖像的焦距設置對應于位于集合的每個間隔 的中點處的焦平面。在一些示例中,所確定的焦距設置被轉換或者以其他方式調整以符合 相機上可用的焦距設置。在一些示例中,焦距設置以包括用于最小圖像中的每個圖像的焦 距設置的陣列的形式輸出。在一些示例中,最小數量的圖像中的每個圖像對應于焦距設置。 在一些示例中,光圈設置是對于最小數量的圖像中的一部分相同的光圈設置。在一些示例 中,用于最小數量的圖像中的每個圖像的焦距設置和光圈設置由相機使用以捕獲最小數量 的圖像。
[0114] 圖7圖示了用于實現關于確定用于在如本文所描述的深度圖生成中使用的圖像 捕獲指令的技術的示例架構700。架構700包括經由一個或者多個網絡724 (在下文中,"網 絡724")與圖像編輯服務704通信的一個或者多個用戶設備702(1)-702(N)(在下文中, "用戶設備702")。網絡724包括很多不同類型的網絡中的任何一個或者組合,諸如電纜網 絡、因特網、無線網絡、蜂窩網絡、無線電網絡和其他私人和/或公共網絡。
[0115] 用戶設備702包括能夠捕獲圖像和/或對圖像執行一個或者多個操作的任何合適 的設備。在一些示例中,用戶設備702是任何合適的計算設備,諸如但不限于,數碼相機、移 動電話、智能電話、個人數字助手(PDA)、筆記本計算機、個人計算機、桌面計算機、機頂盒、 瘦客戶端設備或者其他計算設備。用戶設備702由一個或者多個用戶(未示出)利用,用 于與圖像編輯服務704交互。
[0116] 用戶設備702因此包括通信耦合至存儲器726并且執行計算機可執行程序代碼 和/或訪問存儲在存儲器726中的信息的處理器728。在一些示例中,存儲器726存儲網 絡服務應用732和一個或者多個引擎(例如,圖像特征引擎102、深度生成引擎726(A)、 深度細化引擎728 (A)、圖像編輯引擎720 (A))。處理器728包括微處理器、專用集成電路 ("ASIC")、狀態機或者其他處理設備。處理器728還可以包括任意多個處理設備,包括一 個。這樣的處理器可以包括或者可以與存儲指令的計算機可讀介質通信,當由處理器728 執行時,指令使得處理器執行本文所描述的操作。網絡服務應用732可以使得用戶能夠通 過網絡724與圖像編輯服務704進行交互。用戶設備702還包括圖像捕獲設備106(A)。圖 像捕獲設備106(A)被配置成捕獲一個或者多個圖像。在一些示例中,圖像捕獲設備106(A) 包括含透鏡、光圈設置、焦距設置的常規數碼相機,紅外投影儀和/或結構光設備。貫穿本 說明書"數碼相機"的任何使用僅用于說明的目的,并且本領域技術人員應當理解這樣的術 語可以一般地用于指代由用戶設備702 (1)-702 (N)中的任何一個或者任何類似設備執行 的或者與其集成的任何圖像捕獲設備106。因此,術語"數碼相機"和"用戶設備"在本文中 有時可以通用和互換使用。在一些示例中,用戶設備702(1)是數碼相機,并且可以被配置 成具有圖像捕獲設備106(A)以便捕獲圖像,但是可以不包括引擎中的任何或者一些。在該 示例中,用戶設備702 (1)(或者用戶設備702 (1)的操作者)提供有圖像捕獲指令108以在 使用圖像捕獲設備106(A)捕獲圖像118時使用。
[0117] 圖像編輯服務704包括通信耦合至存儲器708并且執行計算機可執行程序代碼和 /或訪問存儲在存儲器708中的信息的處理器706。在一些示例中,存儲器708存儲操作系 統712和一個或者多個引擎(例如,圖像特征引擎102、深度生成引擎726 (B)、深度細化引 擎728 (B)和圖像編輯引擎720 (B))。操作系統712包括配置成用于與圖像編輯服務704交 互的任何合適的操作系統。處理器706包括微處理器、ASIC、狀態機或者其他處理設備。處 理器728還包括任意多個處理設備,包括一個。這樣的處理器可以包括或者可以與存儲指 令的計算機可讀介質通信,當由處理器706執行時,指令使得處理器執行本文所描述的操 作。
[0118] 存儲器708包括任何合適的計算機可讀介質。計算機可讀介質可以包括電子、光、 磁或者能夠向處理器提供計算機可讀指令或者其他程序代碼的其他存儲設備。計算機可讀 介質可以包括例如磁盤、存儲器芯片、ROM、RAM、ASIC、配置處理器、光存儲、磁帶或者其他磁 存儲或者計算機處理器可以讀取指令的任何其他介質。指令可以包括由編譯器和/或解釋 器從以任何合適的計算機編程語言撰寫的代碼確定的處理器特定指令,這樣語言包括例如 C、C++、C#、Visual Basic、Java、Python、Perl、JavaScript 和 ActionScript。
[0119] 圖像編輯服務704還包括若干外部或者內部設備,諸如輸入或輸出設備。例如,圖 像編輯服務704包括輸入/輸出(I/O)設備和/或端口 714,諸如用于使得能夠與鍵盤、鼠 標、筆、語音輸入設備、觸摸輸入設備、顯示器、揚聲器、打印機或者其他I/O設備連接。圖像 編輯服務704還包括附加的存儲716,其可以包括可移動存儲和/或非可移動存儲。附加的 存儲716可以包括但不限于,磁存儲、光存儲和/或磁帶存儲。硬盤驅動器及其相關聯的計 算機可讀介質可以提供計算機可讀指令、數據結構、程序模塊和其他數據的非易失性存儲。 圖像編輯服務704還包括用戶接口 718。用戶接口 718由操作者或者其他授權用戶利用以 訪問圖像編輯服務704的部分。在一些示例中,用戶接口 718包括圖形用戶接口、基于網絡 的應用、諸如應用編程接口(API)之類的編程接口或者其他用戶接口配置。數據存儲720 包括用于存儲關于本文所描述的技術的實施方式的信息的數據結構。這樣的信息被存儲在 圖像數據庫722中。在圖像數據庫722內存儲了輸入圖像、深度圖和其他類似的圖像和圖, 以及他們的相關聯的信息。
[0120] 深度圖引擎726(A)、726(B)被配置為基于由圖像捕獲設備106捕獲的或者由另一 圖像捕獲設備捕獲的多個圖像118生成深度圖并且提供給用戶設備702 (1)-702 (N)之一或 者圖像編輯服務704。在一些示例中,深度生成引擎726 (A)、726 (B)執行一個或者多個操作 以根據描述在2014年11月24日提交的美國申請序列號14/552, 332中的技術生成深度圖, 該申請在此整體通過引用并入本文。例如,如在美國申請序列號14/552, 332中更加詳細地 描述的,深度生成引擎726(A)、726(B)可以生成深度圖、全景對焦圖像和不確定性的測量。
[0121] 深度細化引擎728(A)、728(B)被配置成細化先前生成的深度圖。在一些示例中, 深度細化引擎728(A)、728(B)執行對于由深度生成引擎726(A)、726(B)之一所生成的深度 圖的一個或者多個細化操作。這樣的細化操作起作用以改進深度圖。在一些示例中,改進深 度圖包括增加深度圖內的深度實際上是正確的深度的似然。在一些示例中,改進深度圖可 以包括通過深度細化引擎728 (A)、728 (B)之一標識當捕