ISP基本框架及算法介紹
ISP 的Firmware 包含三部分,一部分是ISP 控制單元和基礎(chǔ)算法庫(kù),一部分是AE/AWB/AF 算法庫(kù),一部分是sensor 庫(kù)。Firmware 設(shè)計(jì)的基本思想是單獨(dú)提供3A 算法庫(kù),由ISP 控制單元調(diào)度基礎(chǔ)算法庫(kù)和3A 算法庫(kù),同時(shí)sensor 庫(kù)分別向ISP 基礎(chǔ)算法庫(kù)和3A 算法庫(kù)注冊(cè)函數(shù)回調(diào),以實(shí)現(xiàn)差異化的sensor 適配。ISP firmware 架構(gòu)如下圖所示。不同的sensor 都以回調(diào)函數(shù)的形式,向ISP 算法庫(kù)注冊(cè)控制函數(shù)。ISP 控制單元調(diào)度基礎(chǔ)算法庫(kù)和3A 算法庫(kù)時(shí),將通過(guò)這些回調(diào)函數(shù)獲取初始化參數(shù),并控制sensor,如調(diào)節(jié)曝光時(shí)間、模擬增益、數(shù)字增益,控制lens 步進(jìn)聚焦或旋轉(zhuǎn)光圈等。
1. TestPattern------測(cè)試圖像? ? Test Pattern主要用來(lái)做測(cè)試用。不需要先在片上ROM存儲(chǔ)圖片數(shù)據(jù),直接使用生成的測(cè)試圖像,用生成的測(cè)試圖像進(jìn)行后續(xù)模塊的測(cè)試驗(yàn)證。以下是常用的兩種測(cè)試圖像。
2. BLC(BlackLevel Correction)------黑電平校正
? ? ? ?Black Level 是用來(lái)定義圖像數(shù)據(jù)為 0 時(shí)對(duì)應(yīng)的信號(hào)電平。由于暗電流的影響, 傳感器出來(lái)的實(shí)際原始數(shù)據(jù)并不是我們需要的黑平衡( 數(shù)據(jù)不為0) 。所以,為減少暗電流對(duì)圖像信號(hào)的影響,可以采用的有效的方法是從已獲得的圖像信號(hào)中減去參考暗電流信號(hào),或者更確切是:模擬信號(hào)很微弱的時(shí)候,有可能不能被A/D轉(zhuǎn)換出來(lái),導(dǎo)致光線很暗的時(shí)候,圖像暗區(qū)細(xì)節(jié)丟失。因此,sensor一般會(huì)在A/D轉(zhuǎn)換之前,給模擬信號(hào)一個(gè)偏移量,以確保輸出的圖像保留足夠多的細(xì)節(jié)。而黑電平校正主要是通過(guò)標(biāo)定的方式確定這個(gè)偏移量。使得后續(xù)ISP模塊的處理在保持線性一致性的基礎(chǔ)上進(jìn)行。
? ? ? ? 一般情況下, 在傳感器中,實(shí)際像素要比有效像素多, 像素區(qū)頭幾行作為不感光區(qū)( 實(shí)際上, 這部分區(qū)域也做了 RGB 的 color filter) , 用于自動(dòng)黑電平校正, 其平均值作為校正值, 然后在下面區(qū)域的像素都減去此矯正值, 那么就可以將黑電平矯正過(guò)來(lái)了。如下圖所示,左邊是做黑電平校正之前的圖像,右邊是做了黑電平校正之后的圖像。
? ? ? ? 黑電平校正是在一倍系統(tǒng)增益的情況下標(biāo)定計(jì)算而來(lái),有些sensor在高倍增益和低倍增益時(shí),OB相差會(huì)比較大。這個(gè)時(shí)候就需要獲取不同增益環(huán)境下的遮黑RAW數(shù)據(jù),分析R/Gr/Gb/B四個(gè)通道下的mean值。分析出來(lái)的均值即為各個(gè)通道的OB值。如果需要微調(diào),即可在標(biāo)定的OB上進(jìn)行。例如:低照度下偏藍(lán),即可根據(jù)所在的ISO范圍將B通道的幅度增加,減輕偏藍(lán)現(xiàn)象。
? ? ?BLC原理及具體算法可以參考:ISP——BLC(Black Level Correction)
3.LSC(Lens Shade Correction)------鏡頭陰影校正? ? ?由于相機(jī)在成像距離較遠(yuǎn)時(shí),隨著視場(chǎng)角慢慢增大,能夠通過(guò)照相機(jī)鏡頭的斜光束將慢慢減少,從而使得獲得的圖像中間比較亮,邊緣比較暗,這個(gè)現(xiàn)象就是光學(xué)系統(tǒng)中的漸暈。由于漸暈現(xiàn)象帶來(lái)的圖像亮度不均會(huì)影響后續(xù)處理的準(zhǔn)確性。因此從圖像傳感器輸出的數(shù)字信號(hào)必須先經(jīng)過(guò)鏡頭矯正功能塊來(lái)消除漸暈給圖像帶來(lái)的影響。同時(shí)由于對(duì)于不同波長(zhǎng)的光線透鏡的折射率并不相同,因此在圖像邊緣的地方,其R、G、B的值也會(huì)出現(xiàn)偏差,導(dǎo)致CA(chroma aberration)的出現(xiàn),因此在矯正漸暈的同時(shí)也要考慮各個(gè)顏色通道的差異性。
? ? 常用的鏡頭矯正的具體實(shí)現(xiàn)方法是,首先確定圖像中間亮度比較均勻的區(qū)域,該區(qū)域的像素不需要做矯正;以這個(gè)區(qū)域?yàn)橹行?,?jì)算出各點(diǎn)由于衰減帶來(lái)的圖像變暗的速度,這樣就可以計(jì)算出相應(yīng)R、G、B通道的補(bǔ)償因子(即增益)。下圖左邊圖像是未做鏡頭陰影校正的,右邊圖像是做了鏡頭陰影校正的。
? ? 出于節(jié)約成本的考慮以及尺寸方面的原因,手機(jī)相機(jī)鏡頭向小型化和低成本方向發(fā)展。由于攝像頭尺寸小,制造材料品質(zhì)低,拍攝的圖像在靠近邊緣處會(huì)出現(xiàn)亮度衰減的現(xiàn)象。因此要對(duì) Bayer raw 圖像進(jìn)行鏡頭衰減校正,以降低計(jì)算負(fù)荷。使用 LUT 分段線性近似法代替模擬曲線和多項(xiàng)式運(yùn)算。每種顏色都有自己的 LUT,因此亮度衰減和色偏問(wèn)題可同時(shí)得到解決。
? ?針對(duì)不同增益下的LSC校正強(qiáng)度也會(huì)有所不一樣。低照度下相對(duì)會(huì)比正常光照情況下校正強(qiáng)度要小一些。因此,ISP會(huì)預(yù)留接口以便對(duì)不同增益下的LSC強(qiáng)度進(jìn)行調(diào)整。抑或者預(yù)留接口控制圖像不同區(qū)域的LSC校正強(qiáng)度。例如:從中心區(qū)域開(kāi)始往圖像四周校正強(qiáng)度逐級(jí)減弱。
? ? ?具體算法原理可以參考:ISP之LSC? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LSC校準(zhǔn)原理? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? LSC校準(zhǔn)前后結(jié)果對(duì)比
4.DPC(Bad Point Correction)------壞點(diǎn)校正? ? ?所謂壞點(diǎn),是指像素陣列中與周?chē)袼攸c(diǎn)的變化表現(xiàn)出明顯不同的像素,因?yàn)閳D像傳感器是成千上萬(wàn)的元件工作在一起,因此出現(xiàn)壞點(diǎn)的概率很大。一般來(lái)講,壞點(diǎn)分為三類(lèi):第一類(lèi)是死點(diǎn),即一直表現(xiàn)為最暗值的點(diǎn);第二類(lèi)是亮點(diǎn),即一直表現(xiàn)為最亮值的點(diǎn):第三類(lèi)是漂移點(diǎn),就是變化規(guī)律與周?chē)袼孛黠@不同的像素點(diǎn)。由于圖像傳感器中CFA的應(yīng)用,每個(gè)像素只能得到一種顏色信息,缺失的兩種顏色信息需要從周?chē)袼刂械玫?。如果圖像中存在壞點(diǎn)的話,那么壞點(diǎn)會(huì)隨著顏色插補(bǔ)的過(guò)程往外擴(kuò)散,直到影響整幅圖像。因此必須在顏色插補(bǔ)之前進(jìn)行壞點(diǎn)的消除。
? ? 鹽椒噪聲是一種在圖像中產(chǎn)生黑點(diǎn)或白點(diǎn)的脈沖噪聲,這類(lèi)噪聲往往和圖像信號(hào)內(nèi)容不相關(guān),與鄰域周邊像素灰度值差別明顯。中值濾波能夠較好的濾除鹽椒噪聲(沖激噪聲)。對(duì)于Sensor壞點(diǎn)來(lái)說(shuō),在一定程度上也可以看做是鹽椒噪聲,因此,壞點(diǎn)校正也可以使用中值濾波進(jìn)行濾除。
? ?算法基本原理:
? ? ? 以圖1.10中P4點(diǎn)為例,壞點(diǎn)消除基本過(guò)程為:首先計(jì)算該像素點(diǎn)與周?chē)袼攸c(diǎn)像素值的差:? ? ? 設(shè)定一個(gè)閾值,作為判斷的標(biāo)準(zhǔn)。判斷各個(gè)方向上的差值跟閾值的關(guān)系,如果都大于閾值的話,就表明該點(diǎn)像素值與周?chē)袼攸c(diǎn)的差別較大,就可以確定該像素點(diǎn)為壞點(diǎn),否則該像素就為正常的像素點(diǎn),可以進(jìn)行下一個(gè)像素點(diǎn)的處理。
? ? ? 若判斷出某點(diǎn)為壞點(diǎn),接下來(lái)進(jìn)行對(duì)其的校正,過(guò)程如下:計(jì)算該點(diǎn)各個(gè)方向上的導(dǎo)數(shù):? ? ?確定出該值最小的方向,表明該像素點(diǎn)需要在該方向上進(jìn)行補(bǔ)償,則按照下面的公式對(duì)該像素進(jìn)行補(bǔ)償,即若假設(shè)有
((DV<=DH)