這篇文章將從CMOS成像原理出發(fā),深入講解ISO的本質(zhì),誰決定ISO,原生ISO和基準ISO的區(qū)別和定義,分析噪點產(chǎn)生的原因。詳解信噪比、動態(tài)范圍的區(qū)別與計算,以及最重要的ISO如何影響信噪比與動態(tài)范圍。
ISO的本質(zhì) 基準/原生ISO區(qū)別
通常我們將ISO理解為傳感器對光的敏感程度,在膠片時代,可以調(diào)節(jié)銀鹽顆粒的大小來決定真正的感光效率,但在數(shù)碼相機時代這么理解并不恰當。
因為對于同一塊傳感器,光子到電子的轉(zhuǎn)換效率,也叫量子效率已經(jīng)確定,不隨ISO的改變而改變。
那我們在同樣的光圈和快門下如何改變出圖亮度呢?加增益。沒錯,ISO的本質(zhì)就是增益,可以是模擬的,也可以是數(shù)字的。一般我們將僅由模擬增益決定的ISO稱為原生ISO,也叫native ISO,而最低原生ISO稱為基準ISO,也叫Base ISO,但通常這兩個概念可以混用。
CMOS成像原理
為了搞清楚誰決定ISO的課題,我們來回顧一下CMOS圖像傳感器成像原理。
光子進入CMOS的光電二極管內(nèi)被轉(zhuǎn)化為電子并捕獲到potential well也叫勢阱內(nèi)完成積累,這個光子到電子轉(zhuǎn)換效率被稱為量子效率,也叫QE。
?
勢阱的電子被浮動擴散節(jié)點FD也叫floating diffusion轉(zhuǎn)移并儲存到一個電容CFD里,讀出過程中,這個電容完成電荷到電壓的轉(zhuǎn)換并被源極跟隨器SF讀出。
?
之后這個電壓被一個可編程增益放大器PGA執(zhí)行模擬放大并交給模數(shù)轉(zhuǎn)換器ADC量化為數(shù)字信號。
?
深入理解誰決定ISO
縱觀整個光到電再到數(shù)字信號的讀出流程,ISO又體現(xiàn)在哪兒呢?
首先,量子效率決定了光電靈敏度,這個很好理解,一般相機為50%-60%。
其次,浮動擴散節(jié)點的電容CFD決定電荷到電壓的轉(zhuǎn)換關系,我們小學二年級就學過C=Q/V,表現(xiàn)電容和電壓、電荷量的關系,那一個電子給到這個電容能產(chǎn)生多少電壓呢?就是基本電荷量小q/Cfd。那么這個由浮動擴散節(jié)點電容值決定的電荷到電壓的對應關系,就稱為conversion gain,也叫轉(zhuǎn)換增益,這個電容很重要,一會兒有大用處。
一般來說conversion gain的單位是微伏每電子,比如索尼a1高增益的conversion gain是85.7 uV/e-,表示它一個電子給到浮動擴散節(jié)點上,能轉(zhuǎn)化成85.7微伏的電壓。在同樣的量子效率和像素尺寸下,這個由浮動擴散電容決定的conversion gain就決定了基準ISO,因為此時PGA不放大,而源極跟隨器通常有固定倍率。
那當PGA開始執(zhí)行模擬放大,比如說放大兩倍,意味著接受同樣曝光量下能給到ADC的電壓是基準ISO的兩倍,基準ISO100的被放大到ISO200,原生ISO就是被PGA的模擬增益乘上基準ISO決定了。
?
但PGA的放大倍率也有限,一般是30db,那如果你想開非常非常高的增益,比如說ISO102400,已經(jīng)超過模擬放大極限怎么辦?ADC量化之后再機內(nèi)數(shù)字增益唄,這時和你后期提亮沒有任何區(qū)別,這一段也叫擴展ISO。
簡單看個例子,比如說使用imx410傳感器的尼康Z6,datasheet顯示最高30db的PGA放大,也就是32倍左右。已知imx410在ISO800時通過雙增益電路切換到高增益的conversion gain,配合32倍的PGA放大,最高原生ISO是32*800=25600,是不是正好對應到實測數(shù)據(jù)。
?
當然不同廠家對原生ISO的標定有時也帶上數(shù)字放大,這里就不在贅述了。下面來詳細講講信噪比、動態(tài)范圍和寬容度。
光的量子特性和散粒噪聲
絕大多數(shù)人都錯誤的認為高ISO下的噪點是CMOS引起的,但事實并非如此。光的散粒噪聲才是噪點的第一大來源,尤其是目前由于技術進步,讀出噪聲可以壓到幾個電子的級別,散粒噪聲更是在大多數(shù)情況下占據(jù)主導。
不確定性原理指出,不可能同時精確確定一個基本粒子的位置和動量。由于光的量子漲落,在某處測得的光子數(shù)量不是定值,而是呈現(xiàn)一定概率。
而一段時間內(nèi)光打到傳感器后的接收數(shù)量符合均值為λ的泊松分布。泊松分布有個很好的性質(zhì),就是其期望和方差都是均值λ,標準差自然是根號λ。這個性質(zhì)可以直接算公式,也可以通過中心極限定理近似到正態(tài)分布得到。
什么是信噪比?就是均值/標準差。
比如說某個像素成功轉(zhuǎn)換了n個光子為電子,那此時散粒噪聲信噪比就為n/根號n=根號n。
所以說對散粒噪聲,隨著光子數(shù)量n的增加,雖然噪聲是以根號n的形式增加,但其信噪比也在以也在以根號n的形式增漲,這就是為何我們要增加進光量的微觀解釋。
而在需要用到高ISO的場景,本身的進光量就小,光的信噪比不足。此時開高增益以提亮圖片,散粒噪聲就更加明顯了,這也是所謂“ISO引起噪點”的說法錯誤所在:高ISO下的噪點是因為低進光量造成散粒噪聲信噪比低,而不是開了高增益引起多余噪點。
?
進光量相同 適當?shù)母逫SO反而噪聲更低
讀出噪聲 熱噪和FPN
接下來,我們來看看讀出噪聲,也就是CMOS對信號的讀出本身引入的噪聲。
讀出噪聲最重要的來源是ADC量化之前的模擬電路部分,尤其是讀出電路中的FD和SF會分別引入100 μV左右的噪聲。當開啟高ISO,PGA模塊對SF的讀出電壓加模擬增益,前面的所有讀出噪聲也被同步放大,這一段隨ISO放大而放大的讀出噪聲也叫前端讀出噪聲。
而PGA模塊和ADC本身也會引發(fā)噪聲,不隨模擬增益而改變,這一段也叫后端讀出噪聲。
其中對于ADC來說,連續(xù)變化的模擬信號采樣為離散的數(shù)字信號一定是不完美的,這其中的誤差稱為量化誤差,引發(fā)了量化噪聲,反映在raw文件里一般為固定的幾個bit,量化噪聲可以通過增加ADC的采樣精度而減少,比如選用14bit或16bit ADC。
當然除了讀出電路本身引入的噪聲,成像過程中隨著快門時間增長,CMOS產(chǎn)熱會引起熱噪聲。
熱噪聲也約翰遜–奈奎斯特噪聲,本質(zhì)是電子的熱運動產(chǎn)生,任何時候都有,只是高溫更為明顯。在電容器里熱噪聲也叫KT/C噪聲。
?
以及由于不同像素之間的非均勻性導致的固定模式噪聲,也叫FPN,F(xiàn)ixed Pattern Noise
但這兩者一般來說并不占主導,比如索尼A1的論文中就著重提到了采用列并行的取樣保持電路(S&H)對KT/C噪聲降噪。
動態(tài)范圍與信噪比的定義與區(qū)別
剛剛有提到,信噪比是某一均值下對標準差的比值。
而動態(tài)范圍的定義不一樣 ,動態(tài)范圍DR是最大值和最小值的比值。
在CMOS里,最大值是像素達到飽和時最多能容納多少電子,也叫滿阱容;最小值是沒有信號輸入時本身cmos本身會引起的噪聲,也叫本底噪聲或零輸入響應,可以近似為讀出噪聲。
滿阱容被誰決定?還記得浮動擴散節(jié)點電容CFD嗎?給定允許的最大電壓擺幅V,是不是可以通過V*Cfd算出這個電容最多能容納多少電子,再結(jié)合基本電荷量q即可算出最多能容納多少電子。
這就是滿阱容,也叫FWC,full well capacity。
計算信噪比和動態(tài)范圍
信噪比和動態(tài)范圍怎么計算呢?通過photonstophotos.net查看不同相機的單個像素的最大滿阱容,以及在各個ISO下以電子為單位的讀出噪聲。
?
通過FWC/readout noise能算出這個相機的最大動態(tài)范圍。我們通常將動態(tài)范圍用擋來表示,2倍是一檔,那動態(tài)范圍是多少擋呢?就是:
對于信噪比來說,由于現(xiàn)代傳感器讀出噪聲很小,我們可以通過滿阱容開根號得到的散粒噪聲信噪比近似為某相機的最大信噪比,以db來表示就是:
以a7R4為例的SNR和DR計算
具體來看個例子,以索尼a7R4為例,其最大滿阱容為36000個電子,最低原生ISO下讀出噪聲大概3個電子。
可以得到其最大動態(tài)范圍是:
大概13.55檔。DXO測出來13.3,很精準吧。
?
最大信噪比呢?我們通常用18%的中灰也就是大致吃到滿阱的18%來算此時的信噪比,也就是:
實測是37db,也差不多。
注意這里的計算都是基于像素層面,沒有縮圖,至于縮圖會復雜一點。
ISO如何影響和信噪比與動態(tài)范圍
好,重點來了。ISO和信噪比、動態(tài)范圍是什么關系呢?
首先,高ISO能提高信噪比,當進光量確定的時候,散粒噪聲的信噪比也確定了。而在相同的Base ISO下,采用更高的ISO,事實上就是改變的PGA放大器的放大倍數(shù)。
讓它放大電壓有什么用?第一,壓制放大器到ADC之間的那段傳輸噪聲。第二,讓ADC能接收更高的電壓擺幅,量化時能用到的有效色深采樣更高,壓制ADC的量化噪聲。
所以說這就得到了一個很反常理,但又非常正確的結(jié)論:給定相同的進光量,在不過曝的前提下提高ISO,反而能壓制后端讀出噪聲提高信噪比。
而一般測試圖里提高ISO噪點變多,是因為要保持畫面曝光相同,縮小了光圈/縮短了快門,本質(zhì)上還是因為進光量變少造成散粒噪聲信噪比降低,并不是ISO引起了噪點。
保持曝光不變,開高ISO必然要縮光圈/減快門,低進光量引起噪點
?
保持進光量不變,后期提到一個亮度,高ISO反而噪點少
我們來看看實測數(shù)據(jù),你會發(fā)現(xiàn)不論是新老相機,高ISO的讀出噪聲總是比低ISO低那么點,即使是具有所謂ISO不變性,后端讀出噪聲足夠低的新相機,比如索尼a7C,高ISO的信噪比收益仍然存在,雖然收益沒那么明顯了。
這時候你可能有疑問了,唉不對啊,前文不是說了高ISO會放大散粒噪聲和前端讀出噪聲嗎?怎么到這里又壓噪聲了?
注意這里壓噪聲是指前期用高ISO比后期提亮信噪比高。對于散粒噪聲,它是光的物理屬性,想把很少的光提亮到高亮度,散粒噪聲總是被放大,所以說散粒不是CMOS的鍋。
在后期提亮時,要共同放大散粒+前端+后端噪聲,提高ISO只放大前端+散粒,帶一個固定的后端噪聲。所以我們才得到ISO對信噪比的結(jié)論:進光量相同時,高ISO能壓制后端讀出噪聲來提高信噪比。
至于ISO對動態(tài)范圍的影響則完全相反。
ADC能接受的最大電壓擺幅是固定的,比如說1v。PGA不放大時FD能裝多少電子就是最大滿阱容。
那當PGA放大器開始放大,比如說2倍,ADC還是只能接受1v,但對應到放大器的輸入端就只能接受0.5v了,造成將將過曝時對應的電子數(shù)量砍半。
所以說,ISO越高,動態(tài)范圍越低,而且當后端讀出噪聲足夠低的時候,提高ISO對于本底噪聲影響不大,造成的結(jié)果就是ISO和動態(tài)范圍近似為線性負相關。
我們可以看到近期的幾個相機,包括索尼a1,尼康z9在雙增益后都符合這個趨勢。下期會提到這個性質(zhì)和ISO不變性的聯(lián)系。
ISO的形象化理解
我們可以形象化地把ISO想成話筒的話放,你說話聲音一樣的時候,話筒振膜的振幅是確定的。但電路中傳輸過程和模數(shù)轉(zhuǎn)換過程一定會有噪聲,如果你說話聲音很小,就直接被淹沒在底噪里了,再怎么后期放大都沒用 。
這時候你開啟話放,適當讓前端的電壓擺幅增大,是不是就對后端噪聲有壓制作用,提高了信噪比。
但如果話放增益開太大,電壓對振幅的靈敏度太高,你稍微說話大點聲就爆掉了(削波)。這時候是不是能接收的最大值和最小值之比就變小,所以動態(tài)范圍就小了。
結(jié)語
簡短地總結(jié)一下這篇內(nèi)容:
數(shù)碼相機的ISO不能理解為感光效率,而是一個增益。
基準和原生ISO不一樣,基準ISO是被一個電容決定的conversion gain影響,原生ISO是基準ISO乘上模擬放大。
信噪比是均值/標準差,大多數(shù)情況下是散粒噪聲主導。
考慮光子射入符合泊松分布,散粒噪聲信噪比恰好是捕獲的光電子數(shù)量開根號
適當?shù)母逫SO能壓后端讀出噪聲,提高信噪比
動態(tài)范圍是滿阱容/讀出噪聲,其中滿阱容直接和ISO負相關,而新相機的讀出噪聲變化沒那么大
讀出噪聲足夠低時,ISO和動態(tài)范圍是線性負相關
該開高ISO時開高ISO,比后期提亮噪點少,當然也看光比
不要信“ISO引起噪點“,高ISO影響動態(tài)范圍是真的
這就是我的第一期相機ISO硬核解讀。這篇文章從最底層的原理出發(fā),分析了ISO的本質(zhì),原生ISO和基準ISO的區(qū)別和定義,講解了噪點產(chǎn)生的機制,詳細對比與計算了信噪比和動態(tài)范圍的區(qū)別,以及ISO對它們的影響,并且澄清了噪點和ISO的關系,當然也歡迎指出我的問題。下期會著重于雙原生ISO和雙增益,向右曝光,曝光寬容度和ISO不變性,并會結(jié)合實際給出更多例子。
歡迎加入【全棧芯片工程師】知識星球,手把手教你設計MCU、ISP圖像處理,從算法、前端、DFT到后端全流程設計。
實戰(zhàn)MCU+ISP圖像處理芯片版圖
實戰(zhàn)ISP圖像算法效果
?
知識星球發(fā)起MCU項目啟動,大家一起參與MCU項目規(guī)格啟動討論,我把設計、驗證、DFT、后端的知識點全部羅列出來,大家一起來完善。
以項目驅(qū)動的方式介紹MCU芯片全流程設計的方法;提煉相關的檢查列表、signoff checklist的樣本;讓星球成員熟悉SoC架構(gòu)、設計流程、開發(fā)進度、項目管理;
編輯:黃飛
評論
查看更多