溫小艷,楊榮騫,吳效明,黃毅洲
(華南理工大學生物科學與工程學院,廣東 廣州 510006)
手術導航系統具有縮短手術時間、有效提高手術精度、減少手術創口以及并發癥等優點,被越來越廣泛地應用在臨床上,空間定位技術作為手術導航的關鍵技術之一,其精度決定了導航系統的精度[1-3]。光學定位以其高精度和使用方便等特點被有效地應用在手術導航系統中[4-5]。在光學定位系統中,首先要解決的是兩臺相機同步問題,不能同步或同步誤差較大都將削弱并且限制定位的精度。一般采用的圖像采集工具為工業相機,但其在出廠時功能和時序等特性已經封裝好,不能外部控制其每一幀圖像采集的開始。圖像傳感器則可利用外部邏輯根據需要進行配置,使其工作在被動模式,同時外部邏輯產生控制時序,使得兩相機在該控制時序下同步工作,因此通過外部邏輯來控制圖像傳感器可以有效地解決兩相機不同步的問題。
基于傳統計算機的光學定位系統通過串行處理CPU來控制運算和操作,這使得對兩相機數據的操作在時間上不同步,因此降低了系統的精度同時也減慢了處理速度。當今電子技術迅速發展,大規模集成電路器件的性能不斷改善、速度不斷提高,從而使研究基于現場可編程門陣列(FPGA)的圖像采集系統成為可能。本文利用FPGA初始化OV7620使其工作在被動模式;利用FPGA產生場同步Vsync和行同步Hsync使得兩相機同步工作,同時對兩相機圖像數據進行亞像素提取;SDRAM作為圖像數據和亞像素坐標的緩存區;根據上位機的命令完成USB傳輸。
該系統的流程如圖1所示。

圖1 圖像采集系統流程
該系統采用ALTERA公司的DE2-70開發板作為硬件平臺;以美國Omni Vision公司的CMOS彩色圖像傳感器芯片OV7620作為圖像采集工具,該芯片內建的SCCB(Serial Camera Control Bus)接口提供一種簡易的控制其內部寄存器的途徑[6-8];USB芯片采用CY7C68013,其集成了USB2.0收發器、串行接口引擎(SIE)、增強的8051微控制器和可編程的外圍接口,該芯片可以工作在Slave FIFO模式。
軟件模塊利用Verilog HDL語言,以QuartusⅡ9.1為軟件開發平臺。
1.2.1 OV7620被動模式設計
OV7620采集圖像主要用到3個同步信號:像素時鐘PCLK、行同步Hsync和場同步Vsync,其中,Vsync的下降沿代表一幀圖像的開始,上升沿表示一幀圖像的結束,Hsync高電平可以有效開始一行數據的采集,PCLK上升沿表示一個圖像數據的采集。主動模式下,這3個信號均由OV7620輸出至外部邏輯,每個相機均按自身產生的Vsync時鐘開始每幀圖像的采集,無法通過外部控制實現同步。即使是相同型號的相機,其采集每幀圖像有一定的時間差,如果相機長時間采集,時間差累加,會造成兩相機圖像的不同步。為解決該問題,該系統采用OV7620的被動模式來解決相機不同步的問題。
OV7620的被動模式是由FPGA產生行同步Hsync和場同步Vsync并輸入至相機,相機根據該信號的有效沿作為每幀圖像采集的開始。如果輸入同一個控制信號給兩臺相機,那么兩臺相機就可以根據該信號判斷何時開始每一幀圖像的采集,從而實現兩相機同步工作,其被動模式時序要求如圖2a,其中CLK為相機工作時鐘27 MHz,Ths>6× Tclk,Ths< Tvs<2×858× Tclk。該系統采用 Tvs=640× Tclk,Ths=100×Tclk,Vsync產生如圖2b所示。

圖2 OV7620被動時序
為使OV7620工作在被動模式,通過SCCB初始化其內部寄存器。OV7620功能寄存器的地址為0x00~0x7C。由于SCCB完全兼容I2C總線,因此在設計過程中利用FPGA的兩個I/O口模擬I2C總線接口的時鐘線SIO_1和數據線SIO_0。在該系統中,OV7620的初始化后工作模式為:被動模式、輸出像素分辨率640×480、VGA模式、逐行掃描、16位YUV(取其8位Y輸出)。其主要的寄存器配置如表1所示。

表1 寄存器配置
1.2.2 圖像采集
OV7620相機圖像的采集嚴格地受PCLK、Hsync和Vsync時序控制。PCLK上升沿數據穩定,此時可以有效采集一個圖像數據。Hsync上升沿可以開始一行數據的采集,當采集的寬度達到640,一行采集結束。Vsync上升沿表示一幀圖像的到來,下降沿時可以開始一幀圖像的有效采集,當采集到480行,一幀圖像采集結束。在設計Verilog程序時,采用兩個計數器X_Cont和Y_Cont分別對圖像的行和列進行計數,如圖3所示,其中iData為相機輸出數據,oData為采集到的圖像數據。圖像數據以及亞像素提取坐標值需要進行緩存,來滿足USB傳輸時鐘的要求,該系統用兩片SDRAM作為兩相機圖像數據和亞像素數據的存儲區。

圖3 OV7620圖像采集流程
1.2.3 亞像素提取
應用于手術導航的光學定位系統,只需獲取安裝在手術器械上標記點的三維信息。標記點映射到二維圖像表現為光點的形式,該光點的中心被認為是標記點的映射中心,通常以光點區域的亞像素值作為光點的中心,本文采用灰度加權平均法來計算亞像素坐標[9]。假設手術工具上安裝有n個標記點,在第j(j=1,2,…,n)個光點區域有m個像素點的灰度值大于指定閾值t,第i(i=1,2,…,m)個像素點的坐標表示為qi=[qix,qiy]T。該點的灰度值表示為vi。則該光點的亞像素坐標可以由下式得到

OV7620以逐行的方式產生圖像數據。通常一把手術器械上會安裝多個標記點,利用上式計算亞像素坐標的關鍵是正確區分每一個大于閾值的點屬于哪一個光點。由于在實際光學定位應用中,手術器械上不同標記點在一幀圖像上一般不會重疊并且會有一定的距離。該系統利用距離信息l來準確地把每一個大于閾值的像素點劃分到相應的光點區域。具體過程如下:
1)設定合理的距離閾值l和圖像閾值t,隨著像素時鐘,對采集到的每個數據進行判斷,找到第一個大于閾值的點,并把其作為第一個標記點的起始點P1,并把該點作為P1的1×5的矩形查找區域的左上頂點P1′,該查找區域隨著P1′的變化而不斷變化。
2)找到第二個大于閾值的點,如果該點與P1的距離小于l并且在以P1′為頂點的查找區域內,則該點被認為是標記點P1的臨近點,此時P1′移到該點;否則把該點作為第二個標記點的起始點記為P2,此時第二個標記點的查找區域的左上頂點P2′=P2。
3)同樣的方式找到第三個大于閾值的點,并計算該點與P1的距離,如果小于l并且屬于P1′的查找區域,則該點是P1的臨近點,P1′移到該點,繼續掃描;如果大于l,則計算其與P2的距離,如果該距離小于l并且屬于P2′的查找區域,則該點被認為是P2的臨近點,P2′移到該點,如果與P2的距離大于l,則該點被認為是第三個標記點的起始點,記為P3。
4)通過同樣的方式,找到n個標記點的起始點以及其臨近點,由于圖像存在噪聲等干擾因素,根據標記點的成像規律,如果檢測到的某個標記點的臨近點的個數小于10個,則認為其為噪聲點。至此,根據上式可以得到每個標記點的亞像素坐標。
1.2.4 USB傳輸
在該模塊設計中,采用端點2作為OUT方向,端點6作為IN方向,每包數據的大小均為512 byte,其狀態跳轉如圖4所示。

圖4 USB收發數據狀態轉換
IDLE:初始化所有參數。
READ_EVENT:端點指向2OUT。
READ_READY:USB的輸出控制信號u_sloe有效。
DATA_READY:讀信號有效,讀取數據,如果該緩沖區非空,進入READ;如果緩沖區為空并且camera_choose和subpixel_choose均無效,在該狀態等待;否則進入WRITE_EVENT。
READ:讀信號無效。
WRITE_EVENT:指向端點6。
WRITE_READY:寫信號有效,把相機數據或者亞像素數據寫入端點6的緩沖區,若緩沖區未被寫滿,進入WRITE;若已被寫滿,進入READ_EVENT查詢有沒有新的指令。
WRITE:寫信號無效。
上位機采用編碼的方式發送命令,FPGA通過解碼來確定發送圖像數據(camera_choose有效)還是亞像素坐標(subpixel_choose有效),然后把相對應的數據寫入端點6的緩沖區。因為USB的讀操作和寫操作不能同時進行,所以每寫入一包數據,需返回查詢上位機是否有命令,如果上位機有命令,則根據上位機的命令進行跳轉,否則繼續讀取相應數據。
在光學定位系統中,兩相機是否同步工作對定位精度的影響很大。該系統首先采用FPGA的兩個I/O端口模擬I2C總線對OV7620內部寄存器進行配置,使其工作在被動模式,再通過FPGA產生場同步信號Vsync同時輸入給兩相機,使其同時開始每一幀圖像的采集,從而達到定位系統中兩相機的同步采集,圖5為示波器顯示的兩相機的幀同步信號。

圖5 FPGA產生的Vsync信號(截圖)
利用QT編寫上位機,驗證圖像采集、亞像素提取的準確性以及USB傳輸速度,其界面如圖6所示。當上位機選擇讀圖像數據時,兩相機拍攝手術器械上標記點,該標記點由近紅外二極管發光貼片組成,兩相機圖像同時顯示,如圖6a所示,通過定時器可以觀測到每秒每個相機可以傳輸23幀圖像,達到光學定位對于圖像實時采集的要求;為了有效濾除環境光的干擾,在相機鏡頭前添加近紅外濾光片,圖6b所示的是添加濾光片之后標記點在兩相機中的成像。當上位機選擇讀亞像素坐標,通過文本框顯示出對于當前圖像所提取到的亞像素坐標。為了驗證該亞像素坐標提取是否準確,把得到的亞像素坐標還原到圖像中,圖6b中“+”的中心即為亞像素坐標,證明本系統采用的亞像素提取方法可以準確地得到亞像素坐標;當上位機選擇“停止讀”按鈕,此時上位機停止接收USB傳送的數據。

圖6 上位機驗證
本文以FPGA作為主控制器,初始化OV7620使其工作在被動模式;由FPGA產生Vsync和Hsync使得兩相機同步工作。對采集到的數據通過灰度加權平均法得到每個標記點在圖像上的亞像素坐標。利用FPGA的并行計算,對兩相機的圖像采集、亞像素坐標計算、存儲以及USB傳輸并行處理。結果表明,該雙目視覺同步采集系統工作穩定,兩相機同步工作,上位機正確接收兩相機圖像并實時顯示、亞像素坐標提取準確,良好地解決了傳統光學定位系統兩相機圖像采集不同步的缺點。
[1]吳劍.三維高精度光學定位技術及其臨床應用[D].北京:清華大學,2004.
[2]姜立君,甘東兵,王國榮.基于雙目視覺傳感的計算機輔助骨外科手術導航模型[J].華南理工大學學報:自然科學版,2006,34(2):67-72.
[3]張麗.數字化手術導航系統的原理與應用[J].醫療衛生裝備,2010,31(1):110-111.
[4]黨瀟.基于FPGA的手術導航紅外光學空間定位系統的設計研究[D].北京:清華大學,2010.
[5]張衍儒,武潁.雙目三維定位的視頻運動檢測控制系統設計[J].應用天地,2009(7):57-59.
[6]宋海吒,唐立軍,謝新輝.基于FPGA和OV7620的圖像采集及VGA顯示[J]. 電視技術,2011,35(5):45-47.
[7]OV7620 Datasheet V2.1[EB/OL].[2012-05-25].http://wenku.baidu.com/view/50692ca1284ac850ad0242ab.html.
[8]沈華,王俞心.基于FPGA的I2C總線主控制器的設計與實現[J].航空計算技術,2007,37(6):109-111.
[9]YANG R,YANG W,CHEN Y,et al.Geometric calibration of IR camera[J].Journal of Lightwave Technology,2011,29(24):3797-3803.