李 澤,朱新澤,譚朗海,張 浩,曾亞光,周月霞
(佛山科學技術學院 自動化學院,廣東 佛山 528200)
光學相干層析成像(OCT)是近10年迅速發(fā)展起來的一種成像技術,能夠對包括生物組織在內的強散射介質進行深度成像[1]。其成像基礎在于振鏡掃描,OCT系統(tǒng)通過控制振鏡對物體進行掃描,從而得到物體的二維或三維結構圖像。
為了獲得更高質量的圖像,通過采用STM32系列單片機精確控制振鏡掃描,模板匹配算法實時匹配目標圖像,實現(xiàn)良好的控制效果,完成對物體的實時掃描成像。
振鏡掃描跟蹤系統(tǒng)由上位機、單片機控制電路、振鏡掃描系統(tǒng)、工業(yè)相機組成,其結構示意圖如圖1所示。系統(tǒng)啟動后,一方面上位機通過與單片機控制電路的串口通信方式,對單片機下達指令輸出不同掃描信號,控制振鏡偏轉,同時光束在經過準直鏡準直平行后,進入振鏡被反射偏轉,在半反半透鏡表面上再一次被反射后,實現(xiàn)對目標不同方式的掃描;另一方面,上位機實時接收工業(yè)相機拍攝到的目標圖像,通過目標跟蹤算法,獲得目標的位置信息后,通過單片機控制電路對掃描信號加入相應的偏置電壓,實現(xiàn)對運動目標的跟蹤掃描。
圖1 振鏡掃描控制系統(tǒng)結構圖Fig.1 Structure diagram of galvanometer scanning control system
圖3 正弦波信號Fig.3 Sine wave signal
STM32F4系列單片機具有片上DAC外設,它的分辨率可配置為8位或12位的數(shù)字輸入信號[5],具有兩個DAC輸出通道,這兩個通道互不影響,每個通道都可以使用DMA功能,都具有出錯檢測能力,可外部觸發(fā)。
圖2 信號產生程序框圖Fig.2 Block diagram of signal generation
圖4 余弦波信號Fig.4 Cosine wave signal
對于正弦波、余弦波、階梯波和三角波信號,利用STM32的DAC、定時器、DMA(直接存儲器訪問),編程實現(xiàn)定時器定時觸發(fā)DAC,對通過DMA高速傳輸?shù)男盘枖?shù)據(jù)進行數(shù)模轉換,在對應I/O口輸出頻率可控信號。程序框圖如圖2所示。
信號波形如圖3~圖6所示。
對于PWM信號,利用STM32的定時器,通過程序改變自動重裝載值(ARR)、時鐘預分頻系數(shù)(PSC)和比較寄存器(CCRx)中的值來改變PWM信號的頻率與占空比,在對應I/O口輸出頻率和占空比可控信號。PWM信號如圖7所示。
如圖8所示為PWM DAC的電路框圖。
圖5 階梯波信號Fig.5 Ladder wave signal
圖7 PWM信號Fig.7 PWM signal
其工作流程為,單片機輸出的正極性PWM信號經過反相電路后產生負極性PWM信號,然后通過加法放大電路將單極性信號轉換為雙極性信號,再經低通濾波電路濾除PWM信號中的諧波分量[7],得到所需要的模擬電壓。當物體運動時,該模擬電壓用于對信號的偏置,從而控制振鏡對物體進行跟蹤掃描。
整個電路主要采用雙運算放大器LM358,該芯片內部包含有兩個相互獨立的、高增益的運算放大器,適合于電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式,并具有內部頻率補償功能。本文采用雙電源供電工作模式,從而實現(xiàn)正負電壓的輸出[9]。
圖9為二維振鏡掃描原理圖。振鏡的機械部分是由X、Y兩個振鏡組成的振鏡頭,每個振鏡電機軸上都安裝了一個反射鏡片,通過控制振鏡電機,使得這兩個反射鏡相互配合偏轉不同的角度,帶動激光光束在掃描平面上偏轉,進而掃描出物體完整的圖形[10]。
圖6 三角波信號Fig.6 Triangle wave signal
圖8 PWM DAC電路框圖Fig.8 PWM DAC circuit block diagram
圖9 二維振鏡掃描原理圖Fig.9 Schematic diagram of two-dimensional galvanometer scanning
3.2.1 光學系統(tǒng)
在振鏡掃描系統(tǒng)中,必須在掃描平面上獲得盡可能小的激光高功率密度的光斑。因此,通過使用擴束鏡調節(jié)激光器發(fā)出的激光光束變?yōu)槠叫泄馐缓笸ㄟ^聚焦透鏡獲得符合要求的激光高功率密度光斑。
圖10 振鏡掃描控制系統(tǒng)界面Fig.10 Galvanometer scanning control system interface
圖11 串口通信程序流程圖Fig.11 Serial port communication program flow chart
3.2.2 振鏡頭
振鏡頭由X、Y兩軸上的反射鏡、掃描電機和伺服電路兩部分構成。反射鏡安裝在掃描電機的軸上,電機帶動反射鏡偏轉;掃描電機不能旋轉,只能有限角度地偏轉,它內部集成了位置傳感器實時測量掃描電機的偏轉角度;伺服電路接收驅動器生成的模擬電壓信號,控制掃描電機按要求偏轉。
上位機控制程序主要是通過人機交互程序設置參數(shù)并輸入字符、數(shù)字、字母等,形成相應的振鏡掃描規(guī)劃,得到相應掃描圖形的數(shù)據(jù)。
界面設計是利用Visual Studio 2015的MFC來實現(xiàn)的,MFC(Microsoft Foundation Class Library)基礎類庫提供了一種在Windows平臺上編程的框架,該框架是一個編寫高效更專業(yè)應用的強大工具,縮短了開發(fā)時間,增強了代碼的可移植性,在不減少編程的自由和靈活性的情況下提供了更多的支持。
如圖10所示,界面主要包含有串口通信參數(shù)設定模塊、掃描信號設定模塊、USB相機開啟及數(shù)據(jù)反饋模塊和其他功能模塊。界面打開后,設置串口參數(shù),實現(xiàn)與單片機的通信,然后發(fā)送物體掃描方式的數(shù)據(jù),同時打開相機得到掃描后的物體圖像,在物體運動時,偏置電壓值實時發(fā)送給單片機,從而控制振鏡偏轉角度變化,實現(xiàn)目標跟蹤掃描。
串口是一種單片機間通信非常通用的設備端口,因其結構簡單、適合遠距離傳輸,而得到廣泛應用。本文中上位機與單片機采用串口通信方式進行通信,實現(xiàn)數(shù)據(jù)傳送與反饋[11]。
上位機串口通信模塊程序包括串口初始化,Comm事件響應,串口數(shù)據(jù)發(fā)送和數(shù)據(jù)處理,其具體流程如圖11所示。
在串口初始化中,設定串口號和通信協(xié)議中所需的波特率、校驗位、數(shù)據(jù)位、停止位,通過發(fā)送控件觸發(fā)Comm事件,將掃描控制信號數(shù)據(jù)按照一定規(guī)則發(fā)送給單片機,同時接收并處理單片機反饋回來的數(shù)據(jù)。
本文采用基于特征的目標跟蹤算法,適用于具有突出特征的目標圖像。算法初始化時在選定的目標區(qū)域內提取特征點,跟蹤過程中通過對前后兩幀的特征點進行匹配,計算出目標的位置、尺度和旋轉變化,進而實現(xiàn)對目標的跟蹤。
針對基于特征的目標跟蹤算法主要通過兩個步驟來實現(xiàn),分別是特征提取和特征匹配。
1)特征提取
特征提取是將圖像的移動目標的特征點找到并有效地提取處理,屬于特征識別范疇[12]。這些特征需要具有突出的代表性,不僅能夠較好地區(qū)分目標和背景,還可以應對目標被部分遮擋或形狀的變化。
圖12 (a) 物體原始位置圖像Fig.12 (a) Object original position image
2)特征匹配
特征匹配是在得到目標圖像特征點的基礎上,通過相似性判定準則,尋找到與目標特征點最相似的坐標,同時獲取目標信息,標記目標位置進而實現(xiàn)目標的有效跟蹤的過程[12]。
為了驗證該系統(tǒng)對物體實時跟蹤掃描的實現(xiàn)效果,利用Sun Time FX30工業(yè)相機采集640×480大小的圖像,以每秒60幀的速率進行采集,同時采用步進電機控制物體運動,在上位機窗口實時顯示目標圖像和掃描區(qū)域,結果如圖 12(a)(b)(c)所示。
其中,圖12(a)為物體原始位置圖像,在原始圖像中設定需要跟蹤掃描的具有明顯特征的區(qū)域,此時設定為紅色方框區(qū)域;通過步進電機控制物體運動后,得到如圖12(b)、圖12(c)所示的運動時部分位置圖像,振鏡掃描區(qū)域時刻處于紅色方框內。實驗表明,該系統(tǒng)能夠很好地控制振鏡掃描,實現(xiàn)了對物體實時跟蹤掃描成像。
圖12 (b) 物體運動位置圖像aFig.12 (b) Object moving position image a
圖12 (c) 物體運動位置圖像bFig.12 (c) Object moving position image b