傳統圖像傳感器的信噪比可能受到讀取噪點的高度影響,尤其是在低能見度條件下成像時。例如,在低光成像條件,CMOS或CCD成像像素可以僅檢測少量光子,這可能導致讀取噪點接近或超過成像像素檢測到的信號,并降低信噪比。
當在低光條件下以高幀速率成像時,CMOS或CCD圖像傳感器檢測到的信號中讀取噪點的優勢通常會加劇。盡管較低的幀速率可用于允許CMOS或CCD傳感器檢測足夠的光子,但利用低幀速率通常會導致捕獲圖像中的運動模糊,這在頭顯中尤其成問題。
除了影響透視成像外,與常規圖像傳感器相關的讀取噪點和/或運動模糊可能影響頭顯執行的其他操作,如后期重投影、滾動快門校正、對象追蹤、表面重建、語義標記、對象的3D重建等。
針對這個問題,微軟在名為“Image acquisition techniques with reduced noise using single photon avalanche diodes”的專利申請中提出了一種通過單個單光子雪崩二極管(SPAD)來減少圖像獲取的噪點。
在一個實施例中,SPAD陣列可以形成圖像傳感器,每個SPAD在SPAD陣列中形成單獨的像素。為了捕獲環境的圖像,每個SPAD像素可以檢測雪崩事件,并為連續快門操作提供二進制輸出。可以對幀捕獲時間段的多個快門操作的每像素二進制輸出進行計數,并且可以基于所計數的每像素二值輸出來計算每像素強度值。每像素強度值可用于形成環境的強度圖像。
微軟指出,將SPAD圖像傳感器用于圖像捕獲可以提供優于傳統圖像捕獲系統和技術的眾多優點,特別是在低光條件下成像和/或在圖像捕獲期間經歷運動的設備成像。
首先,SPAD信號的二值化有效地消除了讀取早點,從而與傳統CMOS和/或CCD傳感器相比提高了SPAD圖像傳感器陣列的信噪比。因此,由于SPAD信號的二值化,SPAD信號可以以高幀速率讀出,而不會導致信號被讀取噪點支配,即使對于在低光環境下捕獲少量光子的信號都是如此。
鑒于上述情況,可以使用SPAD陣列以高幀速率執行多次曝光和讀出操作,以生成單獨的部分圖像幀,并且可以組合單獨的局部圖像幀以形成單個合成圖像。
通過利用SPAD陣列的多次曝光和讀出操作來形成單個合成圖像,可以實現高幀速率下的低光成像。另外i,利用高幀率進行低光圖像捕獲可以減少運動偽影的影響。值得一提的是,使用SPAD的高幀率圖像捕獲技術可以與其他運動補償操作組合,從而進一步減少運動偽影。緩解的運動偽影可以相應地改善頭顯執行的其他操作,例如后期重投影、滾動快門偽影校正等。
圖2B顯示了處理216組合部分幀214A、214B和214C以形成圖像218。因為可以在避免讀取噪點的同時執行連續執行的曝光和讀出操作,所以可以以高幀速率執行曝光和讀出。因此,由于圖像218是使用以高幀率捕獲但仍共同跨越有效曝光時間206的分量生成,圖像218可以提供具有減少的運動模糊的低光環境的適當曝光表示。
在一個實施例中,可以執行額外的動作以進一步減輕或減少捕獲的合成圖像中的運動模糊。例如,系統執行運動補償操作以生成合成圖像,以與上面描述的利用順序、高幀率曝光和讀出操作的技術相結合。
圖3示出了使用SPAD陣列捕獲連續低光圖像的示例。作為示例實現,可以使用頭顯的一個或多個SPAD陣列來捕獲連續的微光圖像,并且可以用于生成所捕獲的微光環境的透視圖像,以實時呈現給用戶。
圖3說明了使用SPAD陣列200執行的各種曝光和讀出操作。特別是,圖3顯示了順序執行的曝光和讀出作業304A至304F。
圖3所示的示例顯示了使用單獨的曝光和讀出操作集生成的每個圖像306A和306B。例如,圖像306A是使用曝光和讀出操作304A、304B和304C生成,而圖像306B是使用單獨的、不重疊的曝光和讀出組304D、304E和304F生成。可以以任何期望的速率執行單獨的順序曝光和讀出操作集。
例如,第一組曝光和讀出操作可以包括曝光和讀出動作304A、304B和304C,第二組曝光和讀取操作可以包括暴露和讀出操作304D、304E和304F。系統可以執行連續的3組曝光和讀出操作,使得這些組以30Hz或更低(或更高)的速率完成。
流程圖700的動作702包括執行多個順序曝光和讀出操作,每個曝光和讀出包括:(i)應用一組快門操作以配置SPAD陣列的每個SPAD像素以啟用光子檢測,以及(ii)對于SPAD陣列中的每個SPA像素,讀出在所述一組快門操作期間檢測到的光子的數量。
在一個實施例中,為每個單獨的曝光和讀出操作生成部分幀。多個順序曝光和讀出操作可以包括2、3或更多曝光和讀出。每個順序曝光和讀出操作具有相同的曝光時間。
動作704包括基于在多個順序曝光和讀出操作中的每一個期間為每個SPAD像素檢測到的光子數量生成圖像。在一個實施例中,使用基于在多個順序曝光和讀出操作中的每一個期間為每個SPAD像素檢測到的光子數量而確定的部分幀來生成圖像。另外,執行一個或多個運動補償操作以生成圖像。
動作706包括執行連續多個順序曝光和讀出操作。在一個實施例中,連續多個順序曝光和讀出操作包括至少部分重疊的順序曝光和讀取操作集,而在其他實現中,順序多個順序暴露和讀出操作包含非重疊的順序暴露和讀取操作。在一個實施例中,以30Hz或更低的速率執行連續多個順序曝光和讀出操作。
動作708包括生成連續圖像,每個連續圖像基于連續多個順序曝光和讀出操作中的相應多個順序暴露和讀出操作生成。
動作710包括在顯示器連續顯示連續圖像。在一個實施例中,用于在顯示器顯示連續圖像的幀顯示速率與執行連續多個順序曝光和讀出操作的順序曝光和讀取操作的速率相匹配。
現在注意圖8。流程圖800的動作802包括執行多個順序快門操作,以配置SPAD陣列的每個SPAD像素以啟用光子檢測。
動作804包括訪問SPAD陣列的每個SPAD像素的相應二進制計數流,每個相應的二進制計數流對于相應的SPAD像素指示在多個順序快門操作期間檢測到的光子數。在一個實施例中,二進制計數的各個流累積在系統片上系統(SOC)。
動作806包括從每個SPAD像素的相應二進制計數流中識別一組二進制計數,包括來自每個SPAD象素的每個二進制計數流的相應二進制數。
動作808包括使用該組二進制計數生成圖像。在一個實施例中,應用一個或多個運動補償操作作為生成圖像的一部分。
動作810包括從每個SPAD像素的相應二進制計數流中識別第二組二進制計數,第二組二元計數包括來自每個SPAD象素的每個二進制計數流的第二組相應二進制計數。在一個實施例中,第二組二進制計數包括來自也包括在該組二進制計數中的相應二進制計數流的至少一些二進制計數。另外,第二組二進制計數包括與該組二進制計數相同數量的二進制計數。
動作812包括使用第二組二進制計數生成第二圖像。在圖像之后生成/獲得第二圖像。第二圖像和圖像二者可以連續地顯示在頭顯顯示器,以便于在低光條件下以減少的運動模糊進行透視成像。
通過以上描述的方式,SPAD可以幫助生成減少噪點的圖像。