摘 要: 基于Xilinx公司的Spartan-IIE系列FPGA XC2S300E-6-PQ208C完成了一種聚焦馬達(dá)驅(qū)動(dòng)及自動(dòng)聚焦" title="自動(dòng)聚焦" target="_blank">自動(dòng)聚焦的完整設(shè)計(jì),。該設(shè)計(jì)接收CCD圖像傳感器套件輸出的圖像信號(hào),采用一種改進(jìn)的灰度差分" title="差分" target="_blank">差分法作為聚焦評(píng)價(jià)函數(shù),,即將一場(chǎng)圖像的所有像素的亮度值與周?chē)袼氐牧炼戎挡畹慕^對(duì)值的和作為聚焦評(píng)價(jià)函數(shù),,根據(jù)相鄰?fù)瑘?chǎng)的聚焦評(píng)價(jià)函數(shù)的比較結(jié)果,配合相應(yīng)的搜索策略來(lái)控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向,,實(shí)現(xiàn)圖像的自動(dòng)聚焦,。實(shí)際實(shí)現(xiàn)的聚焦效果優(yōu)于改進(jìn)前的聚焦算法。
關(guān)鍵詞: FPGA,;步進(jìn)電機(jī),;自動(dòng)聚焦,;聚焦評(píng)價(jià)函數(shù)
自動(dòng)聚焦是現(xiàn)代光學(xué)成像系統(tǒng)必不可少的關(guān)鍵技術(shù)。隨著科技的迅速發(fā)展,,數(shù)字成像系統(tǒng)的自動(dòng)聚焦問(wèn)題受到人們的普遍關(guān)注,,已廣泛應(yīng)用于數(shù)碼相機(jī)、高分辨率監(jiān)控?cái)z像機(jī)和數(shù)字視頻展臺(tái)等產(chǎn)品,,且其產(chǎn)品有著廣泛的應(yīng)用領(lǐng)域,,如教育、銀行,、煤礦,、交通、醫(yī)療等監(jiān)控領(lǐng)域[1],。
目前自動(dòng)聚焦技術(shù)相對(duì)比較成熟,,自動(dòng)聚焦芯片種類(lèi)也比較多,但其都是基于DSP實(shí)現(xiàn)的,,基于FPGA的自動(dòng)聚焦芯片還沒(méi)有出現(xiàn),。本文采用一種改進(jìn)的灰度差分法作為焦距評(píng)價(jià)函數(shù),用FPGA實(shí)現(xiàn)自動(dòng)聚焦功能,。
目前市面上聚焦馬達(dá)步進(jìn)電機(jī)的控制多是以單片機(jī)或DSP加步進(jìn)電機(jī)驅(qū)動(dòng)器的方式實(shí)現(xiàn),。本文采用FPGA直接輸出適用于步進(jìn)電機(jī)的角位移信號(hào)驅(qū)動(dòng)聚焦馬達(dá),這樣可以在一片芯片上完成自動(dòng)聚焦的全部控制,。該方案有很強(qiáng)的價(jià)格優(yōu)勢(shì),,且利于系統(tǒng)的功能擴(kuò)展,對(duì)于提高系統(tǒng)的集成度和穩(wěn)定性,、減小產(chǎn)品的體積和成本很有意義,。
1 聚焦控制系統(tǒng)
聚焦控制系統(tǒng)硬件框圖如圖1所示。
圖像傳感器輸出像素時(shí)鐘,、行場(chǎng)參考信號(hào)和圖像亮度信號(hào)到FPGA,,F(xiàn)PGA在輸入像素時(shí)鐘的同步下,通過(guò)對(duì)輸入圖像亮度信號(hào)的處理,,采用一種改進(jìn)的灰度差分法作為聚焦評(píng)價(jià)函數(shù),,判斷出相鄰兩場(chǎng)的聚焦評(píng)價(jià)函數(shù)值的比較結(jié)果,然后根據(jù)一定的搜索策略來(lái)控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng),,從而實(shí)現(xiàn)自動(dòng)聚焦,。
系統(tǒng)設(shè)計(jì)采用模塊化設(shè)計(jì)原則,按照現(xiàn)代EDA工程常用的“自頂向下”的設(shè)計(jì)思想,,進(jìn)行功能分離并按層次設(shè)計(jì),,用VHDL語(yǔ)言實(shí)現(xiàn)每個(gè)模塊的功能[2]。該設(shè)計(jì)主要由自動(dòng)聚焦算法模塊,、搜索策略模塊,、步進(jìn)電機(jī)驅(qū)動(dòng)模塊組成。
2 自動(dòng)聚焦算法
2.1 一種改進(jìn)的自動(dòng)聚焦算法
判斷圖像是否聚焦與圖像的高頻成分有關(guān),,當(dāng)完全聚焦時(shí),,圖像清晰,包含邊緣信息的高頻分量最多,。通常,,判斷圖像聚焦與否是通過(guò)焦距評(píng)價(jià)函數(shù)衡量的。常用的焦距評(píng)價(jià)函數(shù)有以下幾種:高頻分量法,、平滑法,、閾值積分法、灰度差分法,、拉普拉斯像能函數(shù)等[3],。
灰度差分法是利用圖像的相鄰像素(左側(cè)及上側(cè)像素)差的絕對(duì)值之和作為焦距評(píng)價(jià)函數(shù),即:
其中,,f(x,,y)表示第x行、第y列像素的亮度值,,像素的相對(duì)位置如圖2所示,。實(shí)驗(yàn)中對(duì)于亮度比較均勻的圖像,其聚焦效果不理想,,為此本文提出一種改進(jìn)的灰度差分法作為焦距評(píng)價(jià)函數(shù),。其算法描述如下:
式(2)中選取了鄰近的四個(gè)像素(左側(cè)、左上側(cè),、上側(cè)及右上側(cè)像素)作比較,,增大了焦距評(píng)價(jià)函數(shù)的絕對(duì)值,搜索曲線尖銳,,容易找到最佳位置,。圖3是以簡(jiǎn)單的文本圖像(一張白紙上有幾個(gè)字)為例,在聚焦點(diǎn)附近測(cè)得20組聚焦值繪制的聚焦評(píng)價(jià)函數(shù)曲線,。
可以看出,,改進(jìn)算法后在聚焦點(diǎn)附近曲線尖銳,與相鄰兩個(gè)聚焦位置的亮度差更大,。通過(guò)實(shí)驗(yàn),,在同樣的搜索策略下,改進(jìn)后的算法比改進(jìn)前更能適用于多種畫(huà)面,,尤其是亮度比較均勻的圖像,,有著更高的精確性。
2.2 搜索策略算法
聚焦評(píng)價(jià)函數(shù)F與鏡頭位置關(guān)系曲線如圖4所示,。當(dāng)聚焦評(píng)價(jià)函數(shù)值F最大時(shí),,圖像最清晰,,所以通過(guò)相鄰兩場(chǎng)的聚焦評(píng)價(jià)函數(shù)值的比較,即可判斷聚焦馬達(dá)的驅(qū)動(dòng)方向[4],。
系統(tǒng)的搜索策略算法設(shè)計(jì)中,,電機(jī)驅(qū)動(dòng)鏡頭從初始位置出發(fā)先正轉(zhuǎn)一步,并根據(jù)聚焦算法模塊的輸出OUT進(jìn)行判決,。當(dāng)OUT=1,,表示后一場(chǎng)圖像比前一場(chǎng)清楚,搜索策略模塊則驅(qū)動(dòng)步進(jìn)電機(jī)帶動(dòng)鏡頭向前走一步,,繼續(xù)比較下一個(gè)位置前后兩場(chǎng)圖像的清晰度,;若OUT輸出仍為1,則繼續(xù)向前移動(dòng),,直到OUT輸出為0,,則搜索策略模塊驅(qū)動(dòng)步進(jìn)電機(jī)向反方向倒退一步,此時(shí)鏡頭所處的位置為圖像最清楚的地方,,即完成自動(dòng)聚焦,。
3 自動(dòng)聚焦算法的硬件實(shí)現(xiàn)
3.1 改進(jìn)的聚焦算法的FPGA設(shè)計(jì)
該模塊的FPGA設(shè)計(jì)內(nèi)部結(jié)構(gòu)如圖5所示。
RAM的大小為1 024×8bit,,可以存放一行800個(gè)數(shù)據(jù),。讀寫(xiě)選擇模塊將一幀圖像的第一行數(shù)據(jù)寫(xiě)入RAM1,第二行數(shù)據(jù)寫(xiě)入RAM2,,第三行數(shù)據(jù)寫(xiě)入RAM3,,第四行數(shù)據(jù)寫(xiě)入RAM4,同時(shí)將RAM1,、RAM2,、RAM3的數(shù)據(jù)讀出到聚焦算法計(jì)算模塊中;第五行數(shù)據(jù)則寫(xiě)入RAM1,,同時(shí)將RAM2,、RAM3、RAM4的數(shù)據(jù)讀出,。依此循環(huán),。聚焦算法計(jì)算模塊將每次接收的數(shù)據(jù)根據(jù)聚焦算法進(jìn)行計(jì)算,當(dāng)前這幀計(jì)算的結(jié)果與前一幀的計(jì)算值相比較,,將比較結(jié)果輸出到搜索策略模塊,。若當(dāng)前圖像的聚焦函數(shù)值大于前相同場(chǎng)的聚焦函數(shù)值,可表明當(dāng)前圖像比前面相同場(chǎng)清楚,,則輸出結(jié)果OUT為1,,反之相反。
3.2 步進(jìn)電機(jī)驅(qū)動(dòng)的實(shí)現(xiàn)
系統(tǒng)選用兩相雙極性步進(jìn)電機(jī),,其勵(lì)磁" title="勵(lì)磁" target="_blank">勵(lì)磁方式有全部勵(lì)磁和半步勵(lì)磁兩種方式,。其中全步勵(lì)磁又分為一相勵(lì)磁和二相勵(lì)磁,。半步勵(lì)磁又稱(chēng)為一二相勵(lì)磁。本文中變焦電機(jī)采用的是二相勵(lì)磁方式,,步距角18°,,步長(zhǎng)0.02mm。其勵(lì)磁方式如表1所示,,其中A、-A分別代表A相繞組正端和負(fù)端功率橋控制信號(hào),,B,、-B分別代表B相繞組正端和負(fù)端功率橋控制信號(hào)[5]。
表1中任意一個(gè)狀態(tài)間的變化,,步進(jìn)電機(jī)都會(huì)轉(zhuǎn)動(dòng)一個(gè)步距角,,即移動(dòng)一步。所以可以通過(guò)發(fā)狀態(tài)間變化的個(gè)數(shù)來(lái)精確地控制步進(jìn)電機(jī)移動(dòng)的步數(shù),。而且按照如表1所示的脈沖順序從左向右變化實(shí)現(xiàn)步進(jìn)電機(jī)的反轉(zhuǎn),,反之實(shí)現(xiàn)正轉(zhuǎn)。
據(jù)此可以在FPGA內(nèi)部設(shè)計(jì)四個(gè)一步模塊,,分別實(shí)現(xiàn)1-2,、2-3、3-4,、4-1四個(gè)狀態(tài)間的變化,,即實(shí)現(xiàn)步進(jìn)電機(jī)旋轉(zhuǎn)最基本的四步。通過(guò)使能模塊對(duì)四個(gè)一步模塊順序進(jìn)行使能,,即可實(shí)現(xiàn)步進(jìn)電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),。該模塊的內(nèi)部結(jié)構(gòu)如圖6所示。
此外由于FPGA輸出脈沖信號(hào)的驅(qū)動(dòng)電平和電流與步進(jìn)電機(jī)的驅(qū)動(dòng)要求不匹配,,因此FPGA輸出的脈沖信號(hào)需要先經(jīng)過(guò)放大再加載到步進(jìn)電機(jī)上,。
具體的放大電路設(shè)計(jì)如圖7所示。由NPN,、PNP三極管組成推挽電路實(shí)現(xiàn)對(duì)輸入信號(hào)電流的放大,。其中小寫(xiě)字母為FPGA的輸出信號(hào),大寫(xiě)字母為經(jīng)過(guò)放大后輸出到步進(jìn)電機(jī)的驅(qū)動(dòng)信號(hào),。
本文所述功能采用VHDL描述,,并在Xilinx公司Spartan2E系列FPGA XC2S300E上實(shí)現(xiàn)。另外,,通過(guò)示波器測(cè)得步進(jìn)電機(jī)驅(qū)動(dòng)模塊的驅(qū)動(dòng)波形如圖8所示,。由上至下輸出的四路信號(hào)分別對(duì)應(yīng)表1中的A+、A-,、B+,、B-,,其輸出勵(lì)磁方式也與表1相吻合。
本文實(shí)現(xiàn)的各功能模塊既可應(yīng)用于本系統(tǒng)中,,也可作為獨(dú)立的,、擁有自主知識(shí)產(chǎn)權(quán)的IP Core應(yīng)用于其他系統(tǒng)中。
參考文獻(xiàn)
[1] 任四剛,,謝利利.自動(dòng)聚焦自圖像測(cè)量中的應(yīng)用[J].重慶郵電學(xué)院學(xué)報(bào),,2002,14(3).
[2] 徐欣,,于紅旗.基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,,2005.
[3] 李奇,馮華君.?dāng)?shù)字圖像清晰度評(píng)價(jià)函數(shù)研究[J].光子學(xué)報(bào),,2002,,31(6):736-738.
[4] 劉義鵬.顯微鏡自動(dòng)對(duì)焦系統(tǒng)設(shè)計(jì)與應(yīng)用.杭州:浙江大學(xué)碩士學(xué)位論文,2005.
[5] 劉寶廷,,程樹(shù)康.步進(jìn)電機(jī)及其驅(qū)動(dòng)控制系統(tǒng)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,,2003.
[6] E-Ho Lee,Kum,,Byung-Deok Nam,,et al.Implementation of passive automatic focusing algorithm for digital still camera.IEEE Trans.On Consumer Electronics,2006.