參考鏈接:
1.凹凸思 https://www.zhihu.com/people/jiao-tao-52
2.紙上淺談 https://glumes.com/post/ffmpeg/understand-yuv-format/
1.名詞解釋
- 光通量(Φ):指人眼所能感覺到的輻射功率,它等于單位時(shí)間內(nèi)某一波段的輻射能量和該波段的相對(duì)視見率的乘積。單位:流明。
- 發(fā)光強(qiáng)度(光強(qiáng)):在給定方向上(該方向上的輻射強(qiáng)度為(1/683)瓦特/球面度))的單位立體角發(fā)出的光通量.單位:坎德拉.
- 亮度(輝度Lv):指發(fā)光體光強(qiáng)與人眼所“見到”的光源面積之比,定義為該光源單位的亮度,即單位投影面積上的發(fā)光強(qiáng)度.單位:坎德拉/平方米(cd/m2)
- 感光度(ISO):是衡量底片對(duì)于光的靈敏程度的量.
a. 膠片相機(jī)的感光度:是膠片對(duì)光線的化學(xué)反應(yīng)速度,也是制造膠片行業(yè)中感光速度的標(biāo)準(zhǔn)。
b. 數(shù)碼相機(jī)的感光度:是一種類似于膠卷感光度的一種指標(biāo),實(shí)際上,數(shù)碼相機(jī)的ISO是通過調(diào)整感光元件的靈敏度或者合并感光點(diǎn)來實(shí)現(xiàn)的,也就是說是通過提升感光器件的光線敏感度或者合并幾個(gè)相鄰的感光點(diǎn)來達(dá)到提升ISO的目的。(簡(jiǎn)單的說:感光度就是傳感器的對(duì)光的敏感程度。)感光度越高,對(duì)光的敏感度越高,曝光值也會(huì)越高。
c. 感光度的參數(shù)和表述:感光度一般使用前綴ISO+參數(shù)的方式來表述感光度的數(shù)值如:感光度 100可以寫成ISO100
d. 感光度常用的數(shù)值:ISO50、 ISO100 、ISO 200、ISO400、ISO800、ISO1600、ISO3200、ISO6400 (在光圈快門相同的情況下,感光度每增加一倍,曝光量便會(huì)增加一倍。)
- 曝光量
①AV是孔徑值:
AV = 2 * log2 (F number) ,F(xiàn) number是鏡頭的光圈F值,如F5.6,F(xiàn)值就是5.6。
②TV是時(shí)間值:
TV = - log2 (exposure time) ,exposure time是曝光時(shí)間單位是秒sec。
③BV是被攝景物的亮度:
BV =log2(B/0.3K) , B是景物亮度單位是Cd/cm2。
LV=BV+5。
④SV是感光材料的感光度值:
SV = log2(0.3S), ISO100的S值就是100.
⑤EV是曝光量:
則曝光公式為:

2. 3A(AWB,AE,AF)
2.1 AE(Auto Exposure)自動(dòng)曝光
2.1.1 AE算法思想和曝光量公式
(1)AE的基本概念:Auto Exposure即自動(dòng)曝光,是相機(jī)根據(jù)外界光線的強(qiáng)弱自動(dòng)調(diào)整曝光量和增益,防止曝光過度或者不足的一種機(jī)制。
可見,AE的輸入為當(dāng)前影像的亮度值Y,輸出為sensor的曝光時(shí)間和增益,isp增益和鏡頭光圈(如果鏡頭光圈可調(diào))。當(dāng)AE algorithm得到當(dāng)前幀的亮度后,便會(huì)與target Y做比較,然后計(jì)算出下一次需要調(diào)整的參數(shù),以便讓影像的亮度越來越接近target Y,如下所示(target并非一個(gè)固定值,而是一個(gè)range)。
(2)影響曝光的因素:
AE算法的要求是“快,準(zhǔn),穩(wěn)”。即要很快的能收斂到target附近,而且亮度要準(zhǔn)確,收斂過程要平滑,收斂完成后要穩(wěn)定。
影響AE算法的因素:圖片亮度的統(tǒng)計(jì),AE target,AE table,收斂速度控制。
實(shí)際操作中調(diào)節(jié)的因素有:
- 調(diào)節(jié)曝光時(shí)間;
- 調(diào)節(jié)光圈大小;
- 調(diào)節(jié)Sensor的ISO感光度
(3)AE控制模塊:
(4)調(diào)節(jié)曝光的方法步驟和算法:
A.讀入現(xiàn)在設(shè)定值所得到的亮度值;
B.經(jīng)過AE weight table后得到我們想要計(jì)算的亮度;
C.將得到的計(jì)算值,趨近我們的期望值(如:135);
D.計(jì)算出一組新的設(shè)定值;
E.重復(fù)以上動(dòng)作,直到亮度值在我們的期望值收斂范圍內(nèi)(Example : 131~139)。
(5)曝光時(shí)間的控制:
因?yàn)镾ensor本身并沒有時(shí)間的概念,它是通過pixel clock數(shù)和pixel clock的頻率來表示sensor曝光時(shí)間的。為了得到簡(jiǎn)便的表達(dá)方式,就用曝光行數(shù)表示曝光時(shí)間了。曝光行數(shù)=pixel clock數(shù)/每條line的pixel數(shù)。 只需要知道sensor的pixel clock頻率和每行的pixel數(shù)(有效pixel+dummy pixel),便可以計(jì)算出任何曝光時(shí)間,sensor需要曝光多少行。
(6)sensor曝光過程:
? 如下圖過程可見,曝光是逐個(gè)像素從上往下進(jìn)行的,當(dāng)讀到圖中紅色塊時(shí)就說上面的五行已經(jīng)曝光完成了,也說明sensor的曝光時(shí)間是5條lines。
(7) AE table:
不同的曝光時(shí)間和ISO組合方式,表和圖示如下:
(8)AE 收斂

et是曝光時(shí)間;agc指sensor的感光度sensorgain即sensor的ISO值;iris是光圈值的大小。
收斂的概念就是無限趨近。
(9)AE中的問題:flicker,過曝、曝光不足、AE peak、AE震蕩等。
Flicker:
現(xiàn)象:圖像因?yàn)閟ensor曝光時(shí)間不是光源頻率的整數(shù)倍導(dǎo)致圖像上出現(xiàn)Banding即明暗相間的條紋。
產(chǎn)生原因:
曝光時(shí)間小于1/100秒,且曝光時(shí)間處于波峰時(shí),圖片亮度比較亮
曝光時(shí)間小于1/100秒,且曝光時(shí)間處于波谷時(shí),圖片亮度比較暗
從能量的角度看,就是當(dāng)sensor逐像素吸收外界能量成像時(shí),外界能量有時(shí)大有時(shí)小,像素就有的亮有的暗。因此產(chǎn)生flicker現(xiàn)象。
解決辦法:
- 所以只有曝光時(shí)間=光源周期的整數(shù)倍的時(shí)候,保證每個(gè)像素吸收的光能是穩(wěn)定的。
才可以避免flicker。國內(nèi)市電,50HZ.
AE Peaking:AE的峰值,圖像亮度平穩(wěn)時(shí),突然出現(xiàn)亮度高的畫面。
AE震蕩:圖像亮度忽明忽暗。
2.1.2 測(cè)光模式
①平均測(cè)光,取畫面亮度均值作為曝光依據(jù),畫面主體、背景亮度差異大時(shí),容易造成曝光過度或者曝光不足的現(xiàn)象。

②中央點(diǎn)測(cè)光(Spot Metering),僅測(cè)量中央很小范圍內(nèi)景物的亮度作為自動(dòng)曝光依據(jù),

③多點(diǎn)測(cè)光(Multi-Spot Metering):簡(jiǎn)單理解為點(diǎn)測(cè)光+記憶裝置,拍攝時(shí)使被攝體中不同的部位,先后位于取景視場(chǎng)中心進(jìn)行點(diǎn)測(cè)光,照相機(jī)內(nèi)的電子線路將每次的結(jié)果記憶下來,并按各點(diǎn)的平均值進(jìn)行曝光??杉骖櫘嬅娌煌糠值牧炼?,精度高,操作麻煩。多點(diǎn)測(cè)光適合于拍攝風(fēng)景、人像等靜止不動(dòng)的物體,不適合拍攝動(dòng)體
④中央重點(diǎn)測(cè)光,是平均測(cè)光與點(diǎn)測(cè)光方式的折衷形式,中央部分亮度權(quán)重較高,邊緣權(quán)重較低 能同時(shí)兼顧被攝主體和四周景物的亮度,因此對(duì)被攝主體的測(cè)光精度較高,尤其適合于拍攝帶風(fēng)景的人物照片。但對(duì)于亮度不均勻或反差太大的場(chǎng)合,容易造成曝光過度或者曝光不足的現(xiàn)象。
⑤局部測(cè)光:佳能首創(chuàng),中央重點(diǎn)加權(quán)平均測(cè)光和點(diǎn)測(cè)光方式的折中,測(cè)光區(qū)域較點(diǎn)測(cè)光大。

⑥分區(qū)式測(cè)光(Multi-Pattern Metering),又稱多幅面測(cè)光、多模式測(cè)光或區(qū)域分割式測(cè)光,主要原理是將畫面分成幾個(gè)區(qū),先測(cè)取每個(gè)區(qū)的亮度,然后經(jīng)過綜合計(jì)算,從而決定每個(gè)區(qū)域的測(cè)光加權(quán)比重,給出一個(gè)能兼顧各區(qū)的曝光值。從理論上講,分區(qū)式測(cè)光方式都具有自動(dòng)逆光補(bǔ)償能力。
2.2 AF(Auto Focus) 自動(dòng)對(duì)焦
2.2.1 光學(xué)原理
? 透鏡成像:成像點(diǎn)不一定落在焦平面上面,需要通過調(diào)整鏡頭,使成像點(diǎn)落在焦平面上面,使sensor清晰成像,這個(gè)過程就是聚焦過程。
2.2.2 AF 基本方法
(1)Lens-motion-type AF移動(dòng)鏡頭:根據(jù)圖像的清晰度(一般為邊緣信息)或者物距信息,通過AF算法判斷對(duì)焦情況,從而計(jì)算鏡頭的移動(dòng)方向和大小,然后驅(qū)動(dòng)電路使鏡頭移動(dòng)來改變聚焦位置。
(2)Lens-modification-type AF改變焦距:通過liquid lens或者solid-state electro-optical devices這些可變焦的器件來改變鏡頭的焦長(zhǎng)。
(3)Extended depth of field AF (EDOF)全焦技術(shù):通過光學(xué)和數(shù)字信號(hào)處理技術(shù)集合,對(duì)光學(xué)信息編碼,再用計(jì)算機(jī)信息處理技術(shù)解碼,使得景深得到擴(kuò)展,從而實(shí)現(xiàn)無運(yùn)動(dòng)部件的AF功能。
(4)手機(jī)攝像頭多使用AF是VCM驅(qū)動(dòng)鏡頭前后移動(dòng)的方案。通過給線圈通電流,在永磁體的作用下,使鏡頭前后移動(dòng),同時(shí)前后兩個(gè)彈簧片控制移動(dòng)位置。
2.2.3 攝像頭中AF系統(tǒng)示意圖
這里的AF算法的信息基礎(chǔ)有被動(dòng)式和主動(dòng)式兩類。
采用對(duì)比度法,手機(jī)攝像頭的AF系統(tǒng)架構(gòu)圖如下:
2.2.4 AF 算法流程
2.2.5 AF算法中信息收集方法
- 基于鏡頭與被攝目標(biāo)之間距離測(cè)量的測(cè)距方法。
A、三角測(cè)量法:由電路控制可動(dòng)反光鏡的轉(zhuǎn)動(dòng),當(dāng)透射光影和反射光影的重合時(shí)可以計(jì)算距離。
B、紅外線測(cè)距法:由照相機(jī)主動(dòng)發(fā)射紅外線作為測(cè)距光源,并用紅外發(fā)光二極管的轉(zhuǎn)動(dòng)代替可動(dòng)反光鏡的轉(zhuǎn)動(dòng)。需要一個(gè)獲得當(dāng)前照片對(duì)比度的設(shè)備來量測(cè)
- 超聲波測(cè)距法:該方法是根據(jù)超聲波在攝像機(jī)和被攝物之間傳播的時(shí)間進(jìn)行測(cè)距的
- 激光測(cè)距法:
- 基于調(diào)焦屏上成像清晰的聚焦檢測(cè)方法。
A、對(duì)比度法 :手機(jī)上通過獲得照片的Focus Value (Edge)來判斷當(dāng)前位置的清晰度,通過檢測(cè)影像的輪廓邊緣實(shí)現(xiàn)自動(dòng)調(diào)焦的。
B、相位法PDAF。該方法是通過檢測(cè)像的偏移量實(shí)現(xiàn)自動(dòng)調(diào)焦的。
2.2.6 AF算法中圖像清晰度評(píng)價(jià)方法
(1)常用的圖像清晰度評(píng)價(jià)方法:
A、圖像統(tǒng)計(jì):
- 灰度熵法(靈敏度不高) ;

pi是圖像中灰度值為i的像素出現(xiàn)的概率,L為灰度級(jí)總數(shù)
- 灰度方差法 – SMD filter ;
- 直方圖法。
B、圖像邊緣檢測(cè):
- Laplacian算子(中心算子);
- Sobel算子(highpass filter) (有一個(gè)水平方向算子,一個(gè)垂直方向算子,取最大值);
- Robert算子(一個(gè)左上右下對(duì)角線算子,一個(gè)右上左下對(duì)角線算子) ;
- Prewitt算子(有一個(gè)水平方向算子,一個(gè)垂直方向算子,取最大值)
C、空間域特征 :tenengrad filter(能量梯度函數(shù))。
(2)函數(shù)舉例
能量梯度函數(shù):

Laplace算子:

模數(shù)偏差總和SMD(sum-modulus-difference)算 子:

2.2.7 AF算法中找最佳對(duì)焦點(diǎn)的方法
- 曲線擬合

(1)測(cè)得局部最大值peak點(diǎn)(FV):計(jì)算當(dāng)前Step對(duì)應(yīng)的FV值,判斷當(dāng)前FV值是不是在此前連續(xù)記錄的四個(gè)step點(diǎn)FV值中的最大值,是最大值的話,就再判斷它是否大于next Step點(diǎn)的FV值。用此方法判斷極大值點(diǎn),若有噪聲造成step-FV曲線的微小波動(dòng),則通過各波動(dòng)區(qū)域的極大值點(diǎn)對(duì)比,以最大值作為局部的MAX點(diǎn)。
(2)擬合曲線獲取最佳對(duì)焦位置:因?yàn)閟tep并不連續(xù),測(cè)得Peak點(diǎn)的可能并不是真正最佳的對(duì)焦點(diǎn),此時(shí)可通過poly fit曲線擬合的方法來找peak點(diǎn)。對(duì)于step-FV曲線采用
y=a*x^2+b*x+c
? 就可以近似擬合,采用max point點(diǎn)和前、后相鄰兩個(gè)點(diǎn),共三個(gè)點(diǎn)采用最小二乘法擬合拋物線。將拋物線的頂點(diǎn)最為最佳對(duì)焦點(diǎn),反饋給VCM控制電路來驅(qū)動(dòng)Lens移動(dòng)到最佳對(duì)焦位置。
-
AF Table
根據(jù)不同距離處物體在sensor上成像的邊緣信息即FV(Focus Value)值,繪制多條step-FV曲線。圖中虛線表示每個(gè)物距處,圖像認(rèn)為清晰時(shí)可接受的最小FV值,虛線以上FV對(duì)應(yīng)景深范圍內(nèi)物體成像信息。
根據(jù)上圖繪制對(duì)應(yīng)的step-DOF(Depth Of Field)曲線
-
連續(xù)對(duì)焦
連續(xù)對(duì)焦:連續(xù)對(duì)焦中并不是找到焦點(diǎn)就停止,而是根據(jù)場(chǎng)景的變化不停的找最佳對(duì)焦位置,這樣就需要判斷鏡頭移動(dòng)方向,這里也是主要使用爬山算法。
不同顏色格式對(duì)焦


2.3 AWB(Auto White Balance) 自動(dòng)白平衡
2.3.1 什么是AWB
不同色溫環(huán)境下,通過ISP的算法調(diào)整,抵消色溫引起的偏色,使得拍出來的成像效果接近人眼視覺習(xí)慣.
2.3.2 為什么要做AWB
因?yàn)閏amera和人眼存在差異.
- 對(duì)人眼,是主觀的,本質(zhì)上白色的物體,不同色溫,反射光線顏色是不一樣的,但是經(jīng)過我們的視覺系統(tǒng)的校正后還是白色的.
- 對(duì)于camera,是客觀的,不同色溫,反射光線顏色不一致,直接成像就會(huì)出現(xiàn)和人眼不一樣的效果,也就是色偏.所以需要AWB,這個(gè)AWB就是類似于經(jīng)過我們的視覺系統(tǒng)校正.
2.3.3 AWB算法有那些
1.最大亮度法
2.灰度世界法
3.色域界限法
4.圖框區(qū)域分割法
5.光源預(yù)測(cè)法
6.完美反射法
7.動(dòng)態(tài)閾值法
8.模糊邏輯法
2.4 ISP(Image Signal Process)
通常的ISP data patch:
(1)BLC(Black Level Correction)/ Black Level Compensate (OBC) :黑電平校正。所謂黑電平就是在DNP下,將曝光時(shí)間和增益都調(diào)到最小時(shí)拍攝圖片的亮度值,理想情況下應(yīng)該是0,但是實(shí)際中因?yàn)閟ensor暗電流作用,全黑像素值大于0。(這一個(gè)值,在后面可能會(huì)受到AWBGain,CCM,Gamma的影響)。
(2)DPC/BPD(Defect Pixel Correction/Bad Pixel Detect):壞點(diǎn)校正/壞點(diǎn)檢測(cè)。相機(jī)中成像壞點(diǎn)一般是白色或者黑色的點(diǎn),和周圍像素點(diǎn)的差異明顯。
(3)FPN(Fix Pattern Noise):固定模式噪聲。由于CMOS每個(gè)感光二極體旁都搭配一個(gè)ADC 放大器,如果以百萬像素計(jì),那么就需要百萬個(gè)以上的 ADC 放大器,但是每個(gè)像素結(jié)構(gòu)中的光電二極管的尺寸、摻雜濃度、生產(chǎn)過程中的沾污以及MOS場(chǎng)效應(yīng)管的參數(shù)的偏差等都會(huì)造成像素輸出信號(hào)的變化。對(duì)于給定的單個(gè)像素它是固定的。通常消除固定模式噪聲采用“雙采樣降噪”方法,這是CMOS 感光器件特有的一種降噪方式。在光線較暗的環(huán)境下使用時(shí),畫面會(huì)有明顯的噪聲,這時(shí)通過對(duì)景物進(jìn)行兩次不同曝光率和敏感度的采樣,然后將兩次采樣的結(jié)果進(jìn)行綜合處理,就可以有效解決低照度下的圖像噪聲問題。

(4)LSC(Lens Shading Correction)/Color Shading :陰影校正。Lens Shading是由于鏡片從邊緣到中心對(duì)入射光線的反射程度不同,造成拍攝均勻亮度的畫面,圖像從中心到邊緣亮度不均勻逐漸變暗。Color Shading是由于Lens從中心到邊緣,其R、G、B變暗的速率不一樣,總體表現(xiàn)就是Gb/Gr像素值差異較大,兩個(gè)像素之間有細(xì)微紋理。找出shading的distribution,然后用最小的模型來建模將其導(dǎo)入
Correction原理:
找到中心點(diǎn)后,以中心點(diǎn)為原心,向周圍以圓為單位補(bǔ)Gain,離中心點(diǎn)越遠(yuǎn),補(bǔ)的越大
(5)Flare offset:光學(xué)上稱Flare也叫stray light,耀斑補(bǔ)償。鏡片的表面反射或鏡筒、反光鏡組的內(nèi)面所引起的反射光,到達(dá)底面后造成畫面整體或一部份產(chǎn)生了霧蒙,降低了圖像的鮮銳度。鏡片的鍍膜及內(nèi)面防反射處理的加強(qiáng),固然可以大幅度地減少光斑,但被攝體的狀況并不相同,不可能完全消除。
(6)AE(Auto Exposure):自動(dòng)曝光。
(7)AF(Auto Focus):自動(dòng)對(duì)焦。
(8)AWB(Auto White Balance ):自動(dòng)白平衡。解決環(huán)境光不同色溫導(dǎo)致整幅圖片偏色的情況。
(9)DM(Demosaicing/Color Filter Array Interpolation/CFA插值):CMOS Sensor出來的RawData是Bayer格式的圖像,每個(gè)像素只有一個(gè)通道的信息。DM是將Bayer格式的圖像恢復(fù)成每個(gè)像素用RGB三通道表示的方式。DM的主要依據(jù)是圖像在平滑的局部區(qū)域,各分量的ratio是相等的。插值算法的好壞會(huì)影響圖片的細(xì)節(jié),如摩爾紋。
(10)CCM(Color Correction Matrix/ DSC color calibration):顏色校正矩陣。拍攝color checker24色板,將相機(jī)拍攝圖片值與色板標(biāo)準(zhǔn)值之間進(jìn)行對(duì)比(RGB顏色空間),得出一組能將拍攝值校正到最接近標(biāo)準(zhǔn)值的3x3矩陣。通過這個(gè)矩陣對(duì)所有相機(jī)拍攝的圖片進(jìn)行顏色校正。
(11)NR(Noise Reduction/Denoise):去噪。采用特定的LPF(Low Pass Filter)對(duì)圖片進(jìn)行濾波,濾除圖像的噪聲成分,而Bilateral filtering即雙邊濾波器,它是一種保護(hù)邊緣的平滑濾波器,這樣既可以濾除噪聲,edge又可以保留下來。
(12)EE(Edge Enhancement/Edge Sharpening):銳化,邊緣增強(qiáng)。通過濾波器獲取圖像的高頻分量,按照一定的比例將高頻部分和原圖進(jìn)行加權(quán)求和獲取銳化后的圖像。
(13)DRC/HDR(Dynamic Range Compression/ High-Dynamic Range):寬動(dòng)態(tài)。高動(dòng)態(tài)圖像的拍攝出來的結(jié)果通常會(huì)有,亮部太亮,暗部太暗的問題。DRC是調(diào)整圖像暗部亮度使之變亮,調(diào)整亮部亮度使之變暗,而且保持圖像的對(duì)比度。
(14)PCA/VDE:Hue,Saturation,Contrast,Brightness調(diào)試。單獨(dú)針對(duì)Hue,Saturation,Contrast,Brightness各圖像分量進(jìn)行調(diào)節(jié)。
(15)Histogram:直方圖均衡化。重新分布圖片的亮度。使圖片的亮度分布更加均勻。
(16)FlashLight Control:閃光燈控制
(17)Cross talk:Optical cross-talk是當(dāng)主光線進(jìn)光角度過大,導(dǎo)致光線不能有效地進(jìn)入本像素的Microlens內(nèi),而是進(jìn)入相鄰像素單元或其他無效區(qū)域內(nèi)的現(xiàn)象。
Electric cross-talk:相鄰單元之間的光生少數(shù)載流子通過襯底擴(kuò)散和漏電相互影響造成相鄰單元的現(xiàn)象。
上述原因?qū)е陆Y(jié)果都是圖像在對(duì)角線上相鄰兩個(gè)像素的Gr和Gb value差異較大而產(chǎn)生不平滑的紋理狀。
(18)Gradation Control(GDC):可能是對(duì)圖像數(shù)據(jù)精度進(jìn)行的操作
(19)Scaler:對(duì)圖像進(jìn)行縮放,縮放的過程中采樣和插值直接影響圖像的細(xì)節(jié)質(zhì)量。
(20)Adaptive tone scale:(這個(gè)沒有辦法處理多種場(chǎng)景)進(jìn)來的影像,根據(jù)histogram,可以調(diào)節(jié),讓其明暗亮度的曲線比較好看。因此,它最重要的就是histogram equalization,其關(guān)鍵是在哪個(gè)domain去做。目前我們的做法應(yīng)該是在L*做histogram,但只做edge的histogram,這樣就ok了。
(21)Dynamic Range Compression:就是把暗的地方變亮一些,亮的地方變暗一些。AE的主要目的是避免亮度飽和的pixels,其余exposure的pixel可以通過DRC校準(zhǔn)回來。
(22)gamma:所謂伽瑪校正就是對(duì)圖像的伽瑪曲線進(jìn)行編輯,以對(duì)圖像進(jìn)行非線性色調(diào)編輯的方法,檢出圖像信號(hào)中的深色部分和淺色部分,并使兩者比例增大,從而提高圖像對(duì)比度效果。計(jì)算機(jī)繪圖領(lǐng)域慣以此屏幕輸出電壓與對(duì)應(yīng)亮度的轉(zhuǎn)換關(guān)系曲線,稱為伽瑪曲線(Gamma Curve)。
3. 色彩模型
3.1 色彩模型,色彩空間,色域
色彩模型就是用一定規(guī)則來描述(排列)顏色的方法
在一個(gè)色彩模型下可以有不同的色彩空間,它們根據(jù)排列的條件的不同會(huì)有不同的色域(所能表示色彩的范圍)和含義,色彩模型只有具體到一種色彩空間上才有實(shí)用性。
色域只是指某個(gè)對(duì)象能表示色彩范圍,而不同色彩空間的色域大多是根據(jù)色彩空間設(shè)計(jì)者的具體需求和應(yīng)用場(chǎng)景,人為決定的。
比如某顯示器能顯示的色彩范圍是 xxx ,就可以設(shè)計(jì)一個(gè)剛好包含包含這個(gè)范圍的色彩空間。比如用于數(shù)字電影的 ACES 系統(tǒng)的色域完全包括并超出了人類可見色域:
? 色彩空間和色彩模型是容易混淆的概念,色彩模型是把色彩按規(guī)則排列的模型,而色彩空間是其在一定條件下排列的結(jié)果,在一個(gè)色彩模型下可以有不同的色彩空間,它們根據(jù)排列的條件的不同會(huì)有不同的色域(所能表示色彩的范圍)和含義,色彩模型只有具體到一種色彩空間上才有實(shí)用性。Adobe RGB、sRGB、Apple RGB 就是同在 RGB 色彩模型下的不同色彩空間。
3.2 常見色彩模型
1.RGB


2.YUV,YCbCr,YIQ
? YUV 是一種目的為把顏色的視覺亮度分離來建立的色彩空間,Y (Luminance) 代表顏色的視覺亮度,U、V 則是剩余的色彩分量。
? 與 HSB、HSL 的亮度或明度不同,視覺亮度代表的是顏色在人實(shí)際感受的亮度,之所以不同是因?yàn)椴煌嗟念伾囊曈X亮度是不同的,比如純綠色和純藍(lán)色,HSB 和 HSL 的模型里他們的亮度是一致的,但是在人眼中純綠色明顯要亮很多。
? 一般的 YUV 模型中紅綠藍(lán)的視覺亮度比是:0.299:0.587:0.114
? YUV 模型是在 1938 年法國工程師 Georges Valensi 為彩色電視制定的模型,為的是在彩色電視信號(hào)傳輸中用 Y 視覺亮度通道能與黑白電視共用一個(gè)信號(hào)通道,達(dá)到既向下兼容黑白電視信號(hào),又節(jié)約信號(hào)帶寬的目的。
**YCbCr** 通常被當(dāng)做 YUV 的另一種形式,相比 YUV, Cb 和 Cr 通道分別更向紅、藍(lán)偏移,而且通常進(jìn)行壓縮。YCbCr 常用在圖像壓縮領(lǐng)域,JPEG 圖片內(nèi)部的色彩空間就使用 YCbCr 模型。
? YIQ 是另一種視覺亮度拆分模型,與 YUV 很相似,是 NTSC 彩色電視的標(biāo)準(zhǔn),國內(nèi)不太常見,因?yàn)閲鴥?nèi)用的是 PAL 標(biāo)準(zhǔn),PAL 標(biāo)準(zhǔn)使用的是 YUV。
3.CMY,CMYK
? 印刷色彩模式。C是青色Cyan、M是品紅色Magenta、Y是黃色 Yellow,而K是Black最后一個(gè)字母。印刷色大多是根據(jù)這CMY三種顏色的油墨按照不同比例調(diào)出的。
? CMY 是與 RGB 相對(duì)應(yīng)的顏色,青、洋紅、黃分別是紅、綠、藍(lán)的補(bǔ)色,也就是說顏色中青色成分越多代表紅色成分越少,洋紅、黃與藍(lán)、綠也是這個(gè)關(guān)系,CMY 實(shí)際上相相當(dāng)于在 RGB 都為 100% 的基礎(chǔ)上減少顏色,比如 20%的 C 相當(dāng)于 100% – 20% 的藍(lán)。這就是根據(jù)反射光的減色原理制度的模型,用于顏料。
? 在現(xiàn)實(shí)中由于顏料的純度達(dá)不到理想的純度,所以用 CMY 混合無色彩的灰、黑是很困難的,所以就增加了一個(gè)專門的黑色通道:K,(之所以不用 B (Black)來表示黑是為了不與藍(lán)色(Bule)混淆),印刷界使用的色彩模型就 CMYK,所以它又被稱為 印刷四分色模型。

4.HSB/HSV,HSL
HSB 與 HSL 是很相似的 2 個(gè)色彩空間,都是把色相與飽和度、亮度分離,不同的是 HSB 和 HSL 對(duì)亮度、飽和度拆分不同, HSB 的 B 明度(Brightness)是從黑色到色相顏色,而 HSL 的 L 亮度(Lightness)是從最暗到色相顏色再到白色,這意味著 HSL 取最大亮度時(shí)不管飽和度和色相如何都是白色,而 HSB 最大明度時(shí)是色相顏色,要達(dá)到白色還需要飽和度最小。
也就是說 HSB 的飽和度代表顏色遠(yuǎn)離白的程度,明度代表顏色遠(yuǎn)離黑的程度。而 HSL 的飽和度是顏色遠(yuǎn)離灰色的程度,亮度則代表了顏色在最暗到最亮之間的位置。
HSB 和 HSL 那種更方便一直是一場(chǎng)爭(zhēng)論,PhotoShop 中拾色器使用的是 HSL 模型,而“色相\飽和度”命令用的是 HSB 模型,在 W3C 制定的網(wǎng)頁標(biāo)準(zhǔn)中支持了 HSL 。
另外,HSL 實(shí)際上視覺亮度分布也很不均勻(同亮度值的顏色看起來實(shí)際亮度可能相差很大),所以有 HUSL 等對(duì) HSL 改進(jìn)的模型,它們視覺亮度分布更加均衡,對(duì)人類選擇色彩更加直觀(同亮度值顏色看起來亮度更加相等),不過由于計(jì)算更加復(fù)雜,并沒有被廣泛使用。
- HWB
- photaYCC
- Lab
3.3 色彩空間
RGB模型色彩空間:
sRGB
Adobe RGB
Apple RGB
Prophoto RGB
ScRGB
CMYK模型色彩空間
Japan color 2001coated
US web coated(SWOP)
.......
4. 圖像格式及轉(zhuǎn)換
4.1 常見圖像格式
4.2 RGB,YUV顏色編碼
4.2.1 RGB顏色編碼
? RGB 三個(gè)字母分別代表了 紅(Red)、綠(Green)、藍(lán)(Blue),這三種顏色稱為 三原色,將它們以不同的比例相加,可以產(chǎn)生多種多樣的顏色。
? 在圖像顯示中,一張 1280 * 720 大小的圖片,就代表著它有 1280 * 720 個(gè)像素點(diǎn)。其中每一個(gè)像素點(diǎn)的顏色顯示都采用 RGB 編碼方法,將 RGB 分別取不同的值,就會(huì)展示不同的顏色。
? RGB 圖像中,每個(gè)像素點(diǎn)都有紅、綠、藍(lán)三個(gè)原色,其中每種原色都占用 8 bit,也就是一個(gè)字節(jié),那么一個(gè)像素點(diǎn)也就占用 24 bit,也就是三個(gè)字節(jié)。一張 1280 * 720 大小的圖片,就占用 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 存儲(chǔ)空間。
4.2.2 YUV 顏色編碼
? YUV 顏色編碼采用的是 明亮度 和 色度 來指定像素的顏色。其中,Y 表示明亮度(Luminance、Luma),而 U 和 V 表示色度(Chrominance、Chroma)。而色度又定義了顏色的兩個(gè)方面:色調(diào)和飽和度。使用 YUV 顏色編碼表示一幅圖像,它應(yīng)該下面這樣的:
? 和 RGB 表示圖像類似,每個(gè)像素點(diǎn)都包含 Y、U、V 分量。但是它的 Y 和 UV 分量是可以分離的,如果沒有 UV 分量一樣可以顯示完整的圖像,只不過是黑白的。
? 對(duì)于 YUV 圖像來說,并不是每個(gè)像素點(diǎn)都需要包含了 Y、U、V 三個(gè)分量,根據(jù)不同的采樣格式,可以每個(gè) Y 分量都對(duì)應(yīng)自己的 UV 分量,也可以幾個(gè) Y 分量共用 UV 分量。
4.3 RGB 到Y(jié)UV轉(zhuǎn)換
? 對(duì)于圖像顯示器來說,它是通過 RGB 模型來顯示圖像的,而在傳輸圖像數(shù)據(jù)時(shí)又是使用 YUV 模型,這是因?yàn)?YUV 模型可以節(jié)省帶寬。因此就需要采集圖像時(shí)將 RGB 模型轉(zhuǎn)換到 YUV 模型,顯示時(shí)再將 YUV 模型轉(zhuǎn)換為 RGB 模型。
? RGB 到 YUV 的轉(zhuǎn)換,就是將圖像所有像素點(diǎn)的 R、G、B 分量轉(zhuǎn)換到 Y、U、V 分量。
有如下公式進(jìn)行轉(zhuǎn)換:
? 此時(shí)的轉(zhuǎn)換結(jié)束后,每個(gè)像素點(diǎn)都有完整的 Y、U、V 分量。而之前提到 Y 和 UV 分量是可以分離的,接下來通過不同的采樣方式,可以將圖像的 Y、U、V 分量重新組合。
4.4 YUV采樣格式
YUV 圖像的主流采樣方式有如下三種:
- YUV 4:4:4 采樣
- YUV 4:2:2 采樣
- YUV 4:2:0 采樣
4.4.1 YUV 4:4:4采樣
? YUV 4:4:4 采樣,意味著 Y、U、V 三個(gè)分量的采樣比例相同,因此在生成的圖像里,每個(gè)像素的三個(gè)分量信息完整,都是 8 bit,也就是一個(gè)字節(jié)。
如下圖所示:

其中,Y 分量用叉表示,UV 分量用圓圈表示。
舉個(gè)例子 :
假如圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
那么采樣的碼流為:Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
最后映射出的像素點(diǎn)依舊為 [Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
可以看到這種采樣方式的圖像和 RGB 顏色模型的圖像大小是一樣,并沒有達(dá)到節(jié)省帶寬的目的,當(dāng)將 RGB 圖像轉(zhuǎn)換為 YUV 圖像時(shí),也是先轉(zhuǎn)換為 YUV 4:4:4 采樣的圖像。
4.4.2 YUV 4:2:2采樣
YUV 4:2:2 采樣,意味著 UV 分量是 Y 分量采樣的一半,Y 分量和 UV 分量按照 2 : 1 的比例采樣。如果水平方向有 10 個(gè)像素點(diǎn),那么采樣了 10 個(gè) Y 分量,而只采樣了 5 個(gè) UV 分量。
如下圖所示:

其中,Y 分量用叉表示,UV 分量用圓圈表示。
舉個(gè)例子 :
假如圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
那么采樣的碼流為:Y0 U0 Y1 V1 Y2 U2 Y3 V3
其中,每采樣過一個(gè)像素點(diǎn),都會(huì)采樣其 Y 分量,而 U、V 分量就會(huì)間隔一個(gè)采集一個(gè)。
最后映射出的像素點(diǎn)為 [Y0 U0 V1]、[Y1 U0 V1]、[Y2 U2 V3]、[Y3 U2 V3]
采樣的碼流映射為像素點(diǎn),還是要滿足每個(gè)像素點(diǎn)有 Y、U、V 三個(gè)分量。但是可以看到,第一和第二像素點(diǎn)公用了 U0、V1 分量,第三和第四個(gè)像素點(diǎn)公用了 U2、V3 分量,這樣就節(jié)省了圖像空間。
一張 1280 * 720 大小的圖片,在 YUV 4:2:2 采樣時(shí)的大小為:
(1280 * 720 * 8 + 1280 * 720 * 0.5 * 8 * 2)/ 8 / 1024 / 1024 = 1.76 MB 。
可以看到 YUV 4:2:2 采樣的圖像比 RGB 模型圖像節(jié)省了三分之一的存儲(chǔ)空間,在傳輸時(shí)占用的帶寬也會(huì)隨之減少。
4.4.3 YUV 4:2:0采樣
? YUV 4:2:0 采樣,并不是指只采樣 U 分量而不采樣 V 分量。而是指,在每一行掃描時(shí),只掃描一種色度分量(U 或者 V),和 Y 分量按照 2 : 1 的方式采樣。比如,第一行掃描時(shí),YU 按照 2 : 1 的方式采樣,那么第二行掃描時(shí),YV 分量按照 2:1 的方式采樣。對(duì)于每個(gè)色度分量來說,它的水平方向和豎直方向的采樣和 Y 分量相比都是 2:1 。
如下圖所示:

其中,Y 分量用叉表示,UV 分量用圓圈表示。
假設(shè)第一行掃描了 U 分量,第二行掃描了 V 分量,那么需要掃描兩行才能夠組成完整的 UV 分量
舉個(gè)例子 :
假設(shè)圖像像素為:
[Y0 U0 V0]、[Y1 U1 V1]、 [Y2 U2 V2]、 [Y3 U3 V3]
[Y5 U5 V5]、[Y6 U6 V6]、 [Y7 U7 V7] 、[Y8 U8 V8]
那么采樣的碼流為:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8
其中,每采樣過一個(gè)像素點(diǎn),都會(huì)采樣其 Y 分量,而 U、V 分量就會(huì)間隔一行按照 2 : 1 進(jìn)行采樣。
最后映射出的像素點(diǎn)為:
[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7]
[Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]
從映射出的像素點(diǎn)中可以看到,四個(gè) Y 分量是共用了一套 UV 分量,而且是按照 2*2 的小方格的形式分布的,相比 YUV 4:2:2 采樣中兩個(gè) Y 分量共用一套 UV 分量,這樣更能夠節(jié)省空間。
一張 1280 * 720 大小的圖片,在 YUV 4:2:0 采樣時(shí)的大小為:
(1280 * 720 * 8 + 1280 * 720 * 0.25 * 8 * 2)/ 8 / 1024 / 1024 = 1.32 MB 。
可以看到 YUV 4:2:0 采樣的圖像比 RGB 模型圖像節(jié)省了一半的存儲(chǔ)空間,因此它也是比較主流的采樣方式。
4.5 YUV存儲(chǔ)格式
YUV 的存儲(chǔ)格式,有兩種:
- planar 平面格式
- 指先連續(xù)存儲(chǔ)所有像素點(diǎn)的 Y 分量,然后存儲(chǔ) U 分量,最后是 V 分量。
- packed 打包模式
- 指每個(gè)像素點(diǎn)的 Y、U、V 分量是連續(xù)交替存儲(chǔ)的。
根據(jù)采樣方式和存儲(chǔ)格式的不同,就有了多種 YUV 格式。這些格式主要是基于 YUV 4:2:2 和 YUV 4:2:0 采樣。
常見的基于 YUV 4:2:2 采樣的格式如下表:
| YUV 4:2:2 采樣 |
|---|
| YUYV 格式 |
| UYVY 格式 |
| YUV 422P 格式 |
常見的基于 YUV 4:2:0 采樣的格式如下表:
| YUV 4:2:0 采樣 | YUV 4:2:0 采樣 | |
|---|---|---|
| YUV 420P 類型 | YV12 格式 | YU12 格式 |
| YUV 420SP 類型 | NV12 格式 | NV21 格式 |
更多的 YUV 格式信息參考這里:YUV pixel formats
4.5.1 基于YUV 4:2:2采樣的格式
YUV 4:2:2 采樣規(guī)定了 Y 和 UV 分量按照 2: 1 的比例采樣,兩個(gè) Y 分量公用一組 UV 分量。
1.YUYV格式
YUYV 格式是采用打包格式進(jìn)行存儲(chǔ)的,指每個(gè)像素點(diǎn)都采用 Y 分量,但是每隔一個(gè)像素采樣它的 UV 分量,排列順序如下:
Y0 UO Y1 V0 Y2 U2 Y3 V2
Y0 和 Y1 公用 U0 V0 分量,Y2 和 Y3 公用 U2 V2 分量….

2.UYVY格式
UYVY 格式也是采用打包格式進(jìn)行存儲(chǔ),它的順序和 YUYV 相反,先采用 U 分量再采樣 Y 分量,排列順序如下:
U0 Y0 V0 Y1 U2 Y2 V2 Y3
Y0 和 Y1 公用 U0 V0 分量,Y2 和 Y3 公用 U2 V2 分量….
根據(jù) UV 和 Y 的順序還有其他格式,比如,YVYU 格式,VYUY 格式等等,原理大致一樣了。

3.YUV 422P格式
? YUV 422P 格式,又叫做 I422,采用的是平面格式進(jìn)行存儲(chǔ),先存儲(chǔ)所有的 Y 分量,再存儲(chǔ)所有的 U 分量,再存儲(chǔ)所有的 V 分量。
4.5.2 基于YUV 4:2:0 采樣的格式
1.分類
基于 YUV 4:2:0 采樣的格式主要有 YUV 420P 和 YUV 420SP 兩種類型,每個(gè)類型又對(duì)應(yīng)其他具體格式。
- YUV 420P 類型
- YU12 格式
- YV12 格式
- YUV 420SP 類型
- NV12 格式
- NV21 格式
YUV 420P 和 YUV 420SP 都是基于 Planar 平面模式 進(jìn)行存儲(chǔ)的,先存儲(chǔ)所有的 Y 分量后, YUV420P 類型就會(huì)先存儲(chǔ)所有的 U 分量或者 V 分量,而 YUV420SP 則是按照 UV 或者 VU 的交替順序進(jìn)行存儲(chǔ)了,具體查看看下圖:
YUV420SP 的格式:

YUV420P 的格式:

2.YU12 和 YV12 格式
YU12 和 YV12 格式都屬于 YUV 420P 類型,即先存儲(chǔ) Y 分量,再存儲(chǔ) U、V 分量,區(qū)別在于:YU12 是先 Y 再 U 后 V,而 YV12 是先 Y 再 V 后 U 。
YV 12 的存儲(chǔ)格式如下圖所示:
YU 12 又稱作 I420 格式,它的存儲(chǔ)格式就是把 V 和 U 反過來了。
3.NV12 和 NV21 格式
NV12 和 NV21 格式都屬于 YUV420SP 類型。它也是先存儲(chǔ)了 Y 分量,但接下來并不是再存儲(chǔ)所有的 U 或者 V 分量,而是把 UV 分量交替連續(xù)存儲(chǔ)。
NV12 是 IOS 中有的模式,它的存儲(chǔ)順序是先存 Y 分量,再 UV 進(jìn)行交替存儲(chǔ)。

NV21 是 安卓 中有的模式,它的存儲(chǔ)順序是先存 Y 分量,在 VU 交替存儲(chǔ)。
個(gè)人博客:https://www.letcos.top/