前言: 這篇文章是我從事ISP研究數(shù)年來(lái)的一些經(jīng)驗(yàn)總結(jié),沒(méi)有用到深?yuàn)W的理論知識(shí),有的只是根據(jù)實(shí)際狀況來(lái)處理的一些常規(guī)方法,以及曾經(jīng)犯過(guò)的錯(cuò)誤總結(jié)。我想把ISP function的原理用簡(jiǎn)單淺顯的語(yǔ)言描述出來(lái),希望對(duì)初學(xué)者有所幫助。這里的ISP主要是指從CMOS sensor輸出的bayer pattern,到轉(zhuǎn)換成通用的YUV或者YCbCr格式的過(guò)程,通常用于USB攝像頭/監(jiān)控?cái)z像頭/手機(jī)/平板等芯片設(shè)計(jì)中。
細(xì)節(jié)部分會(huì)介紹去噪denoise,Bayer pattern 轉(zhuǎn) RGB(即interpolation),Edge enhance(即Sharp)以及邊緣偽彩色false color。這部分內(nèi)容是ISP中最復(fù)雜的,需要較龐大的計(jì)算量和Memory。任何一個(gè)function都可以在網(wǎng)上找到不少的論文,這里我只說(shuō)明一些基本原理和關(guān)鍵因素,不討論詳細(xì)的實(shí)現(xiàn)算法。 首先我們把Noise 分成三類,分別是高斯白噪聲,壞點(diǎn),受傷點(diǎn)。這三類分別有不同的處理方法。 我所知道的可用于ISP中去除Noise的方法大概有以下一些分類(沒(méi)有廣泛研究過(guò),肯定有疏漏,請(qǐng)包涵)。 1.首先是空間域和時(shí)間域的劃分。圖像是二維的,空間域是指僅對(duì)一幅圖像中的二維數(shù)據(jù)處理,一般照片的去噪都是在二維空間域。時(shí)間域是指多幀圖像之間的去噪,在視頻中,前后Frame有著較大的相關(guān)性,對(duì)于靜態(tài)場(chǎng)景來(lái)說(shuō)就更加明顯??臻g域去噪算法需要考慮的是Noise和圖像清晰度之間的權(quán)衡,而時(shí)間域去噪算法需要考慮的是Noise和移動(dòng)物體的拖尾殘影現(xiàn)象的權(quán)衡。 2.其次是基于位置和基于數(shù)值的劃分。要消除Noise,一般人第一個(gè)想到的方法就是低通濾波器,以當(dāng)前像素為中心,選擇一個(gè)一定范圍的中心對(duì)稱的低通濾波器,到中心距離越近,對(duì)應(yīng)位置像素的weighting越高,越遠(yuǎn)則越小,這就是基于位置的方法。另外一種是基于數(shù)值的方法,先同樣選擇以當(dāng)前像素為中心的一個(gè)范圍,把這個(gè)范圍內(nèi)的像素按照數(shù)值大小來(lái)排成一個(gè)序列,然后再做處理,處理的方法可以是直接選擇某些點(diǎn)(例如最大值/最小值替換,中值濾波),也可以對(duì)這個(gè)序列再做低通濾波計(jì)算。鼎鼎有名的雙邊濾波就是結(jié)合了位置和數(shù)值兩種思想合二為一的算法,不過(guò)其公式計(jì)算太過(guò)復(fù)雜,不適合數(shù)字電路設(shè)計(jì)實(shí)現(xiàn),但是其思想是完全可以借用的。 3.各種變換域的處理方法。例如傅立葉變換,離散余弦變換,最有名的就是小波變換。這些域變換的基本原理都差不多,基于人眼對(duì)高頻分量較不敏感的特性,對(duì)轉(zhuǎn)換域中的部分?jǐn)?shù)據(jù)進(jìn)行歸0或者縮小,以達(dá)到消除Noise(或者圖像壓縮)的目的。小波變換效果較好,不過(guò)由于計(jì)算量很大,在ISP中實(shí)現(xiàn)有很大的難度。 在實(shí)際應(yīng)用中,變換域的方法太過(guò)復(fù)雜,不適合實(shí)時(shí)視頻處理,所以常用的還是上面兩大類方法。一般來(lái)說(shuō)Noise的幅度總是有限度的,和實(shí)際景物邊緣的變化程度有較大差距,所以通常會(huì)在平坦區(qū)域盡可能的多消除noise, 而在物體邊緣則盡量保護(hù)景物細(xì)節(jié),少做denoise處理,根據(jù)景物內(nèi)容動(dòng)態(tài)調(diào)整去噪算法是必須的。在另一方面,Noise的幅度大小和sensor的增益相關(guān),當(dāng)環(huán)境變換導(dǎo)致AE gain變化的時(shí)候,Noise的幅度變化非常大,有些sensor在低光照條件下會(huì)有64倍的AE gain,Noise滿屏跳躍,幾乎掩蓋實(shí)際景物。有時(shí)候常會(huì)說(shuō)“評(píng)價(jià)ISP好壞,就是看暗光情況下的Noise大小”,不同的Noise 幅度意味著不同的ISP算法(或者算法中的參數(shù)),所以還需要SW根據(jù)實(shí)際情況來(lái)動(dòng)態(tài)調(diào)整去噪算法。因此,在真實(shí)的ISP電路設(shè)計(jì)中,去噪算法的多樣性和可調(diào)整性是非常必要的。
Figure4.1.1 空間域去噪效果
除了去噪算法以外,抑制Noise根源也是去噪的一個(gè)重要手段。Noise本身無(wú)處不在,問(wèn)題根源在于Noise被不斷放大,也就是各種增益Gain(或者說(shuō)乘法)把Noise放大了許多倍。為了達(dá)到一定的亮度,Sensor的AE gain通常沒(méi)有辦法改變,能改變的只有ISP自身。常用的抑制Noise手段包括:
去噪方法可以說(shuō)是ISP中牽涉最廣,實(shí)現(xiàn)難度最大的一個(gè)功能,它滲透進(jìn)AE,LSC,Gamma,AWB,interpolation,edge enhance等多個(gè)function,是一個(gè)系統(tǒng)工程。
4.2 Interpolation 這里說(shuō)的interpolation是指把Bayer pattern data 轉(zhuǎn)化為RGB data的過(guò)程,每個(gè)像素都要有完整的[R G B]三個(gè)分量。先看一下最簡(jiǎn)單的雙線性插值算法。
Figure4.2.1 雙線性插值
這是最簡(jiǎn)單原始的方法,確實(shí)可以得到一幅RGB圖像,不過(guò)存在一些問(wèn)題,例如拉鏈現(xiàn)象,有些模糊,分辨率不高,邊緣有些彩色(false color)等。評(píng)價(jià)插值算法的好壞,通常用ISO12233測(cè)試紙,如下圖。
Figure4.2.2 ISO12233測(cè)試紙 觀察細(xì)節(jié)算法的好壞,必須把圖像放大到像素級(jí)別,直接研究數(shù)值大小,下面以拉鏈現(xiàn)象為例。拉鏈現(xiàn)象出現(xiàn)在水平或者垂直的邊緣上,是由于G分量計(jì)算不當(dāng)所致。以一條水平邊為例,如下圖,用雙線性插值的話,在水平邊緣上就會(huì)出現(xiàn)[90, 82.5, 90, 82.5…]這樣的循環(huán)重復(fù)規(guī)律。
Figure4.2.3 從圖像效果來(lái)看就是類似拉鏈狀。
Figure4.2.4 拉鏈現(xiàn)象(雙線性插值和沿著edge方向插值)
要解決拉鏈現(xiàn)象,保持邊緣的光滑,很直觀的想法就是對(duì)G分量采取沿著邊緣方向去插值,在上圖中,就讓G5 =(G4 + G6)/2。這樣就意味著要做邊緣方向性的判斷,如果是垂直邊,那么就會(huì)是G=(G2+G8)/2,還有各種其他方向,則可以對(duì)周邊四個(gè)G分量采用不同的加權(quán)平均算法得到中心點(diǎn)G分量數(shù)值。邊緣方向判斷是interpolation算法中最重要的一個(gè)環(huán)節(jié),是各家ISP算法的核心之一,有興趣的同學(xué)可以查看這個(gè)方面的論文。評(píng)價(jià)圖像分辨率(清晰度)的一個(gè)指標(biāo),是看ISO12233中對(duì)細(xì)密紋理的識(shí)別程度。一個(gè)好的算法可以判斷出只有一個(gè)像素寬度的細(xì)條紋。
Figure4.2.5 interpolation識(shí)別細(xì)密紋理 在Bayer pattern中,一半像素是G,R和B都只占1/4,R和B信息缺失比較嚴(yán)重。在雙線性插值算法中,R分量的計(jì)算只和周圍的R相關(guān),如果用G分量的信息去修正缺失的R分量,那么清晰度會(huì)有不小的提升。以水平方向的邊緣為例:
Figure4.2.6 水平edge上利用G分量修正R或B 上圖中a1和a2是修正系數(shù),范圍在0~1之間。這種常用的計(jì)算方法不僅提高了清晰度,也可以緩解false color現(xiàn)象。不過(guò)從另一方面來(lái)看,這種修正會(huì)增加Noise幅度,原本R分量自身有一定的Noise分布概率,現(xiàn)在疊加了G分量的Noise,那么最大Noise幅度會(huì)提高。因此系數(shù)a1和a2需要根據(jù)場(chǎng)景,Noise幅度等因素權(quán)衡選擇。
整體來(lái)說(shuō),Interpolation算法大致過(guò)程就是先邊緣方向檢測(cè),然后沿著方向去做插值,兼顧Noise和清晰度的平衡,順便還可以做一些false color的處理。
4.3 Edge enhance 邊緣增強(qiáng)Edge enhance和一般所說(shuō)的sharp是一個(gè)近似的概念。我這樣區(qū)分二者:sharp是對(duì)圖像所有內(nèi)容增加銳利度,包括Noise也會(huì)被放大;而edge enhance是要讓真正的edge變得銳利,Noise則盡量不被放大顯現(xiàn)出來(lái)。從算法上來(lái)說(shuō)Sharp很好實(shí)現(xiàn),任何課本中都會(huì)提到sharp算子,而edge enhance則要有效區(qū)分出edge和Noise,并且判斷edge方向來(lái)做增強(qiáng),增強(qiáng)的方法也很有難度,既要達(dá)到一定的銳利度MTF,又要解決邊緣粗糙roughness,overshot和undershot等問(wèn)題。 邊緣增強(qiáng)一般在YCbCr空間進(jìn)行,并且只對(duì)Y分量處理,Cb和Cr保持不變,其原理如下:
Figure4.3.1 edge enhance 原理
淺藍(lán)色為原值,深藍(lán)色為enhance之后的數(shù)值。從波形上看,edge enhance就是要讓線條的斜率更陡一些,甚至允許出現(xiàn)小幅度的過(guò)沖。從數(shù)值上來(lái)看,就是讓數(shù)據(jù)朝著遠(yuǎn)離鄰近點(diǎn)均值的方向走,而且和鄰近點(diǎn)均值的差越大,走過(guò)的距離也越大,把當(dāng)前像素值和鄰近點(diǎn)均值的差記為d;另外,edge enhance的幅度還和整個(gè)edge的變化范圍有關(guān),可以認(rèn)為上圖中最大值和最小值的差,記為g;最后是用戶設(shè)定的銳利度s,這三者可以得出像素的edge enhance函數(shù)H(x)。
H(x) = x + f(d, g, s)
f(d, g, s)是一個(gè)和d,g,s三者都正相關(guān)的函數(shù),但并非線性關(guān)系。這里沒(méi)有統(tǒng)一的數(shù)學(xué)模型可以給出答案,只有仔細(xì)研究規(guī)律,多做實(shí)驗(yàn),可以說(shuō)的是想要得到較好的視覺(jué)效果,這個(gè)模型非常復(fù)雜,參數(shù)眾多。通過(guò)不斷的對(duì)參數(shù)調(diào)試練習(xí),慢慢建立起數(shù)學(xué)計(jì)算模型和實(shí)際圖像效果之間的映射關(guān)系,才能較好的平衡銳利度MTF和roughness,overshort,undershort等因素。 為了避免把Noise enhance出來(lái),edge enhance在實(shí)現(xiàn)中還需要判斷當(dāng)前像素處于光滑區(qū)域還是物體邊緣。當(dāng)處于光滑區(qū)域的時(shí)候,則不要做edge enhance運(yùn)算,或者做的幅度很?。恢挥性谳^明顯的邊緣上才做處理,這樣避免不了邊緣上的noise的影響,所以在銳利度s設(shè)定較大的時(shí)候,可以發(fā)現(xiàn)邊緣上會(huì)有Noise閃動(dòng)跳躍的情況。為了緩解這種Noise的跳躍,通常會(huì)對(duì)f(d, g, s)做最大值和最小值限制保護(hù),并且沿著edge 方向做低通濾波來(lái)緩解Noise。
Figure 4.3.2 egde enhance 前后效果比對(duì) 整個(gè)Edge enhance的大致流程為先判斷平坦區(qū)域還是邊緣,對(duì)平坦區(qū)域可以不做或者少做edge enhance(甚至做smooth處理),對(duì)邊緣要判斷幅度大小,邊緣方向,選則相對(duì)應(yīng)的高通濾波器處理,最后對(duì)enhance的幅度做一定程度的保護(hù)處理。
4.4 False color False color一般出現(xiàn)在物體邊緣上,特別是白紙黑字。如下,白紙上的黑色線條,一側(cè)偏黃,一側(cè)偏藍(lán)。
Figure 4.4.1 放大后的false color現(xiàn)象
Figure 4.3.2 flase color呈現(xiàn)中心對(duì)稱的特點(diǎn)
Figure4.3.3 RGB曲線位移 細(xì)節(jié)相關(guān)的function都比較復(fù)雜,較難像色彩和亮度那樣直觀的理解。我自己感覺(jué)細(xì)節(jié)設(shè)計(jì)其實(shí)就是數(shù)學(xué)和信號(hào)處理,需要細(xì)致的思考和探究,種種現(xiàn)象都可以從數(shù)學(xué)上找到對(duì)應(yīng)的關(guān)系。另外像自動(dòng)對(duì)焦Auto focus和縮放Zoom也和細(xì)節(jié)設(shè)計(jì)相關(guān),前者需要邊緣檢測(cè),后者需要多采樣濾波。
|
|
來(lái)自: 海鯀 > 《相機(jī)攝影機(jī)》