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