我們常用的相機(jī)是如何拍照的?

我們都喜歡用手機(jī)拍著,攝影愛(ài)好者還喜歡用專業(yè)的單反相機(jī)拍攝照片。一般我們都是直接得到圖片,這些圖片的格式一般是JPG格式的。很多人理所當(dāng)然覺(jué)得相機(jī)拍出來(lái)的圖片就是JPG格式的。

其實(shí)不然,我相信也有讀者明白相機(jī)其實(shí)是先拍攝到原始圖像,再通過(guò)插值得到的RGB圖像。那么,相機(jī)底層到底是如何運(yùn)作的?相機(jī)是如何拍攝到我們常見(jiàn)的彩色圖像的呢?

從這篇文章開始,我會(huì)詳細(xì)介紹相機(jī)的一些底層技術(shù),其中的主線就是相機(jī)的成像流程,在英文中叫In-Camera Imaging Pipeline。

其實(shí)我們用相機(jī)拍照,最先得到的是Raw data,我們可以稱之為原始數(shù)據(jù)。

我們可以先看下面這幅圖:

這幅圖來(lái)自這個(gè)網(wǎng)站:https://www.ptgrey.com/white-paper/id/10912,原文是英文的,有興趣的讀者可以去讀讀。

這幅圖給我們大致描繪了我們的相機(jī)是怎么得到圖像的。一般而言,相機(jī)中有CCD或者CMOS傳感器,就是上圖的中的SENSOR。這個(gè)傳感器里面的每一點(diǎn)都是一個(gè)收集光子的光電二極管。上圖中的紅色小球P就代表了從被拍攝物體發(fā)出的光子(Photon)。光電二極管的作用是什么呢?顧名思義,就是把光子轉(zhuǎn)換為電子。所以,大家可以看到,上圖中的那些紅撲撲的光子在經(jīng)過(guò)傳感器中的光電二極管后,就變成了綠油油的電子(electronic,縮寫為e),因?yàn)殡娮訋ж?fù)點(diǎn),所以“e”旁邊有“-”號(hào)。要說(shuō)明的是,并不是所有的光子都會(huì)轉(zhuǎn)換成電子,這里面其實(shí)是有轉(zhuǎn)換率的,也就是圖中的Quantum Efficiency (QE)。這點(diǎn)我們可以以后詳細(xì)談,我先挖一個(gè)坑,大家可以查查這里面的東西,看能否填上。

這些電子被存儲(chǔ)在一個(gè)井里,這個(gè)井有一個(gè)很洋氣的名字,叫potential well,中文直譯過(guò)來(lái)教電勢(shì)井。我們?cè)谖锢碇袑W(xué)過(guò)電勢(shì)的概念,咱可以把它理解成海拔。電勢(shì)兩端當(dāng)然是有差異的,就好比三峽大壩兩端的水位高度??刹灰∏七@個(gè)高度,那可是很大的能量哦。有關(guān)物理含義我不多介紹。這個(gè)電勢(shì)井的作用是什么呢?大家可以這么理解電勢(shì)井,這個(gè)井就像一個(gè)銀行卡,像存錢一樣把電子存起來(lái)。如果攝像頭越好,那么這個(gè)電勢(shì)井的井深就越大,意味著這張銀行卡就應(yīng)該能存貯更多的錢。如果這是一張信用卡,意味著這張卡能透支更多的額度。

當(dāng)然,有了銀行卡,就要有配套的取款機(jī)吧對(duì)不對(duì),至少讓我們先查查賬,看看卡里有多少錢再說(shuō)。這就是上圖里的電壓表狀的東西了,就是相機(jī)中讀取電勢(shì)的一個(gè)設(shè)備,英文名叫Analog-to-digital converter,是把電勢(shì)井的每個(gè)點(diǎn)的兩端之間的電勢(shì)差(也叫電壓)轉(zhuǎn)成數(shù)值的設(shè)備,就好像是把存在銀行卡的那些人民幣紙幣轉(zhuǎn)成數(shù)值顯示在屏幕上的設(shè)備。

再多說(shuō)一句的是,不同相機(jī)品牌的原始數(shù)據(jù)的格式不同,這就好比不同國(guó)家的銀行卡里存有不同的幣種一樣。常見(jiàn)的相機(jī)品牌有佳能,尼康,松下,索尼,奧林巴斯,柯達(dá)等,其原始數(shù)據(jù)的格式為CR2 (Canon),NEF (Nikon),RW2 (Panasonic),ARW, SRF, SR2 (Sony),ORF (Olympus),DCR, K25, KDC (Kodak)。

到這里為止,我已經(jīng)基本介紹完相機(jī)是如何拍攝到原始數(shù)據(jù)的了。我想大家會(huì)有一個(gè)問(wèn)題:在這里為止,我們?cè)谙鄼C(jī)中的傳感器里的每一個(gè)點(diǎn)得到的數(shù)值是一維的,但是我們拍攝到JPG圖像是彩色的,也就是說(shuō)每個(gè)點(diǎn)都是R, G, B三個(gè)維度都有數(shù)據(jù),這是怎么回事呢?

這個(gè)問(wèn)題非常好~鼓掌!

其實(shí),到目前為止,我們只了解了相機(jī)中傳感器硬件的功能,這個(gè)功能只依賴于不同品牌的傳感器。其實(shí)我覺(jué)得相機(jī)就和我們使用的手機(jī)的結(jié)構(gòu)是很像的。比如三星手機(jī)可以使用高通的CPU芯片,三星自己的鏡頭。相機(jī)也是如此。這些相機(jī)廠家大多數(shù)都用自己的傳感器,尤其是松下的SmartFSI傳感器,效果也別好,我以后會(huì)詳細(xì)介紹,這里不多說(shuō)。

除了傳感器之外,這些不同的相機(jī)廠家最拿手的就是成像流程了,就是Imaging Pipeline。這些是這些相機(jī)廠家的獨(dú)門絕技,絕不外傳的。那么這些流程到底起到什么作用呢?說(shuō)的簡(jiǎn)單點(diǎn),成像流程就是把一維的原始數(shù)據(jù)編程R,G,B三維彩色圖片的過(guò)程。

相機(jī)在拍攝到原始數(shù)據(jù)之后,傳感器上的每個(gè)點(diǎn)都是一維的灰度值,就像下圖一樣:

其實(shí)傳感器還有一個(gè)身份,那就是顏色過(guò)濾器,英文名是color filter array。傳感器上的每個(gè)點(diǎn)是很有講究的,這些點(diǎn)過(guò)濾掉掉其它顏色之后,允許通過(guò)的是紅色R,綠色G,藍(lán)色B。如果這個(gè)點(diǎn)只允許紅色通過(guò),那么每個(gè)點(diǎn)上的數(shù)值,其實(shí)就是這個(gè)點(diǎn)在紅色R這個(gè)通道上的數(shù)值。JPG彩色圖像有三個(gè)通道,分別是紅色R,綠色G,藍(lán)色B。那這個(gè)點(diǎn)在另外兩個(gè)通道上的值如何得到呢?這個(gè)點(diǎn)在綠色G和藍(lán)色B上的值可以通過(guò)周圍的值插值得到。

有人說(shuō),怎么這么節(jié)?。?!為什么不做三個(gè)傳感器,疊加起來(lái),然后分別記錄R,G,B三個(gè)通道的值呢?這個(gè)想法很好,的確有這樣的傳感器,但成本太高,而且收益不是那么大。目前大多數(shù)CCD,CMOS傳感器都是一層傳感器,目前對(duì)于日常生活還是夠用的。

有人又問(wèn)了,怎么我看這個(gè)傳感器,綠色的那么多?誒,對(duì)了,這是因?yàn)槿搜蹖?duì)于綠色最為敏感,所以呢,傳感器模仿了人眼的構(gòu)造,其中紅色,綠色,藍(lán)色的比例分別是1/4,1/2,1/4。

好了,我們繼續(xù),看下圖:

我們的傳感器得到了每個(gè)點(diǎn)(R或G或B)上的數(shù)值,然后相機(jī)里的軟件部分把這些數(shù)值通過(guò)彩色插值(相當(dāng)于上圖中的Raw Converter)把原始數(shù)據(jù)轉(zhuǎn)換成R,G,B三個(gè)通道上的數(shù)值,這樣就得到了RGB彩色圖像。這樣就完了嗎?!

當(dāng)然不是!如果你覺(jué)得這樣就好了,那真是太小瞧這些相機(jī)制造商了!

這樣并沒(méi)有結(jié)束哦,這張彩色圖像不是我們看到最終結(jié)果。下面是一個(gè)常見(jiàn)的成像流程,這個(gè)流程里的每一步,我以后都會(huì)另開章節(jié)詳細(xì)介紹,這里就簡(jiǎn)略一些,大家先了解一個(gè)大概就可以,有興趣的讀者可以自行查閱??聪聢D:

從這張圖,我們可以看到,在得到彩色插值后的RGB圖像之后,圖像還需要經(jīng)過(guò)白平衡和彩色空間轉(zhuǎn)換階段。白平衡就是去掉不實(shí)際的色彩陰影,使得圖像呈現(xiàn)出來(lái)的白色是真實(shí)出現(xiàn)的白色。就好比絕對(duì)零度不是0攝氏度,也不是0華氏度,而是-273攝氏度一樣。白平衡其實(shí)是設(shè)定了一個(gè)白色的標(biāo)準(zhǔn)。詳情可以參考以下鏈接:

http://www.cambridgeincolour.com/tutorials/white-balance.htm。色彩空間轉(zhuǎn)換其實(shí)是一個(gè)道理,就是把RGB圖像中的紅綠藍(lán)轉(zhuǎn)變成相機(jī)廠家定義的標(biāo)準(zhǔn)紅綠藍(lán)一樣。紅,綠,藍(lán)色都有很多種,下面請(qǐng)你識(shí)別出下面的綠色:

所以,大家看到?jīng)],傳感器中設(shè)定允許通過(guò)的紅,綠,藍(lán)不是最終的紅綠藍(lán)。這三個(gè)基本色需要在成像流程里進(jìn)行校準(zhǔn)。這三個(gè)顏色被校準(zhǔn)后,其他的顏色也就自動(dòng)校準(zhǔn)了。接下來(lái)就是伽馬映射(Gamut mapping),也是一個(gè)校準(zhǔn)色彩的過(guò)程。接下來(lái)的色調(diào)映射(Tone Mapping)這個(gè)過(guò)程是這樣的,原始數(shù)據(jù)里的數(shù)值的變化范圍很大,一般是16bits,也就是說(shuō)從1到幾萬(wàn)不等,但是我們常用的顯示器或者手機(jī)屏幕只能投影8bits的圖像,也就是0到255之間的數(shù)值。超過(guò)255的數(shù)值統(tǒng)一按照255來(lái)處理,這里0是黑色,255是白色。Tone Mapping有很多具體的方法,但基本原理都把是一個(gè)從很大動(dòng)態(tài)范圍的原始數(shù)據(jù)映射到0到255之間的圖像。這樣,才能保持相對(duì)的色調(diào)保持不變,否則如果把原始數(shù)據(jù)中的超過(guò)255的數(shù)值全部統(tǒng)一按255處理,就會(huì)使得呈現(xiàn)出來(lái)的圖像色調(diào)比較單一,并且失真。最后一個(gè)就是JPEG壓縮了,這樣子出來(lái)的圖像不會(huì)那么大,方便存儲(chǔ)和傳輸。

下面是一個(gè)更詳細(xì)的成像流程,以及一個(gè)真實(shí)的把原始數(shù)據(jù)轉(zhuǎn)成我們常見(jiàn)的JPG圖像的例子。我以后有機(jī)會(huì)再詳細(xì)介紹這個(gè)pipeline。

好了,到目前為止,我已經(jīng)基本介紹了相機(jī)的硬件部分(傳感器)和軟件部分(成像流程)的功能。希望對(duì)大家理解相機(jī),拍攝有所幫助。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容