武巖,高春,魏巍
(長春理工大學(xué)計算機(jī)科學(xué)技術(shù)學(xué)院,長春 130022)
圖像傳感器是將光信號轉(zhuǎn)換為電信號的裝置。目前,應(yīng)用最為廣泛的圖像傳感器主要有互補(bǔ)金屬氧化物半導(dǎo)體CMOS圖像傳感器和電荷耦合器件CCD圖像傳感器[1]。隨著集成電路制造工藝技術(shù)的不斷發(fā)展和集成電路設(shè)計水平的不斷提高,基于CMOS集成電路工藝技術(shù)制造技術(shù)的CIS(CMOS Image Sensor),由于其自身具有集成度高、成本低、動態(tài)范圍寬和功耗小等優(yōu)勢,在諸多領(lǐng)域中得到了廣泛的應(yīng)用,如手機(jī)、筆記本、汽車、攝像機(jī)、保安監(jiān)控、眼膜識別、醫(yī)療航天、視覺玩具等社會生活和工業(yè)生產(chǎn)的各個方面,特別是在數(shù)碼相機(jī)、照相手機(jī)中的圖像傳感器應(yīng)用市場前景非常廣闊,因此,對于CIS的研究與開發(fā)具有非常高的市場價值[2]。
近年來,CIS技術(shù)得到了極大的重視和長足的進(jìn)步。然而,在CIS分辨率的不斷提高,集成像素單元不斷增加的同時,光線通過微透鏡陣列入射到像素內(nèi)部光電二極管位置上的光照強(qiáng)度持續(xù)減弱,特別是處在微透鏡陣列邊緣部分的像素,這種現(xiàn)象尤為明顯。光照強(qiáng)度的不足進(jìn)而引起整個CIS靈敏度和成像質(zhì)量的下降。因此,必須通過平移微透鏡來減緩這種現(xiàn)象[3]。針對微透鏡的平移計算操作,研究人員提出了幾種不同的平移算法,如相位差測試像素算法、平面坐標(biāo)計算法以及擬合平移函數(shù)算法等。這些算法能夠較好的計算出微透鏡的平移量,但存在著計算微透鏡平移量不準(zhǔn)確,運(yùn)算復(fù)雜度較高和計算量較大等的問題。
為了解決上述算法的弊端,更好的進(jìn)行微透鏡平移量的計算,本文針對CIS的結(jié)構(gòu),提出了一種可以減少微透鏡平移計算量的算法,該算法在提高了微透鏡平移量計算精度的同時,減少了計算平移量的時間。
當(dāng)光線通過CIS上方鏡頭,照射到微透鏡陣列上時,位于微透鏡陣列中心位置的光線幾乎是垂直照射到陣列像素中的光吸收區(qū)域[4]。而在微透鏡陣列當(dāng)中,由于光線經(jīng)過鏡頭、微透鏡和濾光片時產(chǎn)生折射作用[5]。因此,光線以傾斜的方式入射到像素單元,部分光線照射到像素內(nèi)部的金屬層上面,即不能照射到微透鏡陣列像素中的光吸收區(qū)域,降低了入射到像素內(nèi)部光吸收區(qū)域的光照強(qiáng)度,從而造成了CIS的成像質(zhì)量變差[6]。
微透鏡平移算法的提出對于高分辨率CIS成像質(zhì)量的提升作用尤為突出。目前已經(jīng)提出了相位差測試像素算法、平面坐標(biāo)計算法、擬合平移函數(shù)算法等微透鏡平移算法,針對相關(guān)算法分析其優(yōu)缺點(diǎn)和適用范圍。
相位差檢測像素算法是將一個2×2的像素陣列上的微透鏡分別向不同的方向平移[7],δ代表微透鏡21a到微透鏡21d的偏移量,D代表每個像素11a,11b,11c,11d在傾斜方向上的排列間隔,r0代表最大圓C0的半徑,O11O31是微透鏡21a中的光軸中心點(diǎn)O11與微透鏡21c中的光軸中心點(diǎn)O31之間的距離,可以用勾股定理的表達(dá)式來表示。O31O41是微透鏡21c的光軸中心O31與微透鏡21d的光軸中心O41之間的距離。用線連接三個圓的中心點(diǎn)形成一個等邊三角形,其中rmax代表微透鏡 21a、21b、21c、21d 的最大的半徑,距離 O11O31和距離O31O41是最大的半徑rmax的兩倍。
當(dāng)δ>r0的值時,微透鏡 21a、21b、21c、21d 會覆蓋其毗鄰的像素11。因此,需要滿足δ<r0的值時,把它應(yīng)用到等式(5)中,這是δ_max的值是r0的0.279倍。
該算法提高了入射光進(jìn)入每個像素的靈敏度,且不需要另外提供光瞳來形成微透鏡,但是存在計算復(fù)雜且難于操作的問題。
平面坐標(biāo)算法是通過對微透鏡陣列進(jìn)行坐標(biāo)化,取位于中心位置像素的中心點(diǎn)作為坐標(biāo)原點(diǎn),分別計算在X軸和Y軸方向的微透鏡平移量,并通過計算出來的X軸和Y軸方向的微透鏡平移量來計算處于該位置的微透鏡平移量[8]。首先計算X軸和Y軸正軸方向像素的微透鏡平移量,比如pixel(m,0)、pixel(k,0)、pixel(0,n)和pixel(0,1),假設(shè)pixel(0,1)的微透鏡平移量為ΔS0,1,pixel(k,0)的微透鏡平移量為ΔSk,0,則pixel(k,1)的微透鏡平移量為ΔSk,1=sqrt((ΔSk,0)2+(ΔS0,1)2),同理,可根據(jù)坐標(biāo)來計算出其他任意位置的微透鏡平移量。但該算法也存在一個缺點(diǎn),即針對于計算主光線角度(CRA)照射下的微透鏡平移量,而計算位于其他位置的微透鏡平移量是通過它本身在X軸和Y軸投影的像素平移量的平方和去計算的,這本身就存在一個明顯的誤差,同時一般鏡頭的CRA特性為非線性變化,這種誤差就更加的明顯。
隨著CIS的不斷發(fā)展,CIS芯片集成度越來越高,CIS上的像素個數(shù)也不斷增多,由原來的幾十萬像素發(fā)展到現(xiàn)在的幾千萬像素[9]。因此,為了提高CIS的成像質(zhì)量而去逐一的計算每個微透鏡平移量,顯然不太現(xiàn)實(shí)。在該背景條件下,人們不得不尋找一種在保證平移精度的基礎(chǔ)上,減緩微透鏡平移計算量的方法。為了解決上述問題,提出了一種在保證平移精度的基礎(chǔ)上減少微透鏡平移計算量的算法,即基于模塊的微透鏡平移算法[10]。本文的算法流程圖如圖1所示。
圖1 本文提出的算法流程圖
圖2 微透鏡陣列分塊方法
基于模塊的微透鏡平移算法是依據(jù)CIS像素陣列是嚴(yán)格對稱的特點(diǎn),光線通過鏡頭照射到CIS像素陣列上,而鏡頭通常是圓形結(jié)構(gòu),在接受光照的情況下,形成的圓形光斑圖案也依然是嚴(yán)格對稱[11]。因此,提出了對微透鏡陣列進(jìn)行分塊,再對單個微透鏡進(jìn)行平移量計算的算法。如圖2所示,首先在微透鏡陣列上建立坐標(biāo)系,將微透鏡陣列劃分為四個模塊。每個微透鏡都按照黑色箭頭的方向平移,當(dāng)計算微透鏡的平移量時,除坐標(biāo)軸上的微透鏡之外,計算其他微透鏡的平移量時,只需計算這四個模塊其中的一個模塊,基于微透鏡陣列相對于X軸和Y軸嚴(yán)格對稱的法則,便可以得出其余三個模塊的平移量。同理,坐標(biāo)軸上微透鏡平移量的計算方法同上。因此,該模塊分組算法大大的減少了因逐個平移微透鏡所帶來的較大計算量,從而有效的提高了微透鏡平移量的計算效率。該模塊分組方法可由公式Block Size=INT(DeltaNpix/(2S))[12]計算得出微透鏡陣列中的每個模塊大小,其中Block Size代表模塊的大小,即模塊內(nèi)行數(shù)或者列數(shù)的總和,Delta代表微透鏡間距之間的改變量,Npix是像素排列當(dāng)中行或者列的數(shù)目,S代表微透鏡陣列邊角的微透鏡平移量,INT函數(shù)是為了保證整個微透鏡模塊進(jìn)行平移。
該模塊分組算法在可以確保精簡計算量且提高光電二極管靈敏度的同時,不會增加額外的成本。在單個模塊內(nèi)部計算微透鏡的平移量時,由于像素結(jié)構(gòu)中像素之間的距離比與之對應(yīng)的微透鏡之間的距離要小。因此,本文采用基于像素間的最小串?dāng)_并提高像素中光吸收區(qū)域靈敏度的CIS微透鏡平移算法。該算法涉及到幾何光學(xué)中光線的折射原理等基礎(chǔ)知識[13],具體的計算方法如圖5所示:
圖3 計算微透鏡平移量示意圖
具體的計算方法如圖3所示,規(guī)定物距在坐標(biāo)原點(diǎn)左邊為正,右邊為負(fù);坐標(biāo)軸上方為正,下方為負(fù)。為了便于求出光線入射點(diǎn)的坐標(biāo),可把光線的方程表示為:
按此公式可求得光線的入射角I。接下來按照斯涅耳定理 sinI′=(n/n′)sinI和公式 U′=U+I+I′聯(lián)立來作進(jìn)一步的計算,公式 L′=r+r(sinI′/sinU′)可變換為 L′=z+(y/tanU′)。因此,對于空間光線經(jīng)球面的光路計算,需要使用矢量形式的折射定律。設(shè)光線從鏡頭初射時的交點(diǎn)坐標(biāo)為 A(x0,y0,z0),其方向余弦為 L(cosα,cosβ,cosγ),已知球面方程即為 F(x,y,z)=0,則聯(lián)立光學(xué)方程和球面方程,得方程組:
公式(7)中d為鏡頭到當(dāng)前球面的距離,其中d=-L,r=sqrt(w2+(r-h)2)。利用相應(yīng)的迭代法求以上方程組的解,即為光線與球面的交點(diǎn) B(x,y,z)。過該點(diǎn)的法線方向單位矢量為:
公式(8)中,向量 M(λ,μ,ν)為法線的方向余弦。該法線的方向余弦與入射光線的單位矢量進(jìn)行數(shù)量積,即可求得相應(yīng)的入射角。
再利用折射定律求得折射角I′,即得P=N·A-N·A=n′cosI′-ncosI,其中 P 為待定系數(shù),A′和 A 分別為折射光線矢量與入射光線矢量。然后利用折射定律的矢量形式:
將參數(shù)代入公式同樣可求得折射光線的方向余弦。因此,只需將平移前微透鏡的球心坐標(biāo)(0,0,z)與平移后微透鏡的球心坐標(biāo)(x′,y′,z)進(jìn)行比較,得出△x和△y,即為微透鏡在X軸與Y軸方向上的微透鏡平移量。設(shè)S為微透鏡的總平移量,則利用數(shù)學(xué)公式勾股定理S=sqrt((△x)2+(△y)2),即可得到微透鏡的總平移量。
在點(diǎn)光源光線主入射角為13.05度的照射下,使用LightTools光學(xué)建模仿真軟件建立光學(xué)仿真的像素模型[14]。然后對微透鏡分別使用文獻(xiàn)[8]和本文所提算法進(jìn)行平移仿真,采集微透鏡的同樣位置進(jìn)行測試,測試的結(jié)果如圖4和圖5所示。由仿真結(jié)果可以看出,本文提出的算法可以更好地計算出微透鏡的平移量,且使單個像素接收到更多的光照,從而提高了圖像質(zhì)量。
微透鏡平移算法的出現(xiàn),解決了照射到微透鏡陣列當(dāng)中光吸收區(qū)域光線減少的問題。本文在對微透鏡陣列進(jìn)行模塊劃分的前提下,選取其中一個部分的模塊進(jìn)行微透鏡平移,依據(jù)對稱關(guān)系,其他模塊的微透鏡不需要額外計算就可以直接得出平移量,大大減少了微透鏡平移的計算量。經(jīng)過仿真驗(yàn)證,該算法可以在保證平移精度的情況下,可以有效地提高計算微透鏡平移量計算效率。
圖4 仿真結(jié)果
圖5 輻照度線性表
[1]孫波,王曉艷.CCD圖像傳感器和CMOS圖像傳感器的比較研究[J].信息通信,2015(12):35-36.
[2]甘波,魏廷存,鄭然.CMOS圖像傳感器芯片的自動白平衡算法[J].液晶與顯示,2011.26(2):224-228.
[3]Feng C.Microlens Alignment Procedures in CMOS Image Sensor Design:US,US8068284[P],2011.
[4]Tseng C X,Pang C P,Yang C L,et al.Design of Microlens on Pixel Array:US,US7687757[P],2010.
[5]Campbell S P,Tsai R H,Agranov G A,et al.Alignment Among Elements in an Image Sensor:US,US7351945[P],2008.
[6]Wakelin S,Derstine M W,Wong J S.Microlens Array with Spatially Varying Optical Property:US,US 6339506 B1[P],2002.
[7]Okigawa M.Solid State Imaging Device with Microlens Shifted from the Center of the Photo Diode[J],2015.
[8]Inoue T,Daiku H.Method for Calculating Shift Amount of Image Pickup Element and Image Pickup Element:US,US 20120262611 A1[P],2012.
[9]Yoneda T,Inoue S,Kochi T,et al.Image Pickup Apparatus:US,EP 1667427 A1[P],2006.
[10]郝勁波.基于微透鏡陣列的三維物體識別[D].西北大學(xué),2007.
[11]Agranov G A.Method for Calculating Circular Symmetrical Microlens/Color Filter Array Shift:US,US7796180[P],2010.
[12]Solid State Image Sensors and Microlens Arrays:,EP1213764[P],2009.
[13]王崢一,武偉璐,牛邦玉.微透鏡及其陣列研究概況[J].科技與創(chuàng)新,2016(11):102-103.
[14]李賽.光場相機(jī)內(nèi)微透鏡陣列的誤差分析及評價[D].哈爾濱工業(yè)大學(xué),2016.