相機成像原理之sensor篇

和你一起終身學習,這裏是程序員 Android

經典好文推薦,通過閱讀本文,您將收穫以下知識點:

一、Sensor的硬件結構
二、Sensor的曝光

一、Sensor的硬件結構

1. 每個像素的結構

每個像素點的最上方有個微透鏡,增加透光量。有鏡頭就有CRA的問題,超出一定角度的光線無法被收集,需要和鏡頭進行匹配。

2. sensor的縱向結構

光透過電路會發生反射,造成每個像素點之間的干擾。背照式的結構(感光層在電路的上方)不會受到電路的影響。

3. CFA(color filter array)

每個像素點上覆蓋有一種顏色的濾光片,從而去感知每種顏色的亮度。

Bayer格式:綠色分量爲總像素數的一半,紅色藍色爲總像素的四分之一。

3.1 MONO sensor

由於濾光會帶來亮度上的損失,有種MONO sensor,沒有濾光片的處理,亮度會大大提高(有文章說可以提高四倍),但是這就感知不到顏色了,所以又叫黑白sensor。

3.2 光譜響應曲線

下圖是IMX290每個紅綠藍濾光片的光譜響應曲線。

這是人眼視錐細胞對光譜的響應曲線

由於人眼和sensor對光譜的感應曲線不同,同一個物體感知到的顏色不同。因此顏色需要一個轉換關係。ISP中的CCM(色彩校正矩陣)就此誕生,利用一個3x3的矩陣,將sensor感知到的RGB顏色,校準成我們看到的RGB顏色。

3.3 紅綠燈變色問題

這裏穿插一個監控攝像頭常遇到的問題,拍紅燈的時候,經常會拍成黃燈和白燈,這是爲什麼呢?

因爲紅燈的光譜在780~620nm之間,從光譜響應曲線中可以看到,紅像素最敏感,然後是綠像素,最後是藍色像素。

當感光度比較小的時候,紅色像素的亮度遠遠大於綠色和藍色,肯定是呈現出紅色。感光度比較大時,綠色像素也能有很高的亮度,而紅色像素早已經飽和了,不在增加,這個時候呈現的顏色就是紅色+綠色=黃色。感光度很大的時候,RGB都飽和了,紅綠藍加在一起就是白色。
解決方法:

降低曝光
換用藍玻璃IRCUT:在650nm以上的紅光,綠像素的感應也很強。換用藍玻璃IR可以有效減少綠像素的干擾。同時它也可以比較徹底的濾除630nm以上波長的紅光,減少過曝的問題。
3.4 去馬賽克
由於sensor每個像素點只能感知到一種顏色,因此想要得到每個像素點的RGB值,需要進行插值,這個過程就是去馬賽克(Demosiac)。

4. IR-CUT

大家都知道,攝像頭有個IR-CUT,那爲什麼要加IR-CUT filter 呢?IR-CUT是紅外濾光片,可以濾除紅外光。

從IMX290的光譜敏感性曲線可以看到sensor到了1000的波長還能進行光電轉換,而人眼只能到700nm,也就是可以說sensor 的“可見光”和人眼的不一樣,而且範圍遠遠比人眼的要大。

那麼就會導致什麼問題呢,最大的問題就是顏色不一樣,因爲人眼是感受到的是在可見光在可見光範圍內的響應,而sensor感受到的卻是在400-1000範圍內的響應。因此我們需要加上一個IR-cut 使sensor感受的波段和人眼一樣。

還有一個原因:當光線進入鏡頭,由於折射率不同,可見光和紅外光會在靶面的不同位置成像,IR-CUT可以減少紅外光產生的僞像。

4.1 拓展:RGB-IR sensor

補充一種sensor,這種sensor不用IR-CUT,除了有RGB三種CFA,還增加了一種專門只通過紅外光的CFA。由光譜圖我們可以知道,普通sensor中的綠像素不僅僅能感知綠色,還能感知到紅外波段的光,實際上是綠色+IR(紅外光)。RGB-IR的sensor有個IR像素只感知紅外光,兩者相減就可以得到可見光的綠色。

這樣就用數字濾光代替了IR-CUT。我覺得更有應用場景的地方在於,夜間場景下開紅外燈,不僅可以感知到紅外,還能感知到顏色,是一種待開發的黑光技術。

5. 黑電平

黑電平(Black Level Correction)也就是黑色的最低點,以8bit數據來說,指在經過一定校準的顯示裝置上,沒有一行光亮輸出的視頻信號電平。定義圖像數據爲0時對應的信號電平。

黑電平產生的原因:

CMOS傳感器採集的信息經過一系列轉換生成原始RAW格式數據。以8bit數據爲例,單個pixel的有效值是0-255,但是實際AD芯片(模數轉換芯片)的精度可能無法將電壓值很小的一部分轉換出來,因此,sensor廠家一般會在AD的輸入之前加上一個固定的偏移量,使輸出的pixel value在5(非固定)-255之間,目的是爲了讓暗部的細節完全保留,當然同時也會損失一些亮部細節,由於對於圖像來說,我們的關注度更傾向於暗部區域,ISP後面會有很多增益模塊(LSC、AWB、Gamma等),因此亮區的一點點損失是可以接受的。
sensor的電路本身會存在暗電流,導致在沒有光線照射的時候,像素單位也有一定的輸出電壓,暗電流這個東西跟曝光時間和gain都有關係,不同的位置也是不一樣的。因此在gain增大的時候,電路的增益增大,暗電流也會增強,因此很多ISP會選擇在不同gain下減去不同的黑電平的值。
ISP pipeline中的黑電平校正(Black Level Correction) :

拍幾張不同增益下的全黑圖像,算出每個增益下對應的黑電平值。isp會在raw圖之後減去這個黑電平值。這一般是ISP的第一步。

6. 壞點

傳感器芯片由於工藝的原因產生一些有缺陷的像素點,這些像素點可能比鄰近的像素點更暗或者更亮。

ISP pipeline中的的壞點校正:

在判定某像素爲壞點後,會根據鄰近像素點的值計算得到一個值以替代該壞點。

二、Sensor的曝光

sensor的曝光時間和快門時間是一個概念,都是sensor的感光時間。曝光(快門)時間越長,圖像就越亮。

當控制快門時間,仍然達不到期望的亮度,就需要調節sensor的感光度(ISO)。CMOS sensor的感光度就是它的增益。增益是用模擬或數字的方法進行放大,不可避免的會放大噪聲,因此拍攝時一般快門優先。

當拍攝高速運動的物體或者手抖的時候,容易產生運動模糊,就需要降低快門時間。

sensor的曝光方式有兩種,捲簾曝光和全局曝光。

1. 捲簾曝光(rolling shutter)

sensor曝光是每一行依次開始曝光的,所以圖像中每一行的起始曝光時間是不一致的,目前大部分sensor屬於這種。下圖是捲簾曝光拍攝高速運動的物體的現象。

這是IMX290的sensor曝光與輸出示意圖


黃色區域是sensor處於感光的時間,藍色區域是sensor每一行數據的輸出時間,紅色是曝光開始的時間。XHS是進行每個操作的最小時間單位。

從時間先後來看,一幅圖像是從第一行開始曝光,一個XHS之後,再從第二行開始曝光,依次類推。圖像的第一行曝光結束後,進行輸出,輸出數據的時間是一個XHS,依此類推。

捲簾曝光帶來的問題

日光燈下有橫條紋

日光燈屬於頻閃燈,跟當地的供電頻率有關,如果當地的供電是50Hz的正弦波(國內),日光燈就會以100Hz的頻率閃爍。sensor每行的起始曝光時間是不同的,這就導致了每一行曝光時的亮度不同。因此會出現橫條紋

解決方法:

控制曝光時間是1/100的整數倍,這樣每行的曝光時間都是一個週期的整數倍,亮度就保持一致了。
控制幀率爲25/50幀,不能解決橫條紋的問題,但是可以讓每幀圖像中的橫條紋固定在相同的位置。1/25是1/100的整數倍,可以使不同圖像中每一行曝光的開始時間都相差四個週期。保證了每張圖像中同一行的亮度是一致的。
拍攝快速運動的物體會有失真

因爲每一行曝光開始的時間不同,當物體快速運動時,每行抓拍下來的物體位置都不同,造成了物體的變形。

解決方法:

加大圖像輸出的速度(提高幀率也可行,本質上改變的就是輸出速度)
調整抓拍的時間和角度,比如遠處的車輛每幀移動的像素點較少,可以去抓拍稍遠處的車輛
使用全局曝光的sensor

2. 全局曝光(global shutter)

每一行的起始曝光和終止曝光的時間一致,目前只有電警設備上用到,價格昂貴。因爲電警設備有爆閃燈,爆閃燈亮的時間很短。如果使用捲簾曝光的sensor,一幅圖像才曝光幾行燈就熄滅了,所以必須要用全局曝光的傳感器。

原文鏈接: https://www.qinxing.xyz/posts/e6f0524a/
至此,本篇已結束。轉載網絡的文章,小編覺得很優秀,歡迎點擊閱讀原文,支持原創作者,如有侵權,懇請聯繫小編刪除,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章