在講述本文之前,我儘量以一個什麼也不清楚的初學到入門的用詞來闡述什麼是 ISP 除錯,以及為什麼需要除錯。
如果你從來都沒有接觸過什麼是攝像頭 ISP 除錯,我想這個文章可以給你一些啟發和關鍵詞。
因為這破事,最近我都無法分享和貢獻任何開原始碼了。(攤手)
參考資料:http://www.voycn.com/article/5fenzhonglijiexiangjiisptuxiangxinhaochuli
參考資料:https://www.cnblogs.com/wujianming-110117/p/12925120.html
其他就不提及了。
開始進入正題吧。
攝像頭的一些歷史淵源
關於 ISP 除錯這個內容,最好追溯到攝像頭的起源,這樣自己能夠對事物整體的架構有一定的認知,而非片面之談,似懂非懂,當然現實遠比理論歷史複雜。
攝像頭就可以從最開始的小孔呈像相機和膠片列印相片開始,後來才進入到數位相機的 CMOS 感光元件上,從這以後開始進入到軟體除錯的部分,注意對於軟體除錯的開發人員可以不用去了解硬體的實現細節或鏡頭的具體制作方法,但它們會帶來什麼樣的結果和效果還是要略知一二的。
先從成像的源頭開始說起,90後的末期應該都見過柯達膠捲的黑白相片,膠捲又名底片,菲林,是一種成像器材。現今廣泛應用的膠捲是將鹵化銀塗抹在聚乙酸酯片基上,此種底片為軟性,捲成整卷方便使用。當有光線照射到鹵化銀上時,鹵化銀轉變為黑色的銀,經顯影工藝後固定於片基,成為我們常見到黑白負片。(來自百度百科)
這種是通過化學的方法來成像,意味著相片在這個階段的時候,只有黑白兩色,如果用 CMOS/CCD 影像感測器的輸入來表達就形如感光元件在單位畫素下產生的電壓高低來表示接收到的光線強度。
那麼彩色相片是怎麼來的呢?早期的彩色膠捲可以通過不同層次的三原色感光物質來獲取輸入光線的顏色,而數位相機通常情況下無法繼續沿用化學的方法來分離不同顏色(波長)的感光物質,它只有電壓的高低表示光線的強弱。
所以時代到這個時候,膠片巨頭伊斯曼柯達的布萊斯拜耳先生提出了一種 Bayer 排列,在每一個微透鏡下都加入了一片色彩濾波器,只允許特定範圍波長的光通過,即是下圖的 RGGB 從而讓彩色圖片進入到數位相機的時代。
這些資料你都可以在各大網站中獲取得知,這裡給一個參考和引用,目前理解到這裡就可以了。
在光圈、快門、感光度(ISO)共同作用後的曝光是什麼?
一些基本知識可以通過攝影資料來學習得知,這不在本文的討論範圍,建議看一些視訊具備相關概念的直觀感受。
攝影裡每個名詞背後都有不小的故事量,所以最多提及一下它的用途和目的。
- 光圈大小直接影響進光量,但光圈值和光圈的大小是成反比的,光圈的數值越小,光圈則越大的,如下圖。
- 按下快門相當於產生一次拍照結果,快門在數碼鏡頭裡就是拍攝一次畫面的前後間隔的時間,就沒有機械式的按下與鬆開的過程了,所以快門速度越快,進入的光線越少,感光時間也越短,曝光量也就越少了。
在數位相機中,快門簾幕已經不需要了,感光器件可以兼作快門。感光器件在不加電時是不工作的,因此,快門按鈕僅僅起到給感光器件通電的作用,而快門速度也僅僅是表示通電(感光)的時間。
- 感光度在不同場合下有不同的解釋,從除錯的角度來說,就是增益(gain),這些數位相機特有的,它主要影響感光元件的敏感度,越敏感意味著越容易電壓增幅明顯,相當於更容易產生整體偏亮的圖片。
在這三者的共同作用下影響的是畫面的曝光(Exposure)結果,曝光是什麼感覺呢?曝光是你看到一個相片的整體光量的評估,如果你用直方圖也可以很直觀的感受一張圖片的曝光度。(不懂可以百度)
通常不同相片需要有不同的曝光來匹配,例如夜間需要更大的曝光來捕捉更多細節,但也會帶來更多噪聲(沙沙抖動的點點),而面對朝向強光下的人物風景拍攝就不需要這麼多光線了,所以曝光是要根據相片的場合和需求來決定要多少的。
現在,有了 gain (增益)和 exp (曝光)兩個概念後,就可以繼續了。
所以 ISP 除錯需要做什麼?
過一遍簡單的流程。
所以最終目的是為了讓成像的效果在 AI 輸入和螢幕上顯示的畫面更有針對性,我們才需要去除錯 ISP ,這是從內建 ISP 到外接 ISP 的一次改變,以往經典 DVP 攝像頭都是內建 ISP 的指令微調引數,如今走到這層就意味著,你可以通過其他更多功能的 ISP 來輔助成像的美顏處理。
這要求攝像頭可以輸出 RAW 圖,RAW 圖就是 bayer 色彩濾鏡( RGGB )輸出的效果,如下面這樣綠綠的畫面,這是因為 R GG B 的排列中 G 多了一個。
到這裡我們要先除錯好攝像頭的基礎設定曝光(set_exp)和增益(set_gain)的函式,這涉及到後續的 ISP 動態調節引數的時候能否做到,要怎麼調,就看你具體的晶片情況了,這應該不是問題。
確認 sensor 出圖了以後,我們開始 ISP 的一些基本的除錯吧,接下來有理論也有經驗。
所謂的去馬賽克(Demosaic)
這個去馬賽克(Bayer Denoise)是因為 bayer 陣列不同顏色排列導致的馬賽克畫面,通過去馬賽克(Demosaic)的插值演算法來將 RGB 重新落會各個 R / G / B 單個畫素點上,常見的鄰近插值、線性插值、雙線性插值等。
插值演算法的工作原理有簡單也有複雜,可以舉例最簡單的鄰近插值,就是從鄰接的顏色值總和進行平均值來還原某中心點的 R G B 值,這種運算簡單,轉換效率高,但容易在黑白相間的柵欄區域裡產生一些條紋顏色的現象,一個典型的色彩混疊的例子,注意圖中的白色柵欄。
這是因為 G 和 R B 的取樣率不同,若是採用鄰近插值的方式去還原單位畫素的 G 值會導致色彩混疊。因為G的取樣率比RB都要高,這樣,RB不能像G那樣準確的恢復出原始被取樣影像的色彩,就會有假的色彩花紋在影像的高頻部分產生。
當然這是可以通過聯絡更多畫素的線性插值演算法來彌補,因為各個畫素點之間的關聯不夠,所以通過各種線性關係來加強彼此的聯絡就可以比較好的改善了。
但見到這種情況的時候,可以不用緊張,可能是在這層出的問題,留個印象就行。
BLC(BlackLevel Correction) 黑電平校正
起因如下:
-
CMOS感測器採集的資訊經過一系列轉換生成原始 RAW 格式資料。以 8bit 資料為例,單個 pixel 的有效值是 0~255 ,但是實際 AD 晶片(模數轉換晶片)的精度可能無法將電壓值很小的一部分轉換出來,因此 sensor 廠家一般會在AD的輸入之前加上一個固定的偏移量,使輸出的 pixel value 在 5(非固定)~255 之間,目的是為了讓暗部的細節完全保留,當然同時也會損失一些亮部細節,由於對於影像來說,我們的關注度更傾向於暗部區域,ISP後面會有很多增益模組(LSC、AWB、Gamma等),因此亮區的一點點損失是可以接受的。
-
sensor 的電路本身會存在暗電流,導致在沒有光線照射的時候,畫素單位也有一定的輸出電壓,暗電流這個東西跟曝光時間和 gain 都有關係,不同的位置也是不一樣的。因此在 gain 增大的時候,電路的增益增大,暗電流也會增強,因此很多 ISP 會選擇在不同 gain 下減去不同的 bl 的值。
它存在的判斷標準就是蓋上鏡頭,確保沒有光線和透光後,若是此時畫面不為黑(可以看 YUV 的 Y 亮度值是否為 0 ),則感測器出來的實際原始資料並不是真正的黑(即資料不為0),所以可以通過 SO (sensor offset)的偏移量來修正為真正的黑。
未做處理的話,可能會帶來畫面存在一些奇怪的顏色,如下圖的粉到修正後的黑。
校正方法常見如下流程:
- 找手冊確認值。
- 找原廠 FAE 。
- 自己用工具測算。
這個是基礎功能,所以不用擔心找不到答案,大不了就自己拿 ISP 工具處理,讀圖計算。
白平衡(WB) 與 自動白平衡(AWB)
到這裡我們第一次見到 3A 演算法中的 AWB 了。
為什麼需要白平衡,這是因為出來的 RAW (RGGB)資料從粉粉的到綠綠的始終不是真實的顏色,所以白平衡要做的就是對 R B 補償,以修正 R G B 讓畫面色彩正常。
而 AWB 自動白平衡就是在不同的色溫下,通常會在 2700K ~ 4000K ~ 6500K 不同色溫下對【灰色】的 G 值在 128 附近進行標定,需要手動調曝光配合喔。
沒有對應的色溫可以拉一下曲線自適應,通常會成有規律的線性關係,略帶曲線,目的就是補償 R 和 B 好比下圖。
現在畫面的色彩就會很正常了,但注意此時色彩是失真的,看起來會很淡,如下圖,因為此時還沒有做 CM 色彩矩陣還原。
這時候,白平衡的標定已經結束了,評判的治標可以簡單看看某些物品紅不紅,藍不藍,確認 R G 色彩增強了就行,在這裡微調補償值還可以讓圖片看起來偏暖(R多一些)或偏冷(B少一些)。
LSC(Lens Shade Correction) 鏡頭陰影校正(Shading)
因為鏡頭進光從中心向四周擴散,所以會導致光線的呈現中心圓的死角存在亮度不一致的情況,該四角俗稱暗部,那麼 Shading 就是處理這個問題的。
流程為給鏡頭蓋上一個均勻透光的擴散片,控制不同光源色溫,調節曝光使中部的 Y 亮度值在 150 190 之間,邊角 在 50 附近,目的是中心不能過亮(150-190),四角不過暗(10-20),然後進行暗部的補償。
有一些 ISP 提供了 LSC 和 MSC ,主要區別在於光源位置可能會不同,就是不一定是中心,可能有多處光源,但同理處理。
CCM(Color Correction Matrix)顏色校正(色彩還原)
一般顏色校正的過程是首先利用該影像感測器拍攝到的影像與標準影像相比較,以此來計算得到一個校正矩陣,一般情況下,對顏色進行校正的過程,都會伴隨有對顏色飽和度的調整。顏色的飽和度是指色彩的純度,某色彩的純度越高,則其表現的就越鮮明;純度越低,表現的則比較黯淡。
步驟流程類似於 藉助24色卡,同樣在不同色溫下手動曝光白色為(230,230,230)就可以開始標定了,通常這個時候可以順便增強色彩的飽和度,使其鮮豔或暗淡一些。
這是影響畫面的整體顏色是否準確的標定,注意,此時的光線一定要均勻夠亮,否則會偏色,白平衡做不好在這裡還會影響整體的顏色偏綠,自己多注意一下吧。
Gamma 伽馬校正曲線
由於人眼對暗部畫面比 sensor 敏感,且是非線性的,僅是暗部敏感,所以可以通過 伽馬曲線 對映某一亮度到另一亮度,可以看到低亮度的時候增益幅度較大,而高亮度的時候基本不增益。
如果想要暗處的時候整體提亮,就將曲線底部 Y 軸曲線點拉高,但這可能會造成畫面整體出現灰色蒙板,因為整體亮度被拉高了。
而伽馬曲線主要用於調節不同顏色之間的對比度,也就是在某個畫素點下,不同的 RGB 會被不同的伽馬曲線微調增益,有時候這個曲線並不是那麼好調,所以根據實際情況做一些修正吧。
調節後,可以讓某些顏色漸變的過程中更亮更鮮豔。
WDR(Wide Dynamic Range)寬動態調節(HDR)
寬動態技術主要用來解決攝像機在寬動態場景中採集的影像出現亮區域過曝而暗區域曝光不夠的現象。簡而言之,寬動態技術可以使場景中特別亮的區域和特別暗的區域在最終成像中同時看清楚。
主要是解決亮部不過亮,暗部不過暗的問題,這個不同家的實現還挺不一樣的,也是挺有挑戰的部分,例如下圖。
可以看出它會對亮部抑制,暗部補償從而修正該問題,在某些人像裝置的背後經常會有光源,這就導致逆光的場合下看不到人臉,因為光線打到人臉上反射給鏡頭的沒有背後的光強烈,從而呈現較暗的畫面,就如上圖的效果。
具體怎麼調,那就是調高亮區域和低亮區域的比例和增益曲線了。
銳化(Sharpness)和 降噪
這是兩兄弟了,降噪要在銳化之前,但我們先看銳化的效果吧。
其實銳化最簡單的理解就是對影像的邊緣做處理,類似於增強畫面清晰度,而降噪呢,就是把影像的一些噪點去除。【https://zhuanlan.zhihu.com/p/138348467】
可以看到那些斑點就是所謂的噪聲了,但有些事物可能會誤判為噪聲,例如人臉部的痘痘就可能被當作噪聲移除了,說白了就是為了讓畫面看起來更平滑,這時候我們要注意兩個模組之間的關係。
如果降噪太強,則銳化後的畫面可能就會出現失真的效果,因為根本沒有東西可以被銳化,所以控制降噪和銳化的強弱關係,銳化也不能太強,太強就會出現畫面充滿了噪聲,因為某些噪聲會被邊緣增強。
噪聲還分彩色噪聲和黑白噪聲,通常出現在黑暗曝光不夠的場景裡。
還有動態和靜態降噪,其中靜態降噪可以處理暗部抖動的斑點,動態降噪會將前後多幀進行降噪混合處理,進一步去除運動過程中的噪聲斑點,但這會產生殘影的效果,所以要控制好度,可以跟增益(gain)聯動固定下來,或根據光線強度聯動配置多份表來解決。
降噪的故事太多了,我想講可能也是講不完了。
後記
時間已到了 2021年6月9日00點24分,我也已經有些倦意了,所以就寫到這裡吧,更多的,等我下次想到了,或者結合實際場景了,我再來開新的一文來補償一下吧。
其實該文也就是記錄了一些基礎流程和認知原理罷了,如果想要得知更為詳細的理論知識,個人建議拿著關鍵詞尋找專業的答案,而博文只能是給你啟發和增長見識而已,在知識上與君共勉,加油!
網上其實有很多學習資料供你學習的,不過這東西,還是要親自試試才有體會,除錯到最後鬥爭的都是畫面的主觀感受了,所以沒有絕對固定的唯一解,只有你的客戶看著舒服,滿意的解。
這次沒有講關於 AE 自動曝光 AF 自動對焦 的用途和概念,下次一定吧。