來(lái)源:視科儀器SCOCIE
相機(jī)圖像處理過(guò)程
在開始前介紹兩個(gè)知識(shí)點(diǎn):
集成信號(hào)處理器(Integrated signal processor, ISP):
指的是專門用來(lái)處理感光件信號(hào)并生成最終圖像的硬件,通常會(huì)作為一個(gè)模塊集成到片上系統(tǒng)。
典型的圖像過(guò)程:
光線進(jìn)入鏡頭,到達(dá)【帶有RGB濾光陣列的傳感器】,得到最原始的電信號(hào)。這個(gè)信號(hào)經(jīng)過(guò)【ISO增益和原始圖像處理】【RGB去馬賽克】和【降噪】,就會(huì)得到raw格式的圖片,對(duì)它接著進(jìn)行【白平衡以及色彩空間轉(zhuǎn)換】和【色彩處理】,并【映射到sRGB輸出】,這時(shí)圖片已經(jīng)呼之欲出,只要【JPEG壓縮】并【保存成文件】,儲(chǔ)存卡里就會(huì)增加一張JPEG格式的照片。
接下按照典型的圖像過(guò)程依次介紹:
【帶有RGB濾光陣列的傳感器】
CMOS傳感器是相機(jī)中用于感受光的部分,幾乎所有的消費(fèi)級(jí)相機(jī)的傳感器都是基于CMOS技術(shù)。
大家應(yīng)該都見過(guò)類似這樣的傳感器尺寸對(duì)比圖,傳感器越大,每個(gè)像素上接收到的光就越多,從而相對(duì)噪聲就越小。智能手機(jī)的傳感器往往是最小的。

相機(jī)傳感器其實(shí)就是我們理想中的能夠衡量光線強(qiáng)弱的裝置,取同樣長(zhǎng)的時(shí)間,如果到達(dá)傳感器某個(gè)像素點(diǎn)的光亮度變成兩倍,那么該點(diǎn)的數(shù)值也會(huì)變成兩倍。但要注意的是,傳感器只能測(cè)量光的強(qiáng)弱,并不能區(qū)分顏色,那么我們的彩色是哪里來(lái)的呢?這就需要將不同顏色的濾鏡和傳感器結(jié)合起來(lái),實(shí)現(xiàn)這一過(guò)程的技術(shù)叫做拜爾陣列(“Bayer” pattern)。


于是我們就得到了具有色彩陣列(color filter array, CFA)的相機(jī)傳感器。通過(guò)這樣的設(shè)計(jì),傳感器得到的數(shù)值就可以用來(lái)衡量不同通道信號(hào)的強(qiáng)弱了。不同的相機(jī)有著各自的傳感器陣列,不同陣列的濾光色就構(gòu)成了相機(jī)色彩空間(raw RGB)的三原色,因此相機(jī)的raw RGB空間不是一個(gè)通用的色彩空間。下面兩張圖展示了不同相機(jī)raw RGB空間的原色以及raw圖片的色差。


【ISO增益和原始圖像處理】
傳感器接受光并直接傳過(guò)來(lái)的信號(hào)非常原始,根本不能看,還需要接下來(lái)的一系列操作。
首先是ISO增益,這里要先明確一個(gè)概念:什么是ISO?
ISO,全稱為International Standardization Organization,它對(duì)相機(jī)的對(duì)光線的敏感程度,也就是感光度,進(jìn)行了量化規(guī)定,而那已經(jīng)是膠卷時(shí)代的事了。對(duì)于現(xiàn)代相機(jī),ISO并不是像快門時(shí)間或者光圈那樣具有直白的物理含義,而是通過(guò)信號(hào)處理想要滿足的標(biāo)準(zhǔn)。
為了達(dá)到與設(shè)置相對(duì)應(yīng)的ISO,相機(jī)會(huì)將接收到的信號(hào)進(jìn)行增益,增益倍數(shù)越大,也就對(duì)光線越敏感——當(dāng)然,也會(huì)對(duì)噪音越敏感。下圖展示了不同ISO設(shè)置下的效果(曝光時(shí)間進(jìn)行了相應(yīng)的調(diào)整)。
這里需要指出的是,我們經(jīng)常說(shuō)像素的強(qiáng)度,但其實(shí)像素值是沒(méi)有單位的,它取決于曝光時(shí)間、增益和硬件本身,因此我們實(shí)際上關(guān)注的是圖像上的相對(duì)值,而非絕對(duì)值。
原始的圖像處理是指對(duì)相機(jī)硬件的一系列校準(zhǔn),包括黑光減法、缺陷像素遮蔽和平場(chǎng)矯正加粗樣式。
黑光減法(Black light subtraction)是說(shuō)對(duì)無(wú)光像素值的矯正。我們希望沒(méi)有接收到光的像素值是0,但由于傳感器本身的噪聲,事情往往不是這樣。同時(shí)這個(gè)噪聲并不是恒定的,它會(huì)隨著溫度的變化而改變。為了進(jìn)行校準(zhǔn),可以通過(guò)黑屏設(shè)置一系列無(wú)光的像素,得到光學(xué)黑的信號(hào),再?gòu)恼w中減去,實(shí)現(xiàn)校準(zhǔn)。

缺陷像素遮蔽(Defective pixel mask)是為了處理CMOS傳感器中的壞點(diǎn)。這一校準(zhǔn)會(huì)在工廠中進(jìn)行,通過(guò)拍攝無(wú)光的圖像,來(lái)發(fā)現(xiàn)數(shù)值異常的點(diǎn)來(lái)制作遮蔽,被遮蔽處的壞像素會(huì)被周圍點(diǎn)的插值所代替(也就是估算出這個(gè)點(diǎn)的值)。
平場(chǎng)矯正(Flat-field correction)是由于均勻落在傳感器上的光在圖像中可能并不均勻,這可能是由鏡頭、傳感器在相機(jī)中位置誤差等原因引起的,提前記錄這一變化并予以矯正,從而得到一個(gè)“平”的圖像。
【RGB去馬賽克】
還記得拜爾陣列嗎?那個(gè)聰明的設(shè)計(jì)讓我們的傳感器得以分辨顏色,但同時(shí)也使得我們的圖片變得離散。我們得到了每個(gè)像素點(diǎn)的RGB三通道之一的值,但我們實(shí)際上希望得到每個(gè)像素點(diǎn)的三個(gè)值,所以我們需要進(jìn)行插補(bǔ)。
讓我們來(lái)看一個(gè)最最簡(jiǎn)單的插補(bǔ)算法。

在位置5,拜爾陣列只給了我們R值,G和B就需要用周圍的其他位置來(lái)進(jìn)行估算,這里采用了平均值。可以想見這樣的算法基于“相近位置顏色都差不多”的假設(shè),那么當(dāng)遇到不同顏色的分界處,這樣的假設(shè)自然就不再成立,于是可以加入一個(gè)邊界判斷,發(fā)展成“邊界感知”型插值算法(聽起來(lái)還蠻高大上的)。

上面的算法僅是為了幫助理解,實(shí)際上在IPS中進(jìn)行的算法會(huì)復(fù)雜也強(qiáng)大得多,有時(shí)候去馬賽克的過(guò)程還會(huì)有一些附加效果,如高光調(diào)整(Highlight clipping)、銳化、降噪等。
【降噪】
所有的傳感器都自帶噪音,大多數(shù)相機(jī)會(huì)在模數(shù)轉(zhuǎn)換后加入一個(gè)降噪。
而對(duì)于高端相機(jī),可以能會(huì)根據(jù)不同的ISO設(shè)置采用不同的降噪策略,當(dāng)ISO較高時(shí)會(huì)采取更激進(jìn)的降噪。手機(jī)的相機(jī)因?yàn)閭鞲衅鬏^小,往往都會(huì)采取激進(jìn)的降噪策略,所以手機(jī)自拍比較好看。
這里同樣給出一個(gè)最簡(jiǎn)單的算法來(lái)對(duì)降噪有一個(gè)感性認(rèn)識(shí)。
噪音往往比較突兀,因此可以使用模糊來(lái)減小噪音。但模糊也會(huì)影響細(xì)節(jié),因此考慮將去掉部分中信號(hào)較強(qiáng)的區(qū)域補(bǔ)回圖像(甚至?xí)訌?qiáng)以后補(bǔ)回來(lái))。
于是就得到了我們的算法:

【白平衡以及色彩空間轉(zhuǎn)換】
到這里,我們已經(jīng)得到了raw RGB空間里的圖片,除了顏色怪異,多少是能看了。接下來(lái)就要好好處理一下顏色。
我們希望把raw RGB這一依賴于設(shè)備的色彩空間轉(zhuǎn)換到一個(gè)無(wú)關(guān)設(shè)備的色彩空間里。在這里采用CIE XYZ為例子,實(shí)際上大多數(shù)相機(jī)會(huì)使用一個(gè)叫ProPhoto RGB的色彩空間。
轉(zhuǎn)換分為兩步,白平衡和色彩空間轉(zhuǎn)換。
白平衡也就是矯正RGB相等的點(diǎn)(白點(diǎn)),只要對(duì)三個(gè)通道分別進(jìn)行放縮就行了,也就是一個(gè)對(duì)角矩陣的事。
但怎么定義白點(diǎn)呢?
如果由用戶手動(dòng)設(shè)置,這件事就比較簡(jiǎn)單。相機(jī)一般會(huì)提供一些預(yù)設(shè)的白平衡數(shù)據(jù),用戶根據(jù)拍照的光照環(huán)境進(jìn)行選擇。下圖是一些預(yù)設(shè)白平衡的例子。

如果沒(méi)有手動(dòng)指定,就會(huì)啟用自動(dòng)白平衡(auto white balance, AWB)算法,這件事就會(huì)變得很難,算法必須要能夠確定任意照片的場(chǎng)景光亮。
這樣的算法往往假設(shè)“白色”就是對(duì)場(chǎng)景光源的自然反射,如果我們可以定義圖像中哪些像素屬于“白色”,就可以得到場(chǎng)景光照的RGB表示。注意,這里的“白色”并不一定是白色,也有可能是灰色(白色就是最亮狀態(tài)的灰色),有時(shí)我們會(huì)稱這樣的像素點(diǎn)為“消色差”或者“中性區(qū)”。
這里介紹兩個(gè)簡(jiǎn)單的算法,灰色世界算法Gray world和白塊算法White patch。
灰色世界算法假設(shè)一個(gè)場(chǎng)景的平均反射光是消色差的(也就是灰色的),因此首先算出平均值再進(jìn)行白平衡轉(zhuǎn)換即可。


如果白平衡在去馬賽克之前,那么不同通道的像素?cái)?shù)量將會(huì)不一樣。
前面說(shuō)過(guò),每個(gè)像素絕對(duì)值意義不大,有相對(duì)的就行,所以可以將綠通道取1。
接下來(lái)看白塊算法,這個(gè)算法假設(shè)場(chǎng)景中的高亮點(diǎn)就是我們想要找的白點(diǎn)。也就是以最大值的RGB作為白色的數(shù)值。
基于這樣的假設(shè),算法工作如下:


上圖是這兩種算法的效果展示。
這兩種算法都是非常基礎(chǔ)的算法,當(dāng)圖像有大面積單色時(shí)很容易失敗(比如藍(lán)天),對(duì)于AWB的算法研究有很多論文研究,相機(jī)往往也會(huì)有自己獨(dú)特的白平衡算法。注意,這些算法并不一定為了復(fù)原場(chǎng)景光照而設(shè)計(jì),而是會(huì)出于審美考慮,留有一些色差。
進(jìn)行了白平衡,接下來(lái)就要進(jìn)行色彩空間轉(zhuǎn)換(color space transform, CST),將圖片從raw RGB空間轉(zhuǎn)換到獨(dú)立于設(shè)備的色彩空間,如CIE XYZ。
白平衡僅能努力接近真實(shí)的色彩恒定,因此在相機(jī)上進(jìn)行的色彩空間轉(zhuǎn)換還會(huì)包含一個(gè)依賴于工廠預(yù)設(shè)的插值。在工廠中會(huì)對(duì)不同的CCT預(yù)設(shè)色彩轉(zhuǎn)換矩陣CST,在實(shí)際處理時(shí),用場(chǎng)景的CCT根據(jù)預(yù)設(shè)的CST矩陣進(jìn)行插值,得到想要的CST矩陣。


【顏色操作】
現(xiàn)在我們得到了處于CIE XYZ空間的圖片,距離我們常見的處于sRGB的jpg文件只剩一步之遙,但在此之前,還有一個(gè)讓每家相機(jī)各顯身手的舞臺(tái),這就是【顏色操作】步驟。
各家相機(jī)會(huì)施展不同的秘法,來(lái)讓照片變得更加好看。這個(gè)步驟有很多叫法:色彩調(diào)控、沖洗階段(photo-finishing)、色彩渲染、YUV處理引擎。一般會(huì)允許用戶對(duì)這個(gè)階段進(jìn)行一定的控制和選擇,下圖來(lái)自佳能的用戶手冊(cè)。
這些色彩操作可以分為兩類,三維和一維的,三維變換同時(shí)處理三個(gè)通道,一維曲線則是作用于每個(gè)通道,下圖是一些變換的例子。這里說(shuō)到的查詢表(look up table, LUT)就相當(dāng)于函數(shù)或者說(shuō)映射。



可以看到,這些變換幾乎都是非線性的變換,經(jīng)過(guò)了這一步,像素值的強(qiáng)弱就不再能夠反映場(chǎng)景中光線的強(qiáng)弱了(當(dāng)然可能在此之前就已經(jīng)有過(guò)非線性操作了)。
【映射到sRGB輸出】
經(jīng)過(guò)了這一步,我們可以將圖片【映射到sRGB輸出】了。這在之前已經(jīng)解釋過(guò),會(huì)先從CIE XYZ映射到linear sRGB,再經(jīng)過(guò)伽馬變換(2.2)得到sRGB空間。
【JPEG壓縮】
接著要進(jìn)行【JPEG壓縮】,這是為了減小文件大小而進(jìn)行的有損壓縮。
其中較難理解的是離散余弦變換(Discrete Cosine Transform , DCT)變換的步驟,在這里做感性介紹,幫助理解。
DCT可以理解為對(duì)傅里葉變換的采樣,變換結(jié)果都是實(shí)數(shù)。傅里葉變換能夠?qū)⒃驹跁r(shí)域的信號(hào)轉(zhuǎn)換到頻域上,對(duì)于圖像來(lái)說(shuō),就是將原本在空間上分布的像素值信號(hào),轉(zhuǎn)變?yōu)椴煌l率的二維三角函數(shù)的帶權(quán)重加和。同時(shí)結(jié)合一個(gè)經(jīng)驗(yàn):低頻的信息要比高頻的信號(hào)更重要(可以想象一個(gè)低頻余弦和高頻余弦加和,結(jié)果就是一個(gè)長(zhǎng)了毛刺的山坡——山坡的信息更為重要),從而進(jìn)行一個(gè)量化的操作(相當(dāng)于濾波),將更多低頻的信息保留,從而減小數(shù)值尺度的同時(shí)盡可能保留重要信息,這之后會(huì)再進(jìn)行編碼,提取數(shù)據(jù)的特征存儲(chǔ),從而實(shí)現(xiàn)更高的壓縮比例。
在DCT上進(jìn)行量化操作的數(shù)量會(huì)影響品質(zhì),操作越多,得到的圖像質(zhì)量就越低。在相機(jī)中往往可以選擇jpeg格式的質(zhì)量。
【保存成文件】
接下來(lái)就是【保存成文件】了,給照片加上日期時(shí)間、相機(jī)設(shè)定、輸出的色彩空間、地理位置等等信息,寫到存儲(chǔ)卡里,就大功告成了。

國(guó)際色彩聯(lián)盟(International Color Consortium, ICC)是一個(gè)負(fù)責(zé)制定色彩操作國(guó)際標(biāo)準(zhǔn)的組織,下圖是來(lái)自ICC-ISO 22028的流程圖,可以看到更多關(guān)于處理流程的細(xì)節(jié)。在這里,與raw RGB相關(guān)的RGB值都被稱為“場(chǎng)景相關(guān)的”(scene referred),而轉(zhuǎn)換到sRGB空間以后,就被稱為“輸出相關(guān)的”(output referred)。

還要注意的是,sRGB色彩空間和JPEG正在慢慢被取代,sRGB是為了90年代的顯示器設(shè)計(jì)的,太過(guò)于古老了。JPEG也在逐步被壓縮率更高的HEIC編碼取代。蘋果設(shè)備上已經(jīng)開始用heic替代jpeg了,同時(shí)蘋果設(shè)備使用Display P3的色彩空間,它是一種數(shù)字電影提倡的DCI-P3空間的變體,比sRGB要大25%,也包含了伽馬變換。越來(lái)越多的安卓設(shè)備也會(huì)開始支持這個(gè)色彩空間。
再次強(qiáng)調(diào)一下,上面的這些步驟僅僅是一個(gè)指南,現(xiàn)代相機(jī)中的處理流程會(huì)更加復(fù)雜。對(duì)于不同品牌/型號(hào)的相機(jī),操作的順序可能會(huì)有不同,(如在去馬賽克之后再白平衡),操作的方法也可能不一樣(如把銳化和去馬賽克結(jié)合)。
而對(duì)于工業(yè)/機(jī)器視覺(jué)相機(jī),其ISP往往提供的是最小程度的處理,如有的只會(huì)進(jìn)行白平衡,再在raw RGB空間上進(jìn)行伽馬變換,因此很多時(shí)候輸出的圖像仍然在設(shè)備的色彩空間內(nèi)。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
20255瀏覽量
252309 -
圖像處理
+關(guān)注
關(guān)注
29文章
1342瀏覽量
59539 -
相機(jī)
+關(guān)注
關(guān)注
5文章
1578瀏覽量
55802 -
片上系統(tǒng)
+關(guān)注
關(guān)注
0文章
202瀏覽量
27690
原文標(biāo)題:相機(jī)圖像處理過(guò)程
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
vison assistant中的圖像處理過(guò)程
用NI Vision Assistant生成的vi運(yùn)行時(shí)不顯示處理過(guò)程
ni vision assistant生成的VI圖像運(yùn)行時(shí)不顯示處理過(guò)程(就是圖像的抓取點(diǎn)這些東西)
污水處理過(guò)程儀表技術(shù)的研究現(xiàn)狀
污水處理過(guò)程儀表技術(shù)的研究現(xiàn)狀
PCB前處理過(guò)程中有什么問(wèn)題
MATLAB圖像處理實(shí)例詳解
CamSim相機(jī)模擬器:極大加速圖像處理開發(fā)與驗(yàn)證過(guò)程
相機(jī)圖像處理過(guò)程詳解
評(píng)論