王 曄, 周志煒, 王元偉
(中國電子科技集團(tuán)公司 第四十九研究所,黑龍江 哈爾濱 150001)
基于FPGA的自準(zhǔn)直系統(tǒng)數(shù)據(jù)處理技術(shù)
王 曄, 周志煒, 王元偉
(中國電子科技集團(tuán)公司 第四十九研究所,黑龍江 哈爾濱 150001)
提出一種基于現(xiàn)場可編程門陣列(FPGA)的CCD自準(zhǔn)直測角系統(tǒng)。以FPGA作為系統(tǒng)處理核心;以自適應(yīng)調(diào)節(jié)模塊為CCD驅(qū)動發(fā)生器提供準(zhǔn)確的波形時序;采用邊緣檢測算法獲得圖像的像元級邊界;通過最小二乘擬合算法計(jì)算得到光斑圓心位置;利用VHDL語言以及MAX+ plusII軟件完成了系統(tǒng)設(shè)計(jì)。系統(tǒng)測試和實(shí)驗(yàn)表明:所設(shè)計(jì)的片上系統(tǒng)具有高精度、高集成度的特點(diǎn)。
CCD; 現(xiàn)場可編程門陣列; 亞像元細(xì)分; 邊緣檢測; 片上系統(tǒng)
光電自準(zhǔn)直儀被廣泛應(yīng)用于角度測量、導(dǎo)軌的平直度和平行度測量、臺面的平整度測量、精密定位、自動角度定位環(huán)集成等方面,是機(jī)械制造、造船、航空航天、計(jì)量測試、科學(xué)研究等部門必備的常規(guī)測量儀器。特別是在精密、超精密定位方面,有著不可替代的作用。
如今,對光學(xué)自準(zhǔn)直系統(tǒng)的動態(tài)測試性能要求越來越高,尤其是響應(yīng)速度和精度等,是衡量整套系統(tǒng)性能高低的最重要的指標(biāo)。與此同時,為適應(yīng)不同使用環(huán)境的需求,光學(xué)自準(zhǔn)直儀系統(tǒng)也必然要向高集成度和小尺寸化方向發(fā)展[1]。
本文提出了一種基于現(xiàn)場可編程門陣列(FPGA)的自準(zhǔn)直測角系統(tǒng),使用VHDL語言對系統(tǒng)硬件進(jìn)行了行為描述,針對Altera公司Cyclone II系列的可編程邏輯器件EP2C70進(jìn)行綜合、優(yōu)化、編程。在一片F(xiàn)PGA上得以實(shí)現(xiàn)了CCD時序驅(qū)動、光積分時間自動調(diào)節(jié)、亞像元邊緣檢測以及光斑圓心擬合算法等功能,為CCD自準(zhǔn)直測量系統(tǒng)提供高速、精確以及并行處理數(shù)據(jù)的能力。在此基礎(chǔ)上,使自準(zhǔn)直系統(tǒng)具有高速、高集成、高精度,高可靠性等特點(diǎn)。
沿自準(zhǔn)直光學(xué)系統(tǒng)主光軸出射的平行光經(jīng)平面鏡反射后成像于CCD靶面。若平面鏡垂直于主光軸,則反射光線按原路返回,此時CCD靶面上對應(yīng)的像點(diǎn)圓心標(biāo)定為系統(tǒng)電零位;當(dāng)平面反射鏡法線方向與準(zhǔn)直光學(xué)系統(tǒng)的主光軸所成為θ時,則反射光線經(jīng)準(zhǔn)直物鏡后與主光軸成2θ夾角,該光線在CCD靶面上所成像點(diǎn)中心與系統(tǒng)電零位的偏移量為ΔL,如圖1所示。
圖1 自準(zhǔn)直測量原理
根據(jù)幾何光學(xué)的基本原理可以得出
ΔL=f′tan2θ
(1)
式中f′為準(zhǔn)直光學(xué)系統(tǒng)的像方焦距,當(dāng)θ很小時,式(1)
可化簡為
ΔL=2θf′
(2)
此時,像點(diǎn)相對于電零位的偏移量為ΔL,其對應(yīng)的平面鏡法線與主光軸的夾角θ為
(3)
由此可見,只要精確的提取反射光線像點(diǎn)中心的位置,即可獲得平面鏡法線方向相對與準(zhǔn)直光學(xué)系統(tǒng)主光軸的夾角。
系統(tǒng)采用模塊化設(shè)計(jì),設(shè)計(jì)出一個小型片上系統(tǒng)。整個系統(tǒng)由4個重要模塊組成:光積分時間自適應(yīng)調(diào)節(jié)模塊、線陣CCD驅(qū)動時序發(fā)生器模塊、像素檢測模塊以及圓心擬合算法模塊。
其中,驅(qū)動時序發(fā)生器控制CCD圖像傳感器的各路時序信號,使之能夠正常工作;光積分時間自適應(yīng)調(diào)節(jié)模塊則根據(jù)CCD的輸出信號幅值,自動調(diào)節(jié)時序信號序列;像素檢測模塊和圓心擬合算法模塊對數(shù)據(jù)進(jìn)行處理及優(yōu)化,最終得到符合精度要求的角度數(shù)據(jù)。系統(tǒng)功能結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)功能框圖
硬件上,本文使用的FPGA器件EP2C70擁有68 416個邏輯單元,1.1Mbit的嵌入存儲器、支持從4 608~68 416LE的集成度;包含內(nèi)部嵌入式乘法器,支持DSP運(yùn)算:先進(jìn)的I/O,支持PCI,DDR和DDR2等多種接口;全局時鐘管理及嵌入式鎖相環(huán);支持AlteraIPCore及NiosII嵌入式處理器。
2.1 光積分時間自適應(yīng)調(diào)節(jié)模塊
為保證自準(zhǔn)直角度測量的精度,CCD的輸出信號在不失真的前提下應(yīng)具有較高的信噪比。而對于光積分時間固定的CCD,光照強(qiáng)度過強(qiáng)可能導(dǎo)致其輸出信號嚴(yán)重失真[2];光照過弱,則輸出信號幅度過小,信噪比較低。本模塊的主要功能是根據(jù)CCD輸出信號幅值自動調(diào)節(jié)光積分時間,并調(diào)節(jié)驅(qū)動時序發(fā)生器,使其提供滿足各項(xiàng)時序要求的驅(qū)動脈沖序列,從而對輸出信號的信噪比進(jìn)行優(yōu)化。
光積分時間的控制是建立在線性范圍內(nèi),且光照強(qiáng)度為定值的情況下,CCD光積分時間和輸出信號幅值成正比,這一特性的基礎(chǔ)之上的。當(dāng)CCD高速工作時,通常入射光強(qiáng)的變化速率相對于CCD的工作頻率可視為較緩慢的連續(xù)變化,所以可對這一變化進(jìn)行積分處理,完成對光積分時間的估算。
CCD所需的各路信號均通過控制光積分時間,對輸入時鐘進(jìn)行計(jì)數(shù)、分頻等手段來產(chǎn)生。當(dāng)系統(tǒng)計(jì)數(shù)器的值達(dá)到光積分時間后,各路信號復(fù)位并接收新的積分時間,開始產(chǎn)生新的一幀信號,程序流程圖如圖3所示。
圖3 光積分時間自適應(yīng)模塊程序流程圖
2.2 CCD驅(qū)動時序發(fā)生器
本文采用的TCDl501D是一種高靈敏度、低暗電流、內(nèi)置采樣保持的5 000像元線陣CCD圖像傳感器。其正常工作需要使用6路驅(qū)動信號,包括轉(zhuǎn)移脈沖SH、復(fù)位脈沖RS、鉗位脈沖CP、采樣保持脈沖SP及移位脈沖Φ1,Φ2等,在這些驅(qū)動信號的驅(qū)動下,CCD才能正常工作。
FPGA芯片在外部晶振的作用下,持續(xù)穩(wěn)定的輸出驅(qū)動信號,經(jīng)過電平轉(zhuǎn)換電路后,送入到TCDl501D的相應(yīng)接口中。在其正常工作后,系統(tǒng)對其輸出的模擬信號進(jìn)行A/D轉(zhuǎn)換,通過FIFO模塊傳送到FPGA中進(jìn)行存儲和處理。其程序流程圖如圖4所示。
圖4 CCD驅(qū)動程序流程圖
轉(zhuǎn)移脈沖SH的一個周期應(yīng)自行設(shè)定的N個空操作信號,空操作的個數(shù)自行設(shè)定,由其決定光積分的時間,即CCD輸出信號的大小。周期越長,CCD像元積累電荷越多,信號越強(qiáng),因此,在照度高時,可以將其周期設(shè)置稍短;反之,周期設(shè)長[3]。
2.3 像素邊緣檢測
為了進(jìn)一步提高激光CCD自準(zhǔn)直儀的定位精度,兼顧定位算法的實(shí)時性,本文采用多項(xiàng)式插值亞像素邊緣定位算法,對圖像邊緣進(jìn)行快速像素邊緣檢測[4]。
(4)
(5)
令d?(x)/dx=0和d?(y)/dy=0,經(jīng)推導(dǎo)求得邊緣點(diǎn)(Xi,Yi)的亞像素位置(XJ,YJ)為
(6)
根據(jù)誤差理論可得該算法的邊緣定位精度,計(jì)算可得X和Y方向上的定位偏差dXJ和dYJ為
(7)
2.4 光斑圓心擬合算法
經(jīng)過像素邊緣檢測,可以得到位于輪廓上的n個像素點(diǎn),接下來需要在此基礎(chǔ)上,精確定位出圓心位置。本文采用的光斑圓心算法根據(jù)最小二乘原理(殘差平方和最小),用圓來逼近激光光斑輪廓實(shí)現(xiàn)擬合[6]。
圓的方程為
(x+a)2+(y-b)2=r2
(8)
取殘差為
εi=(xi-a)2+(yi-b)2-r2
(9)
式中 i∈E,E為所有邊界像素點(diǎn)的集合;(xi,yi)為圖像邊界像素點(diǎn)坐標(biāo)。
殘差平方和函數(shù)為
(10)
根據(jù)最小二乘原理,應(yīng)有
(11)
整理和消減后可得到參數(shù)a,b的表達(dá)式,結(jié)合公式得到圓參數(shù)為
(12)
其中各參數(shù)可用下式表示
(13)
這種光斑圓心擬合算法定位精度高、重復(fù)性好,而且僅對圓輪廓的邊界點(diǎn)循環(huán)一次就可計(jì)算出各參量,沒有復(fù)雜的方根運(yùn)算,因此運(yùn)算速度很快。
實(shí)驗(yàn)中,CCD采集到的圓目標(biāo)圖像和采用邊緣提取算法得到標(biāo)準(zhǔn)圓的邊緣圖像如圖5所示。首先采用像素邊緣檢測算法進(jìn)行亞像素級定位,然后進(jìn)行圓輪廓圓心的重復(fù)定位,最后得到的計(jì)算結(jié)果如表1所示。
圖5 標(biāo)準(zhǔn)圖像與經(jīng)邊緣檢測算法后的理論邊緣圖像
由計(jì)算結(jié)果可見,本文采用的算法計(jì)算簡單,重復(fù)性好且定位精度高,對實(shí)驗(yàn)中采集到的圓目標(biāo)輪廓圓心的重復(fù)定位不確定度優(yōu)于0.13像素,實(shí)現(xiàn)了圓輪廓的亞像素級定位。
本文設(shè)計(jì)的CCD自準(zhǔn)直系統(tǒng)的信號處理電路部分,其絕大部分功能都集中在一片F(xiàn)PGA芯片內(nèi)實(shí)現(xiàn),實(shí)現(xiàn)了高集成度的設(shè)計(jì)初衷。
表1 針對目標(biāo)圖像的圓心定位結(jié)果
序號圓心位置/像素序號圓心位置/像素1(585.31,613.82)6(585.36,613.69)2(585.25,613.85)7(585.26,613.74)3(585.27,613.81)8(585.29,613.78)4(585.33,613.79)9(585.34,613.80)5(585.29,613.73)10 (585.38,613.75)圓心位置不確定度/像素X軸:0.134,Y軸:0.129
[1] 侯伯亨,顧 新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,1999:134-175.
[2] 羅 鈞,萬文通,盧嘉江.光電測量二維微角位移的新方法研究與實(shí)現(xiàn) [J].傳感器與微系統(tǒng),2008,27(8):51-53.
[3] 林德輝,謝 楠.基于CPLD的線陣CCD—TCD1501D驅(qū)動時序的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(11):41-43.
[4] 陳 偉,段發(fā)階,董宇青.基于DSP+FPGA分層圖像處理技術(shù)的智能相機(jī)設(shè)計(jì)[J].傳感器與微系統(tǒng),2010,29(12):111-113.
[5] 吳曉波.圖像邊緣特征分析[J].光學(xué)精密工程,1999,7(1):59-63.
[6] 李佳列,丁國清.采用CCD的非接觸測量中提高精度的一種方法[J].光學(xué)精密工程,2002,10(3):281-284.
Research on data processing technology based on FPGA for auto collimating system
WANG Ye, ZHOU Zhi-wei, WANG Yuan-wei
(The 49th Research Institute,China Electronics Technology Group Corporation,Harbin 150001,China)
A CCD auto collimation angle measuring system based on field programmable gate array(FPGA)is proposed. In this system,FPGA is used as processor core of system;using self-adaptive module to provide accurate waveform timing for CCD driving generator;edge detection algorithm is utilized to obtain pixel level edge of image;by using the least square fitting algorithm,circle centre position of facula is calculated;system design is completed with VHDL and MAX+ plusII software.System testing and experiment prove that the system has characteristics of high precision and high integration.
CCD; field programmable gate array(FPGA); sub-pixel subdivision; edge detection; system on chip(SoC)
10.13873/J.1000—9787(2017)02—0046—03
2016—11—28
TP 212
A
1000—9787(2017)02—0046—03