李 紅,李明偉
?
編碼曝光相機設(shè)計與實現(xiàn)
李 紅,李明偉
( 大連理工大學電子信息與電氣工程學部,遼寧大連 116024 )
為了用普通監(jiān)控相機的資源獲取快速運動物體的清晰圖像,本文設(shè)計了一種基于硬件攝像技術(shù)的編碼曝光相機。其方法是在CCD時序電路中預(yù)設(shè)二進制編碼序列控制曝光方式,用FPGA技術(shù)實現(xiàn)并驅(qū)動CCD圖像傳感器獲取圖片。然后在ARM的微處理器核中,用反卷積方法對拍攝圖片進行去模糊處理。使用編碼序列控制曝光方式拍攝的圖像能夠充分的保留圖像的高頻信息,這樣卷積去模糊能夠轉(zhuǎn)變?yōu)槌B(tài)問題,最后得到較高質(zhì)量的圖像。實驗表明,對比常規(guī)曝光獲取的圖像,編碼曝光方式拍攝的快速運動物體圖像信息清晰,效果滿意。
攝影技術(shù);編碼曝光;曝光方式;ARM;FPGA
相機同被拍攝物體之間的相對運動而導致的圖像模糊稱為運動模糊,許多監(jiān)控拍攝場景是無法重復(fù),一旦發(fā)生這樣情況,就會失去一張珍貴的資料照片,解決運動模糊問題是圖像處理技術(shù)的一個重要課題[1],本文介紹一種基于硬件攝像技術(shù)的解決方案。
除了一些特殊場合,如天文拍攝,相機拍攝時一般都采用單次曝光。單次曝光在時域中可以看作是一個窄帶濾波器,在和運動圖像進行卷積之后,破壞圖像中非常重要的高頻信息。在通過去卷積恢復(fù)圖像時出現(xiàn)嚴重的振鈴效應(yīng),圖像變得模糊,這就使得通過去卷積方法去模糊成為一個病態(tài)問題。為了解決這一問題,Ramesh Raskar等人提出了一種新穎的方法,即通過編碼控制曝光時間拍攝照片[2]。編碼曝光的一般做法是,通過提前設(shè)定好二進制序列,在圖像傳感器曝光的過程中控制相機快門的開合,這種方法與在曝光時間一直將快門張開的傳統(tǒng)方法有著很大的區(qū)別。這種曝光方式將窄帶濾波器變?yōu)閷拵V波器,其傅里葉變換很好地保留了高頻信息,從而使因去模糊過程引起的病態(tài)問題轉(zhuǎn)換為常態(tài)問題。
圖1(a) 傳統(tǒng)曝光過程示意圖
Fig.1(a) Schematic diagram of traditional exposure
圖1(b) 編碼曝光示意圖
Fig.1(b) Schematic diagram of coded exposure
基于編碼曝光的思想,本文設(shè)計了一款使用CCD圖像傳感器的編碼曝光相機。這種相機是一種基于硬件拍攝技術(shù)的解決方案,其最大特點是具有編碼曝光和去模糊功能,使用單個普通相機清晰拍攝高速運動的物體[3-4],曝光時間可以用不同的編碼控制,去模糊過程簡單。編碼曝光相機是編碼曝光技術(shù)的研究平臺,不同的編碼會取得不同的效果。本文采用一個簡單的去卷積方法達到去模糊效果[5-6]。相機采用連續(xù)可調(diào)的電子快門,通過特定的二進制序列控制相機進行編碼曝光,得到編碼曝光圖像。然后運用此序列來估算點擴散函數(shù)(PSF),對獲得的圖像進行去模糊處理,得到清晰的圖像。
編碼相機系統(tǒng)的兩種曝光過程示意圖如圖1所示,本文的主要任務(wù)就是要控制相機的曝光方式。
編碼相機主要由兩個子系統(tǒng)組成,分別是圖像采集系統(tǒng)和圖像處理系統(tǒng),共同完成相機編碼曝光控制、圖像采集和圖像解碼過程。系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)圖
1.1 圖像采集系統(tǒng)
圖像采集系統(tǒng)大體由三部分組成,分別為CCD圖像傳感器、CCD信號處理器以及時序驅(qū)動器。CCD圖像傳感器選用索尼公司的低噪聲CCD傳感器ICX204。ICX204最大有效分辨力為1 034×779,高幀率模式可達60 f/s,并且具有電子快門,電子快門是實現(xiàn)編碼曝光的關(guān)鍵所在。CCD信號處理器選用AD9949,AD9949主要有兩大功能,一是為像素輸出提供水平寄存器轉(zhuǎn)移時鐘和復(fù)位時鐘;二是能夠接收ICX204產(chǎn)生的模擬圖像信號,通過可變增益放大器放大、相關(guān)雙采樣(CDS)和A/D(模數(shù))轉(zhuǎn)換等操作之后,換算成12位并行數(shù)據(jù)發(fā)送給ARM。將CXD3400N用于傳感器的垂直時序驅(qū)動,CXD3400N能夠?qū)PGA生成的垂直驅(qū)動時序進行電平轉(zhuǎn)換,驅(qū)動CCD圖像傳感器進行電荷轉(zhuǎn)移。
1.2 圖像處理系統(tǒng)
圖像處理系統(tǒng)使用ARM-A9處理器搭載Linux操作系統(tǒng),主要功能是原始圖像采集、去模糊和壓縮存儲。該部分由ARM處理器通過相機接口接收AD9949輸出的數(shù)字圖像數(shù)據(jù),通過去卷積等方法對模糊圖像進行去模糊,得到清晰圖像,用于顯示和網(wǎng)絡(luò)傳輸。
編碼相機的主要工作流程為:系統(tǒng)上電以后,F(xiàn)PGA對AD9949相關(guān)寄存器進行配置,等待AD9949產(chǎn)生CCD所需要的復(fù)位時鐘和水平寄存器轉(zhuǎn)移時鐘,之后由FPGA生成垂直驅(qū)動信號,通過CXD3400N進行電平轉(zhuǎn)換,驅(qū)動CCD進行曝光以及電荷轉(zhuǎn)移。CCD穩(wěn)定工作以后,ARM向FPGA發(fā)送編碼曝光序列和曝光時間以及其他的命令信息,F(xiàn)PGA確認接收命令后修改AD9949的相關(guān)寄存器,并且更新相機的曝光時間并產(chǎn)生曝光序列。FPGA接收AD9949輸出的圖像數(shù)據(jù)之后,進行同步處理,接著將圖像數(shù)據(jù)發(fā)送給ARM處理器,ARM對編碼圖像進行去模糊和存儲。
2.1 驅(qū)動電路
CCD是一類半導體器件,可以把光學影像轉(zhuǎn)換成數(shù)字信號。ICX204是行間轉(zhuǎn)移式圖像傳感器。圖像的產(chǎn)生過程為:首先由基底時鐘(SUB)控制傳感器曝光,感光單元將光信號轉(zhuǎn)換為電荷信號,存儲在垂直移位寄存器中,再由垂直寄存器轉(zhuǎn)移時鐘(V1,V2A,V2,V3)控制將每一行電荷移動到水平寄存器中,然后由水平寄存器轉(zhuǎn)移時鐘(H1,H2)和復(fù)位時鐘(RG)驅(qū)動,在每個時鐘周期輸出一個像素的電信號。只有幾種時鐘配合使用,才能使CCD圖像傳感器正常工作。
ICX204所需垂直寄存器轉(zhuǎn)移時鐘和基底時鐘(SUB)的幾種電平分別為15 V、0 V和-7.5 V,而FPGA輸出的是3.3 V電平,所以FPGA和ICX204AL之間需要使用驅(qū)動器來提供電平轉(zhuǎn)換和電流驅(qū)動。CXD3400N作為一款CCD圖像傳感器垂直時鐘驅(qū)動芯片,支持六通道的高速讀出模式,包括四個三電平驅(qū)動器、兩個兩電平驅(qū)動器以及一個電子快門驅(qū)動器。垂直驅(qū)動電路示意圖如圖3所示。
圖3 垂直驅(qū)動電路
表1 CXD3400N真值表
由于CXD3400N必須輸入兩電平3.3 V TTL信號,而輸出三電平的V2A和V2B信號,所以需要使用時序脈沖XSG2配合XV2A/XV2B產(chǎn)生。其真值見表1。其中:H代表高電平15 V,M代表中間電平0 V,L代表低電平-7.5 V。
水平移位寄存器時鐘和復(fù)位時鐘控制著單個像素的順序輸出,頻率最高達36 MHz,所以時序要求非常嚴格,該時序由AD9949產(chǎn)生,水平驅(qū)動電路如圖4(a)所示。AD9949將輸入時鐘CLK的每個周期等分為48個位置,通過配置寄存器H1CONTROL和RGCONTROL,設(shè)置H1和RG每個時鐘周期上升沿及下降沿位置。其中H1和H3波形相同,H2和H4相同且和H1反相,波形如圖4(b)所示,位置3和4分別為H1的上升沿和下降沿位置。
2.2 信號采集
在驅(qū)動時序的控制下CCD圖像傳感器會在每個時鐘周期輸出一個像素信號,然后通過采樣和A/D轉(zhuǎn)換獲得數(shù)字量。理想的CCD輸出信號如圖5所示,在1時刻復(fù)位時鐘為高電平,清除輸出電荷;在2時刻,復(fù)位時鐘為低電平,H1為高電平,CCD輸出是復(fù)位電壓;在3時刻,復(fù)位時鐘是低電平,H1是低電平,CCD將感光元件轉(zhuǎn)化的電荷輸出。2時刻同3時刻電壓差即是像素的電壓值。
實際情況下CCD輸出的信號不但包含像素信息,還夾雜著各類噪聲。CCD圖像傳感器輸出信號中主要包含以下幾種主要噪聲:轉(zhuǎn)移噪聲、散粒噪聲、暗電流噪聲、復(fù)位噪聲和光子噪聲,其中在輸出結(jié)構(gòu)中生成的復(fù)位噪聲占了很大比重[7-8]。CCD器件兩個相鄰的門脈沖之間輸出的熱雜波電平是相關(guān)的,并沒有顯著的變化,所以可以利用熱雜波的電平相關(guān)性來清除雜波。根據(jù)熱雜波的電平相關(guān)性,我們可以確認,2處的復(fù)位噪聲和3處的復(fù)位噪聲相當,其中3處電壓值為像素電壓和復(fù)位噪聲電壓之和。只要消除噪聲,就能夠獲得比較理想的像素電壓。相關(guān)雙采樣(CDS)是消除復(fù)位噪聲的有效辦法之一。相關(guān)雙采樣于每個像素周期給CCD輸出像素信號進行兩次采樣,提取去除噪聲的像素信息。即在圖中2處進行一次采樣(SHP),在3處進行一次采樣(SHD),兩處采樣值相減即可得到消除復(fù)位噪聲的像素值。而實際上CCD輸出模擬信號往往不如圖中信號這么理想,所以相關(guān)雙采樣的兩個位置SHP和SHD非常重要,選取得當才能得到高質(zhì)量的圖像。
圖4(a) 水平驅(qū)動電路
Fig.4(a) Horizontal drive circuit
圖4(b) 可編程時鐘位置
Fig.4(b) Programmable clock positions
AD9949集成了模擬前端處理器,主要包括可變增益放大器(VGA)、相關(guān)雙采樣器和12位模數(shù)轉(zhuǎn)換器(ADC)。這不僅減少了設(shè)計的復(fù)雜度,而且減少了分立器件的使用,進一步降低整個系統(tǒng)的噪聲。同水平移位寄存器驅(qū)動H1類似,相關(guān)雙采樣的每個周期也分為48個位置,SHP和SHD可以通過設(shè)置寄存器SAMPCONTROL來配置。在圖5中,SHP位于2處,SHD位于3處,就是像素值。再通過VGA放大,A/D轉(zhuǎn)換等模塊處理,得到各個像素值的數(shù)字量。經(jīng)過ADC轉(zhuǎn)換之后的數(shù)據(jù)取高8位,通過相機接口(CAMIF)采集到ARM處理器中進行圖像去模糊處理。
圖5 相關(guān)雙采樣
3.1 編碼曝光設(shè)計
編碼曝光相機是編碼曝光技術(shù)的研究平臺,通過設(shè)置不同的二進制編碼序列控制相機曝光時間,若要保留圖片的高頻信息,則必須使用寬帶二進制碼??蛇x用的序列包括:Walsh-Hadamard碼、最大長度序列和MURA碼等。本文選用一種近似最優(yōu)編碼作為默認編碼序列:1111111111111000010011101000111。用戶也可以通過相機中的應(yīng)用設(shè)置程序設(shè)置自定義編碼序列。
傳統(tǒng)連續(xù)曝光時序如圖6(a)所示,從SUB信號下降沿到V2A/V2B信號上升沿為一幅圖像曝光時間。這種曝光方式會使圖片損失高頻分量,導致去模糊圖像產(chǎn)生振鈴效應(yīng)等一些負面效果。編碼曝光相機重新設(shè)計了相機的曝光時間。在曝光時間確定的情況下,將其等分為個時間片,則單個時間片的時間為。時間片上快門的打開與閉合與長度為的二進制序列的值相對應(yīng)。如圖6(b)所示,從第行開始的三行對應(yīng)的編碼曝光序列為“101”,其中“1”表示此行時間內(nèi)曝光,“0”表示此行時間內(nèi)不曝光。每次曝光產(chǎn)生的電荷全部轉(zhuǎn)移到垂直移位寄存器中,然后按照傳感器所需時序,將垂直移位寄存器中累積的電荷逐個輸出。這種曝光方式就保留了圖像中的高頻分量,使用最簡單的反卷積方法就足以得到高質(zhì)量的圖像。
3.2 圖像解碼
圖6(a) 常規(guī)曝光時序
Fig.6(a) Traditional exposure timing
圖6(b) 編碼曝光時序
Fig.6(b) Coded exposure timing
相機和物體之間的相對運動會導致運動模糊,在傳統(tǒng)的單曝光照片中,曝光時間可以看作是窄帶濾波器,使圖像損失高頻信息,卷積去模糊成為一個病態(tài)問題。使用編碼曝光替代單次曝光,則在模糊圖像中保留了高頻信息,通過卷積去模糊成為一個常態(tài)問題。本文的去模糊是使用最簡單的反卷積方法,其模型如下:
這里使用線性代數(shù)描述卷積,其中表示模糊圖像,表示去模糊圖像,表示模糊矩陣,用來描述輸入圖像和點擴散函數(shù)(PSF)的卷積,表示由噪聲、量化等導致的不確定量,可忽略。
運動模糊的產(chǎn)生就是時間向空間的投射,如圖7所示,在秒內(nèi)的運動導致個像素模糊。因此,在一個時間片內(nèi)的運動會導致/個像素的模糊。如果點擴散函數(shù)(PSF)的長度為,物體在運動方向上的長度為,則總共的模糊長度為(1)。解碼的目標就是從觀測到的個像素中找到個像素的估計。
圖7 一維模糊過程
模糊矩陣可以用如下方法得到。模糊矩陣中第一列為長度為的PSF向量和-1個0。之后各列由其前面那列整體移動一位獲得。解碼步驟如下:
1) 獲取編碼序列長度和模糊長度;
2) 根據(jù)因子擴大(或縮小)模糊圖像;
3) 計算前景的模糊矩陣f;
4) 計算背景向量;
5) 由前景矩陣和背景向量得到模糊矩陣;
6) 根據(jù)公式等公式計算去模糊圖像;
7) 根據(jù)模糊長度調(diào)整圖像大小。
3.3 解碼軟件設(shè)計
如前所述,通過控制CCD圖像傳感器曝光時間獲取的圖像使用ARM處理器上的Linux系統(tǒng)進行解碼和保存。AD9949輸出的像素數(shù)據(jù)高8位通過相機接口(CAMIF)連接到ARM處理器,在ARM內(nèi)部由FIMC控制器控制圖像獲取。Linux以其開源、穩(wěn)定、良好的移植性、強大的網(wǎng)絡(luò)功能、對各類文件系統(tǒng)全面的支持等特點而被廣泛應(yīng)用于各類嵌入式設(shè)備的開發(fā)中,包括視頻監(jiān)控以及視頻通信設(shè)備等。V4L2作為Linux系統(tǒng)下的一個通用的視頻架構(gòu)運用到很多視頻設(shè)備中。本文中的Linux系統(tǒng)的圖像采集就是采用V4L2框架來實現(xiàn),然后通過去模糊算法進行圖像解碼,解碼軟件的實現(xiàn)流程圖如圖8所示。
圖8 圖像解碼流程圖
實驗方法:相機固定置于桌面之上,設(shè)置好曝光編碼序列等參數(shù)之后,調(diào)整視野范圍,運動物體在鏡頭前方快速通過,當運動物體進入鏡頭視野之后,相機開始拍攝。拍攝得到的圖像在ARM中進行去模糊獲得清晰圖像。實驗中將編碼長度定為31位。該長度既保證運動目標的信息能夠在編碼過程中能夠被盡量多的保存,又保證了編碼拍攝過程的實時性。在實驗中,使用目前得到的最佳編碼碼型“1111111111111000010011101000111”,其中編碼中的“1”代表快門開啟,“0”代表快門關(guān)閉。實驗結(jié)果如圖9所示。圖9(a)是通過傳統(tǒng)相機拍攝和去模糊的圖像,從圖中可以看出用傳統(tǒng)方式拍攝運動物體并去模糊得到的圖像,雖然能大致看出物體細節(jié),但是振鈴效應(yīng)嚴重,恢復(fù)結(jié)果用眼睛觀察效果非常差。圖9(b)是用編碼相機拍攝方法拍攝和去模糊的圖像,去模糊處理后可以看到圖片中的信息非常清晰,細節(jié)豐富,圖像質(zhì)量非常高,和圖9(a)相比,效果高出很多。
圖9(a) 傳統(tǒng)相機拍攝和去模糊圖像
Fig.9(a) Traditional motion blur image and deblurred image
圖9(b) 編碼相機拍攝和去模糊圖像
Fig.9(b) Coded exposure motion blur image and deblurred image
[1] Giacomo B,Alessandro F. Modeling the performance of image restoration from motion blur [J]. IEEE Transactions on Image Processing(S1057-7149),2012,21(8):3502-3517.
[2] Raskar R,Agrawal A,Tumblin J. Coded exposure photography:motion deblurring using fluttered shutter [J]. Acm Transactions on Graphics(S0730-0301),2006,25(3):795-804.
[3] Agrawal A,Raskar R. Resolving Objects at Higher Resolution from a Single Motion-blurred Image [C]// IEEE Conference on Computer Vision and Pattern Recognition,Minneapolis, USA,June 18,2007:1-8.
[4] 田宇. 單幅運動模糊圖像去模糊研究 [D]. 長春:吉林大學,2011:4-24.
TIAN Yu. Research on a Single Image Motion Deblurring [D]. Changchun:Jilin University,2011:4-24.
[5] Jansson P A,Richardson M. Deconvolution of Images and Spectra,2nd Edition [J]. Optical Engineering(S0091-3286),1997,36(11):3224-3225.
[6] Yitzhaky Y,Mor I,Lantzman A,. Direct method for restoration of motion-blurred images [J]. Josa A(S1084-7529),1998,15(6):1512-1519.
[7] 許秀貞,李自田,薛利軍. CCD噪聲分析及處理技術(shù) [J]. 紅外與激光工程,2004,33(4):343-346.
XU Xiuzhen,LI Zitian,XUE Lijun. Analysis and processing of CCD noise [J].Infrared and Laser Engineering,2004,33(4):343-346.
[8] 李云飛,司國良,郭永飛. 科學級CCD相機的噪聲分析及處理技術(shù) [J]. 光學精密工程,2005,13(增):158-163.
LI Yunfei,SI Guoliang,GUO Yongfei. Noise analyzing and processing for scientific grade CCD camera[J]. Optics and Precision Engineering,2005,13(Suppl):158-163.
Design and Implementation of Coded Exposure Camera
LI Hong,LI Mingwei
( Faculty of Electronic Information and Electrical Engineering, Dalian University of Technology, Dalian 116024, Liaoning, China)
A coded exposure camera based on the technology of hardware camera is proposed to get the unambiguous image of fast moving objects. A binary code sequence is pre-set in the sequential circuits of CCD to control the pattern of exposure and the imaging sensor in CCD is driven by FPGA. The deconvolution algorithm is applied in a microprocessor of ARM to deblur the image in the next step. The high frequency information could be preserved by using the code sequence to control the exposure pattern. Therefore, a high quality image could be obtained thanks to the fact that the deconvolution algorithm of deblurring could be converted from an ill-posed problem to a well-posed one. The experiments show that the images taken by the coded exposure camera are clearer and better than the images taken by traditional camera.
photography; coded exposure; pattern of exposure; ARM; FPGA
1003-501X(2016)09-0072-06
TB852.1; TB86
A
10.3969/j.issn.1003-501X.2016.09.013
2015-12-15;
2016-03-10
國家科技支撐計劃子課題(2013BAK02B04-05)
李紅(1990-),男(漢族),安徽亳州人。碩士研究生,主要研究工作是嵌入式圖像技術(shù)研究。E-mail: 1134842026@qq.com。