來源:視科儀器SCOCIE
相機(jī)圖像處理過程
在開始前介紹兩個知識點(diǎn):
集成信號處理器(Integrated signal processor, ISP):
指的是專門用來處理感光件信號并生成最終圖像的硬件,通常會作為一個模塊集成到片上系統(tǒng)。
典型的圖像過程:
光線進(jìn)入鏡頭,到達(dá)【帶有RGB濾光陣列的傳感器】,得到最原始的電信號。這個信號經(jīng)過【ISO增益和原始圖像處理】【RGB去馬賽克】和【降噪】,就會得到raw格式的圖片,對它接著進(jìn)行【白平衡以及色彩空間轉(zhuǎn)換】和【色彩處理】,并【映射到sRGB輸出】,這時圖片已經(jīng)呼之欲出,只要【JPEG壓縮】并【保存成文件】,儲存卡里就會增加一張JPEG格式的照片。
接下按照典型的圖像過程依次介紹:
【帶有RGB濾光陣列的傳感器】
CMOS傳感器是相機(jī)中用于感受光的部分,幾乎所有的消費(fèi)級相機(jī)的傳感器都是基于CMOS技術(shù)。
大家應(yīng)該都見過類似這樣的傳感器尺寸對比圖,傳感器越大,每個像素上接收到的光就越多,從而相對噪聲就越小。智能手機(jī)的傳感器往往是最小的。
相機(jī)傳感器其實(shí)就是我們理想中的能夠衡量光線強(qiáng)弱的裝置,取同樣長的時間,如果到達(dá)傳感器某個像素點(diǎn)的光亮度變成兩倍,那么該點(diǎn)的數(shù)值也會變成兩倍。但要注意的是,傳感器只能測量光的強(qiáng)弱,并不能區(qū)分顏色,那么我們的彩色是哪里來的呢?這就需要將不同顏色的濾鏡和傳感器結(jié)合起來,實(shí)現(xiàn)這一過程的技術(shù)叫做拜爾陣列(“Bayer” pattern)。
于是我們就得到了具有色彩陣列(color filter array, CFA)的相機(jī)傳感器。通過這樣的設(shè)計,傳感器得到的數(shù)值就可以用來衡量不同通道信號的強(qiáng)弱了。不同的相機(jī)有著各自的傳感器陣列,不同陣列的濾光色就構(gòu)成了相機(jī)色彩空間(raw RGB)的三原色,因此相機(jī)的raw RGB空間不是一個通用的色彩空間。下面兩張圖展示了不同相機(jī)raw RGB空間的原色以及raw圖片的色差。
【ISO增益和原始圖像處理】
傳感器接受光并直接傳過來的信號非常原始,根本不能看,還需要接下來的一系列操作。
首先是ISO增益,這里要先明確一個概念:什么是ISO?
ISO,全稱為International Standardization Organization,它對相機(jī)的對光線的敏感程度,也就是感光度,進(jìn)行了量化規(guī)定,而那已經(jīng)是膠卷時代的事了。對于現(xiàn)代相機(jī),ISO并不是像快門時間或者光圈那樣具有直白的物理含義,而是通過信號處理想要滿足的標(biāo)準(zhǔn)。
為了達(dá)到與設(shè)置相對應(yīng)的ISO,相機(jī)會將接收到的信號進(jìn)行增益,增益倍數(shù)越大,也就對光線越敏感——當(dāng)然,也會對噪音越敏感。下圖展示了不同ISO設(shè)置下的效果(曝光時間進(jìn)行了相應(yīng)的調(diào)整)。
這里需要指出的是,我們經(jīng)常說像素的強(qiáng)度,但其實(shí)像素值是沒有單位的,它取決于曝光時間、增益和硬件本身,因此我們實(shí)際上關(guān)注的是圖像上的相對值,而非絕對值。
原始的圖像處理是指對相機(jī)硬件的一系列校準(zhǔn),包括黑光減法、缺陷像素遮蔽和平場矯正加粗樣式。
黑光減法(Black light subtraction)是說對無光像素值的矯正。我們希望沒有接收到光的像素值是0,但由于傳感器本身的噪聲,事情往往不是這樣。同時這個噪聲并不是恒定的,它會隨著溫度的變化而改變。為了進(jìn)行校準(zhǔn),可以通過黑屏設(shè)置一系列無光的像素,得到光學(xué)黑的信號,再從整體中減去,實(shí)現(xiàn)校準(zhǔn)。
缺陷像素遮蔽(Defective pixel mask)是為了處理CMOS傳感器中的壞點(diǎn)。這一校準(zhǔn)會在工廠中進(jìn)行,通過拍攝無光的圖像,來發(fā)現(xiàn)數(shù)值異常的點(diǎn)來制作遮蔽,被遮蔽處的壞像素會被周圍點(diǎn)的插值所代替(也就是估算出這個點(diǎn)的值)。
平場矯正(Flat-field correction)是由于均勻落在傳感器上的光在圖像中可能并不均勻,這可能是由鏡頭、傳感器在相機(jī)中位置誤差等原因引起的,提前記錄這一變化并予以矯正,從而得到一個“平”的圖像。
【RGB去馬賽克】
還記得拜爾陣列嗎?那個聰明的設(shè)計讓我們的傳感器得以分辨顏色,但同時也使得我們的圖片變得離散。我們得到了每個像素點(diǎn)的RGB三通道之一的值,但我們實(shí)際上希望得到每個像素點(diǎn)的三個值,所以我們需要進(jìn)行插補(bǔ)。
讓我們來看一個最最簡單的插補(bǔ)算法。
在位置5,拜爾陣列只給了我們R值,G和B就需要用周圍的其他位置來進(jìn)行估算,這里采用了平均值??梢韵胍娺@樣的算法基于“相近位置顏色都差不多”的假設(shè),那么當(dāng)遇到不同顏色的分界處,這樣的假設(shè)自然就不再成立,于是可以加入一個邊界判斷,發(fā)展成“邊界感知”型插值算法(聽起來還蠻高大上的)。
上面的算法僅是為了幫助理解,實(shí)際上在IPS中進(jìn)行的算法會復(fù)雜也強(qiáng)大得多,有時候去馬賽克的過程還會有一些附加效果,如高光調(diào)整(Highlight clipping)、銳化、降噪等。
【降噪】
所有的傳感器都自帶噪音,大多數(shù)相機(jī)會在模數(shù)轉(zhuǎn)換后加入一個降噪。
而對于高端相機(jī),可以能會根據(jù)不同的ISO設(shè)置采用不同的降噪策略,當(dāng)ISO較高時會采取更激進(jìn)的降噪。手機(jī)的相機(jī)因為傳感器較小,往往都會采取激進(jìn)的降噪策略,所以手機(jī)自拍比較好看。
這里同樣給出一個最簡單的算法來對降噪有一個感性認(rèn)識。
噪音往往比較突兀,因此可以使用模糊來減小噪音。但模糊也會影響細(xì)節(jié),因此考慮將去掉部分中信號較強(qiáng)的區(qū)域補(bǔ)回圖像(甚至?xí)訌?qiáng)以后補(bǔ)回來)。
于是就得到了我們的算法:
【白平衡以及色彩空間轉(zhuǎn)換】
到這里,我們已經(jīng)得到了raw RGB空間里的圖片,除了顏色怪異,多少是能看了。接下來就要好好處理一下顏色。
我們希望把raw RGB這一依賴于設(shè)備的色彩空間轉(zhuǎn)換到一個無關(guān)設(shè)備的色彩空間里。在這里采用CIE XYZ為例子,實(shí)際上大多數(shù)相機(jī)會使用一個叫ProPhoto RGB的色彩空間。
轉(zhuǎn)換分為兩步,白平衡和色彩空間轉(zhuǎn)換。
白平衡也就是矯正RGB相等的點(diǎn)(白點(diǎn)),只要對三個通道分別進(jìn)行放縮就行了,也就是一個對角矩陣的事。
但怎么定義白點(diǎn)呢?
如果由用戶手動設(shè)置,這件事就比較簡單。相機(jī)一般會提供一些預(yù)設(shè)的白平衡數(shù)據(jù),用戶根據(jù)拍照的光照環(huán)境進(jìn)行選擇。下圖是一些預(yù)設(shè)白平衡的例子。
如果沒有手動指定,就會啟用自動白平衡(auto white balance, AWB)算法,這件事就會變得很難,算法必須要能夠確定任意照片的場景光亮。
這樣的算法往往假設(shè)“白色”就是對場景光源的自然反射,如果我們可以定義圖像中哪些像素屬于“白色”,就可以得到場景光照的RGB表示。注意,這里的“白色”并不一定是白色,也有可能是灰色(白色就是最亮狀態(tài)的灰色),有時我們會稱這樣的像素點(diǎn)為“消色差”或者“中性區(qū)”。
這里介紹兩個簡單的算法,灰色世界算法Gray world和白塊算法White patch。
灰色世界算法假設(shè)一個場景的平均反射光是消色差的(也就是灰色的),因此首先算出平均值再進(jìn)行白平衡轉(zhuǎn)換即可。
如果白平衡在去馬賽克之前,那么不同通道的像素數(shù)量將會不一樣。
前面說過,每個像素絕對值意義不大,有相對的就行,所以可以將綠通道取1。
接下來看白塊算法,這個算法假設(shè)場景中的高亮點(diǎn)就是我們想要找的白點(diǎn)。也就是以最大值的RGB作為白色的數(shù)值。
基于這樣的假設(shè),算法工作如下:
上圖是這兩種算法的效果展示。
這兩種算法都是非?;A(chǔ)的算法,當(dāng)圖像有大面積單色時很容易失?。ū热缢{(lán)天),對于AWB的算法研究有很多論文研究,相機(jī)往往也會有自己獨(dú)特的白平衡算法。注意,這些算法并不一定為了復(fù)原場景光照而設(shè)計,而是會出于審美考慮,留有一些色差。
進(jìn)行了白平衡,接下來就要進(jìn)行色彩空間轉(zhuǎn)換(color space transform, CST),將圖片從raw RGB空間轉(zhuǎn)換到獨(dú)立于設(shè)備的色彩空間,如CIE XYZ。
白平衡僅能努力接近真實(shí)的色彩恒定,因此在相機(jī)上進(jìn)行的色彩空間轉(zhuǎn)換還會包含一個依賴于工廠預(yù)設(shè)的插值。在工廠中會對不同的CCT預(yù)設(shè)色彩轉(zhuǎn)換矩陣CST,在實(shí)際處理時,用場景的CCT根據(jù)預(yù)設(shè)的CST矩陣進(jìn)行插值,得到想要的CST矩陣。
【顏色操作】
現(xiàn)在我們得到了處于CIE XYZ空間的圖片,距離我們常見的處于sRGB的jpg文件只剩一步之遙,但在此之前,還有一個讓每家相機(jī)各顯身手的舞臺,這就是【顏色操作】步驟。
各家相機(jī)會施展不同的秘法,來讓照片變得更加好看。這個步驟有很多叫法:色彩調(diào)控、沖洗階段(photo-finishing)、色彩渲染、YUV處理引擎。一般會允許用戶對這個階段進(jìn)行一定的控制和選擇,下圖來自佳能的用戶手冊。
這些色彩操作可以分為兩類,三維和一維的,三維變換同時處理三個通道,一維曲線則是作用于每個通道,下圖是一些變換的例子。這里說到的查詢表(look up table, LUT)就相當(dāng)于函數(shù)或者說映射。
可以看到,這些變換幾乎都是非線性的變換,經(jīng)過了這一步,像素值的強(qiáng)弱就不再能夠反映場景中光線的強(qiáng)弱了(當(dāng)然可能在此之前就已經(jīng)有過非線性操作了)。
【映射到sRGB輸出】
經(jīng)過了這一步,我們可以將圖片【映射到sRGB輸出】了。這在之前已經(jīng)解釋過,會先從CIE XYZ映射到linear sRGB,再經(jīng)過伽馬變換(2.2)得到sRGB空間。
【JPEG壓縮】
接著要進(jìn)行【JPEG壓縮】,這是為了減小文件大小而進(jìn)行的有損壓縮。
其中較難理解的是離散余弦變換(Discrete Cosine Transform , DCT)變換的步驟,在這里做感性介紹,幫助理解。
DCT可以理解為對傅里葉變換的采樣,變換結(jié)果都是實(shí)數(shù)。傅里葉變換能夠?qū)⒃驹跁r域的信號轉(zhuǎn)換到頻域上,對于圖像來說,就是將原本在空間上分布的像素值信號,轉(zhuǎn)變?yōu)椴煌l率的二維三角函數(shù)的帶權(quán)重加和。同時結(jié)合一個經(jīng)驗:低頻的信息要比高頻的信號更重要(可以想象一個低頻余弦和高頻余弦加和,結(jié)果就是一個長了毛刺的山坡——山坡的信息更為重要),從而進(jìn)行一個量化的操作(相當(dāng)于濾波),將更多低頻的信息保留,從而減小數(shù)值尺度的同時盡可能保留重要信息,這之后會再進(jìn)行編碼,提取數(shù)據(jù)的特征存儲,從而實(shí)現(xiàn)更高的壓縮比例。
在DCT上進(jìn)行量化操作的數(shù)量會影響品質(zhì),操作越多,得到的圖像質(zhì)量就越低。在相機(jī)中往往可以選擇jpeg格式的質(zhì)量。
【保存成文件】
接下來就是【保存成文件】了,給照片加上日期時間、相機(jī)設(shè)定、輸出的色彩空間、地理位置等等信息,寫到存儲卡里,就大功告成了。
國際色彩聯(lián)盟(International Color Consortium, ICC)是一個負(fù)責(zé)制定色彩操作國際標(biāo)準(zhǔn)的組織,下圖是來自ICC-ISO 22028的流程圖,可以看到更多關(guān)于處理流程的細(xì)節(jié)。在這里,與raw RGB相關(guān)的RGB值都被稱為“場景相關(guān)的”(scene referred),而轉(zhuǎn)換到sRGB空間以后,就被稱為“輸出相關(guān)的”(output referred)。
還要注意的是,sRGB色彩空間和JPEG正在慢慢被取代,sRGB是為了90年代的顯示器設(shè)計的,太過于古老了。JPEG也在逐步被壓縮率更高的HEIC編碼取代。蘋果設(shè)備上已經(jīng)開始用heic替代jpeg了,同時蘋果設(shè)備使用Display P3的色彩空間,它是一種數(shù)字電影提倡的DCI-P3空間的變體,比sRGB要大25%,也包含了伽馬變換。越來越多的安卓設(shè)備也會開始支持這個色彩空間。
再次強(qiáng)調(diào)一下,上面的這些步驟僅僅是一個指南,現(xiàn)代相機(jī)中的處理流程會更加復(fù)雜。對于不同品牌/型號的相機(jī),操作的順序可能會有不同,(如在去馬賽克之后再白平衡),操作的方法也可能不一樣(如把銳化和去馬賽克結(jié)合)。
而對于工業(yè)/機(jī)器視覺相機(jī),其ISP往往提供的是最小程度的處理,如有的只會進(jìn)行白平衡,再在raw RGB空間上進(jìn)行伽馬變換,因此很多時候輸出的圖像仍然在設(shè)備的色彩空間內(nèi)。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19032瀏覽量
228448 -
圖像處理
+關(guān)注
關(guān)注
27文章
1272瀏覽量
56500 -
相機(jī)
+關(guān)注
關(guān)注
4文章
1317瀏覽量
53365 -
片上系統(tǒng)
+關(guān)注
關(guān)注
0文章
185瀏覽量
26728
原文標(biāo)題:相機(jī)圖像處理過程
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論