本文是圖像信號處理流程的一個總體的介紹,以便更好理解一張照片究竟是如何誕生的,實際的技術要復雜很多。
1. 傳感器捕獲光信號
現在的相機多使用CMOS作為傳感器,不同的相機有不同的畫幅,如常見的APS-C畫幅、全畫幅等。總的來說畫幅越大,即傳感器尺寸越大,最終的成像質量會越好,因為可以捕捉到更多的光信號。
常見的彩色圖像格式是RGB三通道的,但是最開始的光信號采集卻不是每個像素都會采集RGB三個像素的信息,這樣做會有成本以及空間的問題,而是收集三種不同光的Sensor成拜爾陣列分布,后續再通過插值等手段去恢復。
CFA的作用是過濾其他光線,使得我們需要的紅、綠、藍三種波段的光才能進入傳感器。
但是不同的CFA(color filter array)過濾后,最終相機對于不同波段的光的敏感度曲線也是有差別的。
Sensor最終的值是光強和曝光時間的線性函數,結合前面的人眼的敏感曲線,這個階段其實是對真實世界的光輻射的一個捕捉,并沒有結合人眼特性去處理。
這個時候的圖像也不是電子設備可以顯示的常見色彩空間,需要后續進行轉換,直接顯示RAW-RGB會非常奇怪。
2.ISO和RAW格式圖像處理流程
ISO
玩攝影的知道ISO代表感光度,值越高相機對光線敏感度越高,暗光下需要調高ISO,但是隨之而來的是噪點會變明顯。
但是其實相機捕捉到的實際光信號是不會因ISO變化而改變的,受限于光圈大小和Sensor曝光時間(快門時間),調整ISO本質上是調整傳感器對得到的光信號的放大倍數,而在放大這個信號的同時,噪聲也被放大了,就出現了前面提到的現象。
像素強度(Pixel "intensity")是個絕對值,主要取決于:
增益(ISO)
曝光時間(Exposure)
將信號數字化的硬件設計
暗電流矯正(Black Level Correction)與光學暗區(Optical black)
即使沒有光照,電路中也會存在噪聲電流等。所以傳感器會有一塊光學暗區(OB)去捕捉沒有光線時候采集到的信號,然后再用實際捕捉到的信號減去OB的信號,以減少噪聲。
缺陷像素遮蓋(Defective pixel mask)
傳感器的可能存在一些有缺陷的相機,一般由相機廠商完成,通過插值等方法去處理。
平場矯正(Flat-field correction)
由于鏡頭、傳感器位置等原因,會導致傳感器最終捕捉到的不同區域的光強并不平均(有點類似一些鏡頭拍出來會有暗角),需要人為對對應的區域做補償或者抑制。
3.去馬賽克
即前面提到的,由于CMOS的RGB采集像素是分布不均勻的,需要通過插值去進行補償,使得最終得到的每個Pixel都有RGB三個通道的值。
文章里提到了兩個插值方法,即簡單的平均插值,或根據與周圍像素的相似度去分配權限求加權平均去插值。但是發展到今天實際上的技術應該要復雜很多,就不贅述了。
平均插值:
按相似度加權:
另外現在的很多傳感器其實也不再采用拜爾陣列,而是有其他不同的排布方式。
4.降噪(Noise reduction)
接下來會根據噪點的大小去采取不同程度的降噪處理,噪聲越大采取的算法越激進,但是這個過程中其實會丟失很多信息與細節(例如手機由于傳感器比較小,往往需要更激進的降噪算法)。
噪聲主要來源:
由于光子自身量子性質產生的噪聲,這部分是與成像系統無關的,服從泊松分布;
傳感器和電路系統自身的噪聲,如暗電流等,服從正態分布;
而增益g又進一步放大了這個噪聲(即IOS),所以一般ISO越高需要采取更加激進的降噪算法。
文中提到了一個簡單的降噪算法,現在采用的技術會更復雜,但是思路值得借鑒。
IOS越高,通過濾波進行模糊。
由于濾波也會丟失細節,用原圖減去濾波后的圖像,認為數值高的地方為原本的細節,再把這部分添加回來,可以找回一部分細節。
5.白平衡(White-balance)和色彩空間變換(White-balance)
這個部分需要把raw—RGB轉換到一個通用色彩空間,以供后續處理,文章以CIE XYZ為例,但是實際上常用ProPhoto RGB。
白平衡
第一個階段即需要通過白平衡去矯正原來的raw-RGB的值。
首先要得到Sensor對于光照環境的RGB值,然后用這個對角矩陣變換,就可以得到白平衡之后的顏色。
這里最關鍵的其實就是如何去得到這個白平衡設置值,這個值可以根據經驗以及環境光照的色溫去手動設置,也可以借助成像設備的自動白平衡算法去計算得到,但是這個就對白平衡算法的要求比較高,目前還有很多人在研究。
而白平衡中最關鍵的就是我們要知道哪里是圖片中白色區域或者灰色區域,文章提到了兩個簡單的算法:
第一種就是“Gray world”算法,假設平均光譜的值是灰色,圖像的平均應該具有相同的能量,即R=G=B,基于這個假設將圖像的平均作為灰色。
第二種方法假設高光點是光源的一個鏡面反射,那么就可以以R,G,B的最大值去估計光源的顏色。
同樣實際上的白平衡算法會更加的復雜,這里只是個基礎的傳統處理方法。
色彩空間轉換
第二個階段是將raw-RGB映射變換到CIE XYZ色彩空間。
相機廠商會先去標定兩個極值下(CCT 2500K與CCT 6500K)的CST矩陣,后續的在這個范圍內的色溫就可以通過這兩個標定好的極值去做插值得到,就像這里的4300K。所以這個階段的變換矩陣也同樣需要上階段估算出環境色溫。
6.調色(Color manipulation)
基本工作完成后,在這個階段對色彩進行調整或者風格化處理,使得最終的成像看起來更漂亮。不同相機廠商成像風格的差異應該也主要在這個階段產生,不同廠商有不同廠商的色彩科學。
一般來說通過LUT(3D Look up table)和1D的曲線進行調整,攝影后期LR或者PS調色的色調曲線應該也是在進行這一步一樣的工作。
再進一步的,也可以針對不同區域、和顏色進行單獨的調整(Local tone mapping & Selective color manipulation),LR和PS等后期軟件中也有類似的針對不同區域、顏色的單獨調整功能。
關于皮膚調色相關文章,有空研究研究
7.Re-scaling image
即根據取景器要求重新進行縮放,也可以叫做數碼變焦或者超分辨率,傳統的方法這里沒有提,這方面AI的方法好像用的更多。
8.色彩空間轉換(sRGB conversion (or other color space))
最后轉換到我們需要的色彩空間,并且使用Gamma編碼,之前有提過即給人眼更敏感的暗部分配更多的編碼空間
9. 圖像壓縮
即將圖片進行壓縮,涉及到圖像壓縮編碼技術比較復雜,這里只了解流程。 最常見的就是jpeg壓縮,但是文章中提到現在蘋果已經在使用的HEIC正在慢慢替代他們。
10.零延時拍照技術 (Zero Shutter Lag)
比較好理解,由于圖像的處理經過前面各個流程是需要一定的時間的,所以如果按下快門才開始記錄,實際得到的是有時延的。
所以實際上當取景器開始預覽,相機便已經開始不斷的去緩存快照,當按下快門后,根據按下時間去找對應的緩存幀就可以實現零延時。
審核編輯:劉清
-
RGB
+關注
關注
4文章
801瀏覽量
58715 -
光信號
+關注
關注
0文章
450瀏覽量
27852 -
CMOS傳感器
+關注
關注
4文章
127瀏覽量
24564 -
圖像信號處理
+關注
關注
0文章
17瀏覽量
7523
原文標題:相機圖像信號處理流程(ISP)
文章出處:【微信號:混說Linux,微信公眾號:混說Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論