ISP(Image Signal Processor),即圖像處理,主要作用是對前端圖像傳感器輸出的信號做后期處理,主要功能有線性糾正、噪聲去除、壞點去除、內(nèi)插、白平衡、自動曝光控制等,依賴于ISP才能在不同的光學條件下都能較好的還原現(xiàn)場細節(jié),ISP技術(shù)在很大程度上決定了攝像機的成像質(zhì)量。它可以分為獨立與集成兩種形式。
ISP 的Firmware 包含三部分,一部分是ISP 控制單元和基礎(chǔ)算法庫,一部分是AE/AWB/AF 算法庫,一部分是sensor 庫。Firmware 設(shè)計的基本思想是單獨提供3A 算法庫,由ISP 控制單元調(diào)度基礎(chǔ)算法庫和3A 算法庫,同時sensor 庫分別向ISP 基礎(chǔ)算法庫和3A 算法庫注冊函數(shù)回調(diào),以實現(xiàn)差異化的sensor 適配。ISP firmware 架構(gòu)如下圖所示。
不同的sensor 都以回調(diào)函數(shù)的形式,向ISP 算法庫注冊控制函數(shù)。ISP 控制單元調(diào)度基礎(chǔ)算法庫和3A 算法庫時,將通過這些回調(diào)函數(shù)獲取初始化參數(shù),并控制sensor,如調(diào)節(jié)曝光時間、模擬增益、數(shù)字增益,控制lens 步進聚焦或旋轉(zhuǎn)光圈等。
1. TestPattern-測試圖像
Test Pattern主要用來做測試用。不需要先在片上ROM存儲圖片數(shù)據(jù),直接使用生成的測試圖像,用生成的測試圖像進行后續(xù)模塊的測試驗證。以下是常用的兩種測試圖像。
2. BLC(BlackLevel Correction)-黑電平校正
Black Level 是用來定義圖像數(shù)據(jù)為 0 時對應的信號電平。由于暗電流的影響, 傳感器出來的實際原始數(shù)據(jù)并不是我們需要的黑平衡( 數(shù)據(jù)不為0) 。所以,為減少暗電流對圖像信號的影響,可以采用的有效的方法是從已獲得的圖像信號中減去參考暗電流信號,或者更確切是:模擬信號很微弱的時候,有可能不能被A/D轉(zhuǎn)換出來,導致光線很暗的時候,圖像暗區(qū)細節(jié)丟失。因此,sensor一般會在A/D轉(zhuǎn)換之前,給模擬信號一個偏移量,以確保輸出的圖像保留足夠多的細節(jié)。而黑電平校正主要是通過標定的方式確定這個偏移量。使得后續(xù)ISP模塊的處理在保持線性一致性的基礎(chǔ)上進行。 一般情況下, 在傳感器中,實際像素要比有效像素多, 像素區(qū)頭幾行作為不感光區(qū)( 實際上, 這部分區(qū)域也做了 RGB 的 color filter) , 用于自動黑電平校正, 其平均值作為校正值, 然后在下面區(qū)域的像素都減去此矯正值, 那么就可以將黑電平矯正過來了。如下圖所示,左邊是做黑電平校正之前的圖像,右邊是做了黑電平校正之后的圖像。 黑電平校正是在一倍系統(tǒng)增益的情況下標定計算而來,有些sensor在高倍增益和低倍增益時,OB相差會比較大。這個時候就需要獲取不同增益環(huán)境下的遮黑RAW數(shù)據(jù),分析R/Gr/Gb/B四個通道下的mean值。分析出來的均值即為各個通道的OB值。如果需要微調(diào),即可在標定的OB上進行。例如:低照度下偏藍,即可根據(jù)所在的ISO范圍將B通道的幅度增加,減輕偏藍現(xiàn)象。
3.LSC(Lens Shade Correction)-鏡頭陰影校正
由于相機在成像距離較遠時,隨著視場角慢慢增大,能夠通過照相機鏡頭的斜光束將慢慢減少,從而使得獲得的圖像中間比較亮,邊緣比較暗,這個現(xiàn)象就是光學系統(tǒng)中的漸暈。由于漸暈現(xiàn)象帶來的圖像亮度不均會影響后續(xù)處理的準確性。因此從圖像傳感器輸出的數(shù)字信號必須先經(jīng)過鏡頭矯正功能塊來消除漸暈給圖像帶來的影響。同時由于對于不同波長的光線透鏡的折射率并不相同,因此在圖像邊緣的地方,其R、G、B的值也會出現(xiàn)偏差,導致CA(chroma aberration)的出現(xiàn),因此在矯正漸暈的同時也要考慮各個顏色通道的差異性。 常用的鏡頭矯正的具體實現(xiàn)方法是,首先確定圖像中間亮度比較均勻的區(qū)域,該區(qū)域的像素不需要做矯正;以這個區(qū)域為中心,計算出各點由于衰減帶來的圖像變暗的速度,這樣就可以計算出相應R、G、B通道的補償因子(即增益)。下圖左邊圖像是未做鏡頭陰影校正的,右邊圖像是做了鏡頭陰影校正的。 出于節(jié)約成本的考慮以及尺寸方面的原因,手機相機鏡頭向小型化和低成本方向發(fā)展。由于攝像頭尺寸小,制造材料品質(zhì)低,拍攝的圖像在靠近邊緣處會出現(xiàn)亮度衰減的現(xiàn)象。因此要對 Bayer raw 圖像進行鏡頭衰減校正,以降低計算負荷。使用 LUT 分段線性近似法代替模擬曲線和多項式運算。每種顏色都有自己的 LUT,因此亮度衰減和色偏問題可同時得到解決。 針對不同增益下的LSC校正強度也會有所不一樣。低照度下相對會比正常光照情況下校正強度要小一些。因此,ISP會預留接口以便對不同增益下的LSC強度進行調(diào)整。抑或者預留接口控制圖像不同區(qū)域的LSC校正強度。例如:從中心區(qū)域開始往圖像四周校正強度逐級減弱。
LSC校準原理
LSC校準前后結(jié)果對比
4.DPC(Bad Point Correction)-壞點校正
所謂壞點,是指像素陣列中與周圍像素點的變化表現(xiàn)出明顯不同的像素,因為圖像傳感器是成千上萬的元件工作在一起,因此出現(xiàn)壞點的概率很大。一般來講,壞點分為三類:第一類是死點,即一直表現(xiàn)為最暗值的點;第二類是亮點,即一直表現(xiàn)為最亮值的點:第三類是漂移點,就是變化規(guī)律與周圍像素明顯不同的像素點。由于圖像傳感器中CFA的應用,每個像素只能得到一種顏色信息,缺失的兩種顏色信息需要從周圍像素中得到。如果圖像中存在壞點的話,那么壞點會隨著顏色插補的過程往外擴散,直到影響整幅圖像。因此必須在顏色插補之前進行壞點的消除。 鹽椒噪聲是一種在圖像中產(chǎn)生黑點或白點的脈沖噪聲,這類噪聲往往和圖像信號內(nèi)容不相關(guān),與鄰域周邊像素灰度值差別明顯。中值濾波能夠較好的濾除鹽椒噪聲(沖激噪聲)。對于Sensor壞點來說,在一定程度上也可以看做是鹽椒噪聲,因此,壞點校正也可以使用中值濾波進行濾除。算法基本原理 :
壞點消除示意圖 以圖中P4點為例,壞點消除基本過程為:首先計算該像素點與周圍像素點像素值的差:
設(shè)定一個閾值,作為判斷的標準。判斷各個方向上的差值跟閾值的關(guān)系,如果都大于閾值的話,就表明該點像素值與周圍像素點的差別較大,就可以確定該像素點為壞點,否則該像素就為正常的像素點,可以進行下一個像素點的處理。 若判斷出某點為壞點,接下來進行對其的校正,過程如下:計算該點各個方向上的導數(shù):
確定出該值最小的方向,表明該像素點需要在該方向上進行補償,則按照下面的公式對該像素進行補償,即若假設(shè)有 ((DV<=DH) && (DV
5.GB(Green Balance)-綠平衡
由于感光器件制造工藝和電路問題,Gr,Gb數(shù)值存在差異,將出現(xiàn)格子迷宮現(xiàn)象可使用均值算法處理Gr,Gb通道存在的差異,同時保留高頻信息。另外一個說法是:Sensor芯片的Gr,Gb通道獲取的能量或者是輸出的數(shù)據(jù)不一致,造成這種情況的原因之一是Gr,GB通道的半導體制造工藝方面存在差異,另一方面是Microlens的存在,特別是sensor邊緣區(qū)域,GB,Gr因為有角度差異,導致接收到的光能不一致。如果兩者差異比較大,就會出現(xiàn)類似迷宮格子情況。主要是考慮G周圍的G的方法進行平均化
Optical cross-talk示意圖
算法基本原理:
A 5x5 local window from Bayer GRBG pattern, (a) The central pixel G7 is Gr; (b) the central pixel G7 is Gb
基于插值的方法
該算法中,選取Gr或Gb為參考顏色通道,修改另一個G通道分量,使得Gr/Gb兩通道的數(shù)值基本一致。 假設(shè)Gb作為參考通道a圖中的位于位置7的Gr像素值應該按照如下公式修改:
如果選擇Gr為參考通道,則只需要按照同樣的方法修改Gb的像素值即可
基于平均值的方法
該算法中Gr,Gb兩個通道中的像素值都需要修改。 圖a中,對于位于7位置的Gr,需要按照如下公式修:
圖b中,對于位于7位置的Gb,需要按照如下公式修改:
6.Denoise-去除噪聲
使用 cmos sensor 獲取圖像,光照程度和傳感器問題是生成圖像中大量噪聲的主要因素。同時, 當信號經(jīng)過 ADC 時, 又會引入其他一些噪聲。這些噪聲會使圖像整體變得模糊, 而且丟失很多細節(jié), 所以需要對圖像進行去噪處理空間去噪傳統(tǒng)的方法有均值濾波、 高斯濾波等。 但是, 一般的高斯濾波在進行采樣時主要考慮了像素間的空間距離關(guān)系, 并沒有考慮像素值之間的相似程度, 因此這樣得到的模糊結(jié)果通常是整張圖片一團模糊。所以, 一般采用非線性去噪算法, 例如雙邊濾波器, 在采樣時不僅考慮像素在空間距離上的關(guān)系, 同時加入了像素間的相似程度考慮, 因而可以保持原始圖像的大體分塊, 進而保持邊緣。
7.Demosaic-顏色插值
光線中主要包含三種顏色信息,即R、G、B。但是由于像素只能感應光的亮度,不能感應光的顏色,同時為了減小硬件和資源的消耗,必須要使用一個濾光層,使得每個像素點只能感應到一種顏色的光。目前主要應用的濾光層是bayer GRBG格式。如下圖所示:
這樣,經(jīng)過濾色板的作用之后,每個像素點只能感應到一種顏色。必須要找到一種方法來復原該像素點其它兩個通道的信息,尋找該點另外兩個通道的值的過程就是顏色插補的過程。由于圖像是連續(xù)變化的,因此一個像素點的R、G、B的值應該是與周圍的像素點相聯(lián)系的,因此可以利用其周圍像素點的值來獲得該點其它兩個通道的值。目前最常用的插補算法是利用該像素點周圍像素的平均值來計算該點的插補值。如下圖所示,左側(cè)是RAW域原始圖像,右側(cè)是經(jīng)過插值之后的圖像。
8.AWB(Automatic White Balance)-自動白平衡
人類視覺系統(tǒng)具有顏色恒常性的特點,因此人類對事物的觀察可以不受到光源顏色的影響。但是圖像傳感器本身并不具有這種顏色恒常性的特點,因此,其在不同光線下拍攝到的圖像,會受到光源顏色的影響而發(fā)生變化。例如在晴朗的天空下拍攝到的圖像可能偏藍,而在燭光下拍攝到的物體顏色會偏紅。因此,為了消除光源顏色對于圖像傳感器成像的影響,自動白平衡功能就是模擬了人類視覺系統(tǒng)的顏色恒常性特點來消除光源顏色對圖像的影響的。
9.CCM(Color Correction Matrix)-顏色校正
顏色校正主要為了校正在濾光板處各顏色塊之間的顏色滲透帶來的顏色誤差。一般顏色校正的過程是首先利用該圖像傳感器拍攝到的圖像與標準圖像相比較,以此來計算得到一個校正矩陣。該矩陣就是該圖像傳感器的顏色校正矩陣。在該圖像傳感器應用的過程中,及可以利用該矩陣對該圖像傳感器所拍攝的所有圖像來進行校正,以獲得最接近于物體真實顏色的圖像。 一般情況下,對顏色進行校正的過程,都會伴隨有對顏色飽和度的調(diào)整。顏色的飽和度是指色彩的純度,某色彩的純度越高,則其表現(xiàn)的就越鮮明;純度越低,表現(xiàn)的則比較黯淡。RGB三原色的飽和度越高,則可顯示的色彩范圍就越廣泛。 一般在不同增益環(huán)境下CCM的飽和度會有所不同。例如,低照度小我們可以適當調(diào)低CCM飽和度以減輕低照度下色噪。因此,一般ISP會留出接口以便對不同增益下CCM飽和度調(diào)整,對一倍增益校正出的CCM參數(shù)進行插值計算,計算得到不同增益下較為合適的CCM參數(shù)。
10.RGB Gamma-Gamma校正
伽馬校正的最初起源是CRT屏幕的非線性,研究CRT電子槍的物理表明,電子槍的輸入電壓和輸出光之間滿足5.2冪函數(shù)關(guān)系,即熒光屏上顯示的亮度正比于輸入電壓的5/2次方,這個指數(shù)被稱為伽馬。這種關(guān)系源于陰極、光柵和電子束之間的靜電相互作用。由于對于輸入信號的發(fā)光灰度,不是線性函數(shù),而是指數(shù)函數(shù),因此必需校正。 但是實際情況是,即便CRT顯示是線性的,伽馬校正依然是必須的,是因為人類視覺系統(tǒng)對于亮度的響應大致是成對數(shù)關(guān)系的,而不是線性的。人類視覺對低亮度變化的感覺比高亮度變化的感覺來的敏銳,當光強度小于1lux時,常人的視覺敏銳度會提高100倍t2118]。伽馬校正就是為了校正這種亮度的非線性關(guān)系引入的一種傳輸函數(shù)。校正過程就是對圖像的伽瑪曲線進行編輯,檢出圖像信號中的深色部分和淺色部分,并使兩者比例增大,從而提高圖像對比度效果,以對圖像進行非線性色調(diào)編輯。由于視覺環(huán)境和顯示設(shè)備特性的差異,伽馬一般取2.2~2.5之間的值。當用于校正的伽馬值大于1時,圖像較亮的部分被壓縮,較暗的部分被擴展;而伽馬值小于1時,情況則剛好相反。 現(xiàn)在常用的伽馬校正是利用查表法來實現(xiàn)的,即首先根據(jù)一個伽馬值,將不同亮度范圍的理想輸出值在查找表中設(shè)定好,在處理圖像的時候,只需要根據(jù)輸入的亮度,既可以得到其理想的輸出值。在進行伽馬校正的同時,可以一定范圍的抑制圖像較暗部分的噪聲值,并提高圖像的對比度。還可以實現(xiàn)圖像現(xiàn)顯示精度的調(diào)整,比如從l0bit精度至8bit精度的調(diào)整。上圖分別是未做Gamma校正的,下圖是做了Gamma校正的。
11.RGBToYUV
YUV 是一種基本色彩空間, 人眼對亮度改變的敏感性遠比對色彩變化大很多, 因此, 對于人眼而言, 亮度分量 Y 要比色度分量 U、 V 重要得多。另外,YUV色彩空間分為YUV444,YUV422,YUV420等格式,這些格式有些比原始RGB圖像格式所需內(nèi)存要小很多,這樣亮度分量和色度分量分別存儲之后,給視頻編碼壓縮圖像帶來一定好處。
12.WDR(Wide Dynamic Range)-寬動態(tài)
動態(tài)范圍(Dynamic Range)是指攝像機支持的最大輸出信號和最小輸出信號的比值,或者說圖像最亮部分與最暗部分的灰度比值。普通攝像機的動態(tài)范圍一般在1:1000(60db)左右,而寬動態(tài)(Wide Dynamic Range,WDR)攝像機的動態(tài)范圍能達到15600(65-75db)。 寬動態(tài)技術(shù)主要用來解決攝像機在寬動態(tài)場景中采集的圖像出現(xiàn)亮區(qū)域過曝而暗區(qū)域曝光不夠的現(xiàn)象。簡而言之,寬動態(tài)技術(shù)可以使場景中特別亮的區(qū)域和特別暗的區(qū)域在最終成像中同時看清楚。
13.3DNR
3dnr 是結(jié)合空域濾波和時域濾波的一種降噪算法。大概思路是檢測視頻的運動水平,更具運動水平的大小對圖像像素進行空域濾波和時域濾波的加權(quán),之后輸出濾波之后的圖像。
14.Sharp-銳化
CMOS輸入的圖像將引入各種噪聲,有隨機噪聲、量化噪聲、固定模式噪聲等。ISP降噪處理過程中,勢必將在降噪的同時,把一些圖像細節(jié)給消除了,導致圖像不夠清晰。為了消除降噪過程中對圖像細節(jié)的損失,需要對圖像進行銳化處理,還原圖像的相關(guān)細節(jié)。如下圖所示,左圖是未銳化的原始圖像,右圖是經(jīng)過銳化之后的圖像。 為了避免把Noise enhance出來,sharp在實現(xiàn)中還需要判斷當前像素處于光滑區(qū)域還是物體邊緣。當處于光滑區(qū)域的時候,則不要做sharp運算,或者做的幅度很??;只有在較明顯的邊緣上才做處理,這樣避免不了邊緣上的noise的影響,所以在銳利度s設(shè)定較大的時候,可以發(fā)現(xiàn)邊緣上會有Noise閃動跳躍的情況。為了緩解這種Noise的跳躍,通常會對f(d, g, s)做最大值和最小值限制保護,并且沿著edge 方向做低通濾波來緩解Noise。 sharp大致流程為先判斷平坦區(qū)域還是邊緣,對平坦區(qū)域可以不做或者少做sharp(甚至做smooth處理),對邊緣要判斷幅度大小,邊緣方向,選則相對應的高通濾波器處理,最后對enhance的幅度做一定程度的保護處理。
邊緣增強模塊對圖像的亮度分量(Y數(shù)據(jù))進行操作來增強圖像質(zhì)量。首先按固定系數(shù)2D線性濾波器濾波計算邊緣銳度sharpness(h,v)。sharp_shrink之后還可以結(jié)合查找表改變其銳化強度,然后再進行shoot的限制操作。
clip與shrink函數(shù)表達式如下:
兩者函數(shù)圖像如下圖所示: shrink函數(shù)把高頻銳化結(jié)果靠近0的部分都強制設(shè)為0,即比較平滑的部分不做銳化處理;遠離0的部分適當減小其銳化強度。當高頻銳化結(jié)果x比th比較大或比較小,如果x比th較大,那么適當在x的基礎(chǔ)上減小一點,減低白邊的銳化強度;如果x比-th較小,那么在x的基礎(chǔ)上適當增加一點,降低黑邊的銳化強度 。
銳化前表現(xiàn)
銳化后表現(xiàn)
15.AF(Automatic Focus)-自動對焦
自動對焦模塊理論基礎(chǔ)及其硬件實現(xiàn)淺析(一) 自動對焦模塊理論基礎(chǔ)及其硬件實現(xiàn)淺析(二) 自動對焦模塊理論基礎(chǔ)及其硬件實現(xiàn)淺析(三) 自動對焦模塊理論基礎(chǔ)及其硬件實現(xiàn)淺析(四)
16.AE(Automatic Exposure)-自動曝光
不同場景下,光照的強度有著很大的差別。人眼有著自適應的能力因此可以很快的調(diào)整,使自己可以感應到合適的亮度。而圖像傳感器卻不具有這種自適應能力,因此必須使用自動曝光功能來確保拍攝的照片獲得準確的曝光從而具有合適的亮度。 AE 模塊實現(xiàn)的功能是:根據(jù)自動測光系統(tǒng)獲得當前圖像的曝光量,再自動配置鏡頭光圈、sensor快門及增益來獲得最佳的圖像質(zhì)量。自動曝光的算法主要分光圈優(yōu)先、快門優(yōu)先、增益優(yōu)先。光圈優(yōu)先時算法會優(yōu)先調(diào)整光圈到合適的位置,再分配曝光時間和增益,只適合p-iris 鏡頭,這樣能均衡噪聲和景深??扉T優(yōu)先時算法會優(yōu)先分配曝光時間,再分配sensor增益和ISP 增益,這樣拍攝的圖像噪聲會比較小。增益優(yōu)先則是優(yōu)先分配sensor增益和ISP 增益,再分配曝光時間,適合拍攝運動物體的場景。 自動曝光的實現(xiàn)一般包括三個步驟:光強測量、場景分析和曝光補償。光強測量的過程是利用圖像的曝光信息來獲得當前光照信息的過程。按照統(tǒng)計方式的不同,分為全局統(tǒng)計,中央權(quán)重統(tǒng)計或者加權(quán)平均統(tǒng)計方式等。全局統(tǒng)計方式是指將圖像全部像素都統(tǒng)計進來,中央權(quán)重統(tǒng)計是指只統(tǒng)計圖像中間部分,這主要是因為通常情況下圖像的主體部分都位于圖像的中間部分;加權(quán)平均的統(tǒng)計方式是指將圖像分為不同的部分,每一部分賦予不同的權(quán)重,比如中間部分賦予最大權(quán)重,相應的邊緣部分則賦予較小的權(quán)重,這樣統(tǒng)計得到的結(jié)果會更加準確。場景分析是指為了獲得當前光照的特殊情況而進行的處理,比如有沒有背光照射或者正面強光等場景下。對這些信息的分析,可以提升圖像傳感器的易用性,并且能大幅度提高圖像的質(zhì)量,這是自動曝光中最為關(guān)鍵的技術(shù)。目前常用的場景分析的技術(shù)主要有模糊邏輯和人工神經(jīng)網(wǎng)絡(luò)算法。這些算法比起固定分區(qū)測光算法具有更高的可靠性,主要是因為在模糊規(guī)則制定或者神經(jīng)網(wǎng)絡(luò)的訓練過程中已經(jīng)考慮了各種不同光照條件。在完成了光強測量和場景分析之后,就要控制相應的參數(shù)使得曝光調(diào)節(jié)生效。主要是通過設(shè)定曝光時間和曝光增益來實現(xiàn)的。通過光強測量時得到的當前圖像的照度和增益值與目標亮度值的比較來獲得應該設(shè)置的曝光時間和增益調(diào)整量。在實際情況下,相機通常還會采用鏡頭的光圈/快門系統(tǒng)來增加感光的范圍。 在進行曝光和增益調(diào)整的過程中,一般都是變步長來調(diào)整的,這樣可以提高調(diào)整的速度和精度。一般來講,增益和曝光的步長設(shè)定如下圖所示:
從上圖中可以看出,在當前曝光量與目標量差別在range0以內(nèi)的時候,說明當前曝光已經(jīng)滿足要求,不需要進行調(diào)整;差別在rangel的范圍內(nèi)時,則說明當前曝光與要求的光照有差別,但差別不大,只需要用較小的步長來進行調(diào)節(jié)即可;當差別在range2的時候,則表明差別較大,需要用較大步長來進行調(diào)節(jié)。在實現(xiàn)過程中還需要注意算法的收斂性。 實際應用中,AE曝光時間和增益的調(diào)整大致如下圖所示:
弱曝、過曝、曝光合適實際效果圖:
曝光合適 由于在對視頻流做處理時,有些操作往往不是立即生效的。例如在自動曝光的處中,需要計算全局的亮度平均值。由于這個過程涉及到一幀中的所有像素點,所以在一幀圖像輸出完成之后才能得到亮度平均值。那么自動曝光所得到當前幀的計算結(jié)果,只能去調(diào)節(jié)下一幀的亮度,而無法影響當前幀。這個現(xiàn)象很普遍,只要程序存在全局的參數(shù),就不可能在當前幀中得到計算結(jié)果。所以需要將第N幀數(shù)據(jù)計算出的參數(shù)或是結(jié)果,傳遞給第N+1幀,在第N+1幀中直接使用這個參數(shù)進行其他的計算,或者直接輸出調(diào)整后的結(jié)果,我們將這種方法叫做幀迭代方法。雖然這個參數(shù)并不是根據(jù)地N+I幀數(shù)據(jù)計算出來的,但是由于相鄰幀之間有很大的連續(xù)性,所以可以認為它們計算出來的全局變量是相同的,這樣就可以實現(xiàn)正確并且實時的處理了。這種方法同樣適用于AWB、3DNR、HDR模塊。 因此,當前幀顯示的直方圖以及亮度信息均是統(tǒng)計于前一幀的直方圖和亮度信息,當前幀根據(jù)這些統(tǒng)計信息再進行AE策略的調(diào)整。 當曝光誤差超過容許值需要調(diào)整時,算法需要計算兩個值,即
當前幀的曝光量,由sensor 曝光時間、sensor 增益、ISP 增益組成。需要注意的是,sensor 的曝光時間和增益通常是非連續(xù)的,很可能與AE算法輸出的目標參數(shù)并不相同,所以當前曝光參數(shù)的準確值需要通過sensor 驅(qū)動從sensor 寄存器中直接讀取,而不能使用AE算法緩存的目標值。
增益系數(shù),g=target/measured, 其中target 為理想畫面亮度, measured 為當前畫面亮度的實測值。由于sensor 的本質(zhì)是一個線性元件,若暫不考慮像素飽和等非線性因素,只要在當前曝光總量的基礎(chǔ)上乘以系數(shù)g,就可以使畫面目標亮度達到理想值。因此AE 算法的核心任務就是計算正確的g參數(shù),這個參數(shù)能夠使畫面得到正確的曝光。
當計算出正確的亮度參數(shù)后,一般并不會讓其立刻在下一幀圖像就生效。這是因為如果增益變化較大,圖像就會產(chǎn)生閃爍,主觀感受不好。通常人們更喜歡畫面平滑過渡,因此每幀圖像的增益變化不宜過大。實現(xiàn)平滑的方法就是給新的參數(shù)人為施加一個阻尼,使其緩慢地向新參數(shù)過渡。用數(shù)學公式描述就是 g(n)= (1-s) * g(n-1) +s * g_target 不妨取 s=0.2,此時每個g參數(shù)包含80%的舊參數(shù)和20%的目標參數(shù),經(jīng)過若干幀后舊參數(shù)自然衰減,新參數(shù)收斂到目標參數(shù),即 g(n)=g_target 從數(shù)學上看 (1-0.2)^10=0.1, (1-0.2)^30=0.001, 說明10幀之后(約0.3秒)舊參數(shù)的比重下降到10%,30幀之后(約1秒)舊參數(shù)的比重可忽略。對于典型的安防應用場景,一般建議經(jīng)過8~16幀圖像過渡到理想亮度。而對于運動和車載型應用,由于場景動態(tài)變化大且快,一般建議經(jīng)過3~4幀圖像過渡到理想亮度。具體計算:假設(shè)g(0) = 20; g_garget=45,則由阻尼公式可知: n=1時,g(1) = 0.820+0.245; n = 2時,g(2)=0.8g(1)+0.245= n=3時,g(3)=0.8g(2)+0.245 = n = 4時,g(4) = 0.8g(3)+0.245 =
參數(shù)分解當根據(jù)路徑規(guī)劃策略計算出下一幀的g參數(shù)后,需要遵循一定的策略和約束把g參數(shù)進一步映射為sensor 曝光時間、sensor 增益、ISP 增益等設(shè)備控制參數(shù)。如前所述,曝光時間可以提高圖像信噪比,所以在約束邊界內(nèi)應盡可能先將曝光時間用滿,然后依照sensor 的硬件約束分配sensor 增益,最后將剩余的增益全部分配給ISP 數(shù)字增益。參數(shù)同步前面分解出來的控制參數(shù)必須同步生效才能使畫面獲得預期的曝光。如果某一項參數(shù)未能與其他幾項同步生效,則畫面會因為短暫過亮、過暗等原因出現(xiàn)閃爍,這是需要避免的。 另一方面,所有參數(shù)都需要在一個特定的時間窗口內(nèi)生效,即前一幀圖像已經(jīng)結(jié)束,新一幀圖像尚未開始的這段時間,也就是sensor的垂直消隱(vertical blanking)窗口,這個窗口時間很短,典型值在3~5毫秒左右,更短的可以到1ms,如下圖所示。
目前主流的sensor都是使用I2C總線進行寄存器讀寫,而I2C總線的最大時鐘頻率是400kHz,讀寫一個16bit寄存器差不多每次需要0.1ms,而完成一幀圖像的相關(guān)配置常常需要10~20次以上讀寫,所以在垂直消隱區(qū)完成sensor 寄存器配置時間壓力是很大的。而且這還是單純的配置參數(shù),并不考慮3A算法本身所需的計算時間。實際上,在常見的軟件硬件架構(gòu)中,就是把全部消隱時間都分配給3A算法往往都是不夠用的。 如果配置sensor 增益時錯過了這個窗口,新一幀圖像已經(jīng)開始,則畫面的亮度就會在一幀中間發(fā)生變化,上半部分使用舊的參數(shù),下半部分使用新的參數(shù),這種情況也是閃爍的一種,是需要避免的。 現(xiàn)在的sensor 為了方便使用,緩解配置參數(shù)時間窗口過短的壓力,往往都支持一組影子(shadow)寄存器,需要同步生效的參數(shù)(曝光時間和增益)可以在任何時間點寫入shadow寄存器,當sensor開始捕捉新的一幀圖像之前,會自動把shadow 寄存器的內(nèi)容同步到實際生效的寄存器,這樣就把幾個毫秒的時間窗口擴展成一幀時間,極大地緩解了用戶壓力。
需要注意的是,雖然這個方案為軟件爭取到了一幀的緩沖時間,但同時也意味著系統(tǒng)的響應延遲(latency)增加了一幀,即根據(jù)第N幀統(tǒng)計數(shù)據(jù)生成的新控制參數(shù)只能在第N+2幀才開始生效,因為軟件需要第在N+1幀時間內(nèi)完成算法的計算工作。同理,根據(jù)第N+2幀統(tǒng)計生成的新控制參數(shù)需要在第N+4幀才開始生效,以此類推。因此,如果環(huán)境光照條件在第N+1幀發(fā)生劇變,算法會在第N+2幀結(jié)束時檢測到畫面異常,在第N+3幀中計算出新的參數(shù),在第N+4幀中實際進行補償。 事實上,如果CPU的任務比較繁忙,或者每幀的時間很短,則一幀的時間可能還不一定夠3A算法完成所有計算,此時則需要考慮繼續(xù)增加一幀的緩沖時間。在跑3a算法時,曝光的改變策略
調(diào)試攝像頭曝光很多時候都是以行算的,也就是常說的曝光行。當然算曝光時間是曝光行*每行的時間
一般曝光時間不超過vts,vts就是一幀花的總時間(包含每幀的無效信號)。因此,我們在計算當前幀最大曝光時間的時候,一般會根據(jù)VTS計算得出
除了曝光能增加亮度之外,gain也能增加亮度,gian也分為模擬gain和數(shù)字gain以及ISPgain
曝光時間引入的噪聲最小,數(shù)字增益引入的噪聲最大 根據(jù)上面所說,假如在比較暗的情況下,為了減少噪聲,勢必先增加曝光時間。因為增加曝光時間引入的噪聲最小,可以會略不計。但是當曝光時間超過當前vts時候,曝光時間超過一幀的時間,這樣會引起幀率降低,那么這個時候可以增加gain值,模擬gain和數(shù)字gain都是有最大限制的,所有的增加gain值都是優(yōu)先使用模擬gain,當模擬gain增加到最大之后,才考慮使用數(shù)字gain。
關(guān)于3a中的ae,實際都有策略做曝光分解,在幀率與噪聲中調(diào)和,在實際應用中,如果策略分解到曝光時間大于當前vts,那么正常需要先增加當前vts(每幀時間增加,也意味著幀率減?。?,然后加大曝光時間。 以上可以回答為什么亮的地方幀率會比暗的幀率高。
審核編輯:gt
-
圖像傳感器
+關(guān)注
關(guān)注
68文章
1902瀏覽量
129551 -
ISP
+關(guān)注
關(guān)注
6文章
477瀏覽量
51830
原文標題:ISP基本框架及算法
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論