李進文,安博文
(上海海事大學信息工程學院,上海 201306)
近年來,隨著傳像光纖束成像技術的快速發展,傳像光纖束在光譜儀器、醫療設備、導彈告警接收器等方面得到廣泛應用。同時在DSP 平臺中實現基于傳像光纖束高分辨率成像已經成為現實。DM642 是TI 開發的第二代高性能,具有先進VelociTITM技術的VLIW 結構的一款高性能定點DSP 芯片[1]。由于具有強大的數據處理能力、軟硬件的可剪裁性[2],DM642 十分適合處理大數據量、高傳輸速率的傳像光纖束成像算法。本文結合DM642 存儲器分配和DMA 數據傳輸結構對傳像光纖束成像過程中光纖中心定位算法進行存儲優化。
傳像光纖束入端接受均勻的光照時,出端圖像亮度并非均勻。由光纖的結構及傳光特性知,光纖光芯區域的亮度較包層區域強,而光纖正中心的位置亮度達到最強,斷絲引起的盲元亮度最暗。根據出端圖像的不同亮度,對光纖不同部位進行區別,從而定位每根光纖中心位置[3]。
一般中值、均值濾波器都是針對單個像素,處理孤立特征點效果較好,處理連在一起的某種特征點或塊時,效果則不理想。本文所處理的圖像就是后一種情況,針對這一特點,需要一個能同時處理多個像素點的濾波器。文獻[3]提出了一種雙模板極值濾波器,大模板中的元素是一組小模板,通過小模板對具有某種特征的像素點同時進行處理。濾波器的大模板為[N×N],N為奇數,模板中元素為N2個小模板,小模板為[n×n]。N和n的確定:由于光纖為圓形結構而模板為正方形,理想的效果是該正方形是光纖圓形區域的內切正方形的大小,因此小模板的大小應略小于光芯對應的亮像素區域。大模板尺寸確定的原則:當模板中心元素對應光纖中心較亮部分時,其他像素覆蓋鄰近光纖包層對應的區域,因此,大模板的尺寸應大于一根光纖對應的像素,但在水平或垂直方向不能達到2 根光纖的尺寸[4-5]。根據上面的原則,本文中N和n都為3,雙模板極值濾波器結構及其運行方式分別如圖1、圖2 所示。

圖1 雙模板極值濾波器結構

圖2 雙模板極值濾波器運行方式
用該模板對整幅定標圖像進行卷積運算,對大模板中每個小模板的全部像素求亮度和計算公式如式(1)所示。

計算9 個小模板卷積后最大值MaxValue、最小值MinValue,如式(2)、式(3)所示。

如果當前小模板對應的亮度和最大,并且大模板中亮度和最小的小模板也超過閾值THRESHOLD(閾值的設定根據背景亮度而定,需調試),即滿足邏輯表達式,如式(4)所示。

若表達式為真,則將當前小模板中每個像素賦為255,其他小模板中的像素賦為0。若表達式為假,9 個小模板步進進入下次循環。處理完后,定標圖像變成一個個孤立的白色小方塊標,該方塊粗略標出光纖中心的位置。
DM642 采用兩級存儲器結構,第一級存儲器包括相互獨立的程序cache(L1P,16 KB)和數據cache(L1D,16 KB),只能作為高速緩存被CPU 訪問。第二級存儲器(L2,256 KB)是一個統一的程序/數據空間,可以整體作為SRAM 映射到存儲空間,也可以作為第二級cache,或者按需求調用CACHE_setL2Mode(CACHE_L2Mode newMode)和CMD 文件自定義分配[6-9],根據L2 配置的不同選擇,訪問SRAM、cache 速率分別需8 個、6 個時鐘周期[10]。本文片外SDRAM采用2 片Micron MT48LC4M32B2 組成,構成系統第三級存儲空間,存儲了5 MB(2 592×1 944)pixel 圖像數據。顯然,片外存儲器容量較大,但訪問速率較慢,約150 個時鐘周期。圖3 為DM642 中片內兩級高速緩存結構。L1PCC(Program Cache Controller)表示一級程序緩存控制器,L1DCC(Data Cache Controller)表示一級程序緩存控制器。

圖3 DM642 中兩級高速緩存結構
由于cache 是存放于處理器附近的高速存儲器,同時在讀數據的時候會按照空間局部性原則將該數據周圍的一部分數據一并讀取到cache 中,因此在處理空間相關性比較大的數據時,增大cache 空間,可顯著提高CPU 的命中率,但同時也會減小關鍵數據分配在片內的可用空間[11-12]。
算法運行時,處理一行圖像時需要前后相鄰4 行(共(4+1+4)×2 592 Byte)大小的數據參與,且需在L2 SRAM 中預留一個3×2 592 Byte 的緩沖區,存放已處理完并將要寫回至片外SDRAM 的數據。為了提高L1P 的命中率,減少CPU等待時間,將頻繁調用的代碼存儲于L2 SRAM 中[13]。另一方面考慮到算法中數據相關性較大,最終將L2 分為128 KB SRAM 和128 KB cache,CACHE_setL2Mode(CACHE_128 KCACHE)實現。
如果算法是基于PC 上實現,不用考慮處理器內存尺寸、數據傳輸儲存等因素,直接在全局區開辟一個二維數組儲存2 592×1 944 Byte 大小圖像數據,同時在堆區開辟一個動態緩沖區存放2 592×9 Byte 臨時數據。然后使模板以行內步進、行間折返方式Z 字形掃描,卷積求極值,這種處理方式實現簡單,流程清晰。但在DM642 平臺上,內存資源、傳輸速率等有限,因此,需要盡可能減少算法運算量和盡可能縮小算法所需的運算空間。本文在數據傳輸結構上進行優化,具體思想:模板僅在水平方向掃描,數據自動更新,即每次在L2 SRAM 處理9×2 592 Byte 數據,處理完之后新一行數據進入組成新的9 行數據,而模板始終在水平位置步進掃描。
首先在L2 SRAM 建立一個9×2 592 長的一維數組cLine [9×2 592](等價二維數組cLine[9][2 592]),對其前8 行(Line1~Line8)空間進行初始化,調用函數DAT_copy(void *src,void *dst,short byteCnt)處理。接著復制第9 行數據到Line9 位置,至此數組中每個元素都被賦值。
然后9 個3×3 模板以行內步進掃描處理9 行數據。由于圖像大小為(2 592×1 944),9 個模板不只是從左至右掃描卷積當前9 行圖像數據就結束了,而是繼續處理更新的圖像數據。數據更新機制:設置9 個偏移量,依次初始化如式(5)所示。

對指向9 行數據起始位置的指針pIM1G~pIM9G進行初始化,如式(6)所示。

當9 個3×3 模板運動到9 行圖像的右側臨界區進行卷積運算處理后,9 個偏移量的大小發生改變,循環左移,迭代更新,變換公式如式(7)所示。

這種偏移量的變換確保了每次水平掃描處理9 行數據之后,離中間行pIMG5 距離最遠的低地址行被新的一行數據(來自SDRAM)寫入,而上一次剩余的8 行數據保存不變,避免了重復寫入[14]。同時,避免了數據塊整體向后搬移,從而節省了時間,且指針pIMG4、pIMG5、pIMG6 分別自動指向9 行數據的中間3 行起始數據。實質上可以看到模板只是在水平方向上步進,運動到右側臨界區后,啟動DMA 傳輸,一行數據發生更新,提高了處理效率。數據存儲與更新機制流程如圖4 所示。

圖4 數據儲存與更新流程
在圖4 中,Line1~Line9 表示L2 SRAM 開辟的一個數組分成的9 段,用來存放9 行待處理數據。第K(K=1,2,…,1 935)次DMA 為初始化之后的DMA 搬移計數。
傳像光纖成像系統透鏡對準一個漫反射白板,在DM642中采集并經過定位算法處理、腐蝕運算后結果分別如圖5~圖8 所示。

圖5 傳像光纖束出端結構截取部分
對比圖6 與圖7 分析可知,算法存儲優化前后在處理效果上一樣,基于此證明了改進算法的準確性。

圖6 雙模板極值濾波器算法處理圖

圖7 存儲優化后的處理圖

圖8 初步定位后經腐蝕處理之后的結果圖
將優化前后的算法都移植到DM642 運行時,原算法未優化、經存儲優化后測算運行時間分別為3 3147.32 ms、24 800.57 ms。通過比較可看出由于處理的數據量(5 MB)較大,導致整體運行時間消耗仍較多。優化前后在處理速率上有較大差別,優化后時間減少了1/4。據此,說明了優化后算法的快速性。
本文在DM642平臺上對雙模板極值濾波算法在存儲分配和數據傳輸結構方面進行了優化,能較好地定位光纖中心。文中優化改進后的算法是在C 級別編寫的,時間開銷還是比較大,考慮到系統實時性要求,下一步結合2 組寄存器組、雙字指令的使用、存儲單元的分配在匯編或線性匯編層面上改寫,進一步降低時間開銷。
[1] Texa Sinstruments.TMS320DM642 Video/Imaging Fixedpoint Digital Signal Processor[EB/OL].(2010-10-12).http://www.ti.com/product/tms320dm642.
[2] Texas Instruments.TMS320C6000 DSP Enhanced Direct Memory Access(EDMA) Controller Reference Guide[EB/OL].(2006-11-15).http://www.ti.com.cn/general/cn/docs/litabsmultiple filelist.tsp?literatureNumber=spru234c.
[3] 安博文.基于光纖耦合的焦平面列陣圖像時空變換技術研究[D].北京:中國科學院研究生院,2006.
[4] 安博文,陳桂林.基于雙模板極值濾波器的傳像光纖束中的盲元消除[J].中國圖象圖形學報,2007,12(9):1555-1557.
[5] 安博文,陳桂林.超高分辨率異型傳像光纖束中的空間變換[J].光電工程,2006,33(11):83-87.
[6] 李方慧,王 飛,何佩琨.TMS320C6000 系列DSPs 原理與應用[M].北京:電子工業出版社,2003.
[7] Texas Instruments.TMS320C64x DSP Two-level Internal Memory Reference Guide[EB/OL].(2006-02-28).http://www.ti.com.cn/dsp/cn/docs/litabsmultiplefilelist.tsp?sectionId=3&tabId=409&literatureNumber=spru610c&docCategoryId=6&familyId=749.
[8]Texas Instruments.TMS320C6000 DSP Cache User’s Guide[EB/OL].(2003-05=05).http://www.ti.com.cn/dsp/cn/docs/litabsmultiplefilelist.tsp?sectionId=3&tabId=409&litera tureNumber=spru656a&docCategoryId=6&familyId=749.
[9] 馬宇輝.基于DSP 的廣域相量測量裝置的設計[D].杭州:浙江大學,2007.
[10]Texas Instruments.TMS320C64x/C64x+DSP CPU and Instruction Set Reference Guide[EB/OL].(2010-07-30).http://www.ti.com.cn/general/cn/docs/litabsmultiplefilelist.tsp?literat ureNumber=spru732j.
[11]張永光,張曉蕾,徐健健.DM642 圖像數據傳輸的實現和優化[J].科學技術與工程,2007,7(17):4484-4486.
[12]潘勝達,安博文.傳像光纖束成像算法在DM642 上的實現與優化[J].科學技術與工程,2010,10(17):4175-4178.
[13]潘勝達.基于傳像光纖束耦合的高分辨率成像算法的硬件實現研究[D].上海:上海海事大學,2010.
[14]Karadayi K,Golston J,Gove R J,et al.Strategies for Mapping Algorithms to Media Processors for High Performance[J].IEEE Micro,2003,23(4):58-70.