基于FPGA和OV6946的微型3D內(nèi)窺鏡的實現(xiàn)
微型內(nèi)窺鏡一般工作在操作空間較為狹小的受限環(huán)境中,廣范應(yīng)用于醫(yī)療、航天、半導(dǎo)體和安防等領(lǐng)域。在一些比如微創(chuàng)手術(shù)或者神經(jīng)外科手術(shù)等場合,往往需要更為精確的立體視覺定位,而常見的內(nèi)窺鏡一般采用單個鏡頭,只能做平面成像,難以提供準確的三維信息。
本方案基于兩片微型圖像傳感器和FPGA組成雙目視覺方案,前端器械端通過柔性材料連接,具體體積小、使用靈活、成像質(zhì)量高,以及可以手持等特點。
2.1. 系統(tǒng)介紹
FPGA是Field Programmable Gate Array的縮寫,全稱是現(xiàn)場可編程門陣列,是一種高度可配置的集成電路,允許用戶在制造后通過硬件描述語言對其進行編程,以實現(xiàn)特定功能。FPGA具有并行處理能力、高吞吐量和低延遲的優(yōu)勢,廣泛應(yīng)用于信號處理、圖像處理、工業(yè)控制等領(lǐng)域。
光學(xué)鏡頭采用OV6946芯片,此芯片是OmniVision公司面向醫(yī)療市場推出的小型成像元件[1],大小僅有0.9 × 0.9 mm,而圖像分辨率可以達到400 × 400@30fps,并且片上集成ISP單元,可以實現(xiàn)BLC、AEC/AGC和MWB等圖像處理算法。即使加上集成LED照明,在封裝后可以做到大小1.2 mm左右的模組,這使得其很適合做內(nèi)窺鏡方向的應(yīng)用。由于OV6946本身輸出的圖像是模擬信號,一般的使用需要配合OV426芯片橋接[2],才能輸出DVP數(shù)字信號。
本方案集成兩片OV6946芯片,其輸出的模擬圖像信號通過OV426轉(zhuǎn)接,并通過DVP接口連接至FPGA,F(xiàn)PGA與電腦通過EZUSB FX3模塊連接[3],以傳輸實時圖像。
2.2. 技術(shù)特點
1) 體積小,適用于對空間要求極高的場合。
2) 雙目組成的三維成像視覺方案,可以提供更好的立體視覺效果。
3) 利用FPGA的邏輯觸發(fā)對兩個圖像傳感器同步,可以實現(xiàn)兩個Pixel以內(nèi)的幀同步。這在立體成像同步上有一定的優(yōu)勢。
4) 無需復(fù)雜的雙目視頻算法,無需對鏡頭校準,使用3D頭盔左右模式即可顯示立體圖像。
5) 兩種硬件的形態(tài),既支持連接至PC,通過PC外接頭盔顯示的傳統(tǒng)方案,也支持直接輸出至3D頭盔的嵌入式方式。
3.1. 機械結(jié)構(gòu)
硬件上,本方案采用兩組OV6946 + OV426芯片,兩片OV6946加上LED照明組成前端的器件端,后端電路板集成FPGA和兩片OV426芯片,前后端使用FPC軟排線連接,可以保證器械的靈活性。PCB上使用FPGA采集原始BAYER格式的圖像,并在內(nèi)部集成ISP處理單元,處理后的兩幅圖像合成一幅左右模式的圖,通過HDMI輸出至顯示器,配合3D頭盔,可以實現(xiàn)3D成像的方案。并且,PCB上集成了EZUSB FX3模塊,輸出標準的UVC格式圖像,可以連接到PC端,使用常見的軟件比如VLC實時顯示3D圖像。
器械前端采用雙OV6946的結(jié)構(gòu),兩個模組并排地連接固定,在周圍集成LED照明單元。兩個模組輸出的信號和LED照明電源同時經(jīng)過FPC軟排線連接到后面電路板。FPC的長度可以定制,能支持大約兩米的長度,供常用的醫(yī)學(xué)手術(shù)使用。
3.2. 電路結(jié)構(gòu)
前端的兩組鏡頭通過FPC軟排線連接到后面的電路板。電路板上集成了FPGA,除此之外,還集成了兩片DDR3 X16顆粒,組成32位DRAM。一顆HDMI芯片提供可選的HDMI輸出,可以外接顯示器。一顆EZUSB FX3芯片,可以連接USB3.0到PC。
整體電路結(jié)構(gòu)圖如圖1所示:
Figure 1. Overall hardware architecture
圖1. 整體硬件結(jié)構(gòu)圖
3.3. FPGA選型與簡介
FPGA采用AMD公司的產(chǎn)品XC7Z020CLG400-2,這是ZYNQ-7000系列的可編程片上系統(tǒng)(SoC),它集成了FPGA和雙核ARM Cortex-A9處理器,適用于嵌入式計算、信號處理、工業(yè)自動化等高性能應(yīng)用。其主要特點有:
1) FPGA + ARM處理器:片上集成了FPGA邏輯和ARM Cortex-A9,適用于嵌入式計算和硬件加速。
2) 高性能DSP計算:內(nèi)置220個DSP計算單元,適用于信號處理、圖像處理和AI加速。
3) 靈活的I/O設(shè)計:支持多種接口(USB、PCIe、UART、SPI、I2C、CAN、SDIO)。
4) 豐富存儲選項:NOR/NAND Flash、SD/eMMC存儲。
5) 低功耗設(shè)計:適用于嵌入式和電池供電系統(tǒng)。
3.4. 3D頭盔顯示模塊
3D頭盔顯示主要通過一系列硬件和顯示技術(shù)來呈現(xiàn)沉浸式的三維圖像和交互體驗。其核心原理是通過雙眼視差三維成像,具體來說,3D頭盔通常會配備兩個顯示屏(一個為每只眼睛提供圖像)或者采用單一顯示屏,通過光學(xué)分離技術(shù)(如鏡頭)讓每只眼睛看到不同的圖像。這種方法模仿了人類眼睛的視差效應(yīng):每只眼睛看到稍微不同的視角,通過大腦合成產(chǎn)生深度感知。
同時,當(dāng)左右眼看到的圖像稍有不同(基于攝像機的立體圖像),大腦會將這些圖像結(jié)合起來,產(chǎn)生三維的深度感知,從而獲得身臨其境的視覺體驗。
在選型上,3D顯示頭盔只需要選用常見的可以通過HDMI從PC串聯(lián)的設(shè)備即可。PC將顯示的圖像實時串流至頭盔,同時還可以將平面的圖像輸出至外接的顯示器,供人員查看。
將3D頭盔打開左右的3D模式后,人眼靠近頭盔,即可觀察到三維圖像。
4.1. FPGA整體實現(xiàn)框架
FPGA系統(tǒng)框架如圖2所示。所有模塊都提供AXI4-Lite Slave接口,掛載到FPGA的AXI總線上,以便可以通過ZYNQ-7000芯片的ARM處理器在線讀寫內(nèi)部寄存器,從而修改各模塊配置。
整體的FPGA設(shè)計模塊圖如圖2所示:
Figure 2. FPGA block diagram
圖2. FPGA結(jié)構(gòu)圖
4.2. OV426控制模塊
FPGA內(nèi)部實現(xiàn)兩個OV426模塊,通過10位DVP接口分別與兩個OV426模塊連接,傳輸實時圖像。模塊內(nèi)SCCB模塊,用于初始化和在線修改CMOS的配置,比如白平衡、開窗大小等參數(shù)。系統(tǒng)異常通過中斷引腳INT_o向ARM匯報。
需要說明的是,傳統(tǒng)的相機同步方案一般是基于單片機和ASIC,為了實現(xiàn)幀同步,在上層軟件處理的“軟”同步方法,此方案缺點是無法保證原始圖像的同步。而本方案基于FPGA,在兩個OV426模塊的外部分別增加了SYNC_i同步的邏輯,由外部統(tǒng)一出發(fā),這可以在硬件的層面達到了原始圖像的“硬”同步。實驗結(jié)果表明,本方案可以達到2個Pixel以內(nèi)的幀同步。
OV426模塊設(shè)計框圖如圖3所示:
Figure 3. OV426 block diagram
圖3. OV426模塊結(jié)構(gòu)圖
4.3. EZUSB FX3控制模塊
上位機與FPGA的通信采用EZUSB FX3模塊,其為英飛凌公司推出的靈活的USB控制器,提供5 Gbps的理論傳輸速率,實測速度大于260 Mbps??梢詡鬏?080p@30Hz的視頻。對于兩組400 × 400@30fps的圖像,實際帶寬完全沒問題。
FPGA內(nèi)部實現(xiàn)EZUSB FX3模塊,通過10位并口與EZUSB FX3模塊連接,傳輸實時圖像。模塊內(nèi)實現(xiàn)狀態(tài)機、監(jiān)測與管理數(shù)據(jù)傳輸模式、緩沖區(qū)滿、數(shù)據(jù)有效等系統(tǒng)狀態(tài)。
EZUSB FX3模塊設(shè)計框圖如圖4所示:
Figure 4. EZUSB block diagram
圖4. EZUSB模塊結(jié)構(gòu)圖
5.1. EZUSB FX3固件的實現(xiàn)
EZ-USB FX3支持多種工作模式,以滿足不同的應(yīng)用需求。這些模式可以通過FX3的配置進行靈活切換,適應(yīng)不同的硬件和數(shù)據(jù)傳輸需求。常見的工作模式包括:
1) 主機模式。FX3作為USB主機與外部USB設(shè)備進行通信。
2) 外設(shè)模式。FX3作為USB外設(shè)連接到上游USB主機。
3) 數(shù)據(jù)傳輸模式。支持USB 3.0模式,實現(xiàn)高帶寬的設(shè)備應(yīng)用,如高清視頻采集和流式傳輸。
4) UVC (USB Video Class)外設(shè)模式。FX3充當(dāng)USB視頻設(shè)備,通過USB接口傳輸視頻流。
5) GPIF (General Programmable Interface)模式。能夠與外設(shè)進行高帶寬、低延遲的數(shù)據(jù)傳輸。
6) 同步時鐘模式。允許它在與其他外設(shè)同步時鐘進行數(shù)據(jù)交換時進行精確的時序控制。
7) 異步傳輸模式。通過該模式與外設(shè)進行數(shù)據(jù)傳輸,適用于大多數(shù)基于流的傳輸應(yīng)用。
在本應(yīng)用下,通過修改FX3的固件,使其工作在數(shù)據(jù)傳輸模式下,EZUSB FX3做bulk實時數(shù)據(jù)采集,單次塊傳輸大小為16 KB。
5.2. 上位機驅(qū)動實現(xiàn)
為了減少圖像顯示的延時,提高系統(tǒng)的實時性能,圖像的采集、處理和顯示采用多線程異步的架構(gòu),數(shù)據(jù)通過線程安全的環(huán)形隊列ConcurrentQueue緩沖,采用生產(chǎn)–消費者模式,數(shù)據(jù)采集線程作為生產(chǎn)者,將采集到的圖像放入緩沖隊列,并工作在最高優(yōu)先級,以保證幀的完整性,達到系統(tǒng)最大的可靠性。圖像處理線程作為消費者,從緩沖隊列讀取圖像幀,并處理后dispatch到GUI線程,這樣可以保證用戶界面的流暢性。
上位機軟件與FPGA數(shù)據(jù)流遵循自定義的幀同步協(xié)議,保證每幀數(shù)據(jù)的完整有效性。
上位機軟件的架構(gòu)如圖5所示:
Figure 5. Software architecture
圖5. 軟件架構(gòu)圖
5.3. 上位機圖形界面
同時,基于上章節(jié)中介紹的驅(qū)動,在PC端開發(fā)基于QT的GUI用戶應(yīng)用程序,用于實時把兩個圖像傳感器的實時圖像在經(jīng)過實時處理之后,分左右兩端在顯示器上全屏顯示,并將原尺寸400 × 400的圖像被分別壓縮成兩幅200 × 400的圖像,并在左右兩端顯示。
實際的成像效果圖如圖6所示:
Figure 6. Realtime image picture
圖6. 實時成像范圖
截至投稿前,已完成所有的機械和軟、硬件工作,并已應(yīng)用于實際的模擬實驗中。
圖7展示3D內(nèi)窺鏡在模擬遠程操作器械端時的實時成像系統(tǒng)。圖中用紅色部分標注了3D內(nèi)窺鏡本體部分和3D頭盔。
Figure 7. Finished product picture
圖7. 成品圖
未來主要在以下幾個方面考慮微型3D內(nèi)窺鏡在FPGA上的系統(tǒng)優(yōu)化[4]-[6]。
7.1. FPGA集成圖像處理
1) 立體匹配:FPGA可加速基于雙目或多目立體視覺的深度計算,提高3D成像的實時性。
2) 圖像去噪與增強:可在FPGA內(nèi)部集成圖像濾波器,以增強對比度,優(yōu)化內(nèi)窺圖像質(zhì)量。
7.2. 數(shù)據(jù)壓縮
1) 實時數(shù)據(jù)壓縮:使用FPGA加速JPEG、JPEG2000、H.264/265等壓縮算法,減少數(shù)據(jù)帶寬需求。
2) 高速接口支持:如MIPI、LVDS等接口的CMOS,提高內(nèi)窺鏡系統(tǒng)的數(shù)據(jù)傳輸速率。
7.3. AI與圖像分析
目標檢測與分割:基于FPGA實現(xiàn)神經(jīng)網(wǎng)絡(luò)(如CNN)加速,用于病變檢測、組織分類等。