別俊鋒,葉玉堂,劉 霖,劉娟秀,賈宏宇,駱才華,王 平,徐文濤,郝 霞
(電子科技大學光電信息學院,成都610054)
基于多線陣CCDS相機的拼接型高精度大幅面掃描儀的研制一直是國內、外學者及產(chǎn)業(yè)界關注的重點領域[1],但是由于涉及精密光路設計[2]、復雜機械平臺[3]、完備硬件系統(tǒng)[4]、友好人機界面、智能算法實現(xiàn)這五個關鍵技術[5-6],其中高精度實時拼接技術又是其中的重點難點。迄今為止,基于多線陣CCDS相機的拼接型高精度大幅面掃描儀的全部關鍵技術基本上被國外跨國公司與大型研究機構所壟斷,國內完全依靠進口[7-9]。
高精度實時拼接技術是多線陣CCDS相機的大幅面掃描儀中的重點難點。由于線陣CCDS相機的視場有限,在視場范圍要求大掃描精度高的大幅面掃描儀應用背景下,單個三線陣CCDS相機顯然不能滿足需求,因此需要多個三線陣相機拼接實現(xiàn)拼接最重要的指標是保證圖像信息不丟失不錯位最理想的情況是,所有三線陣CCDS相機保持在同一水平面,相鄰兩個相機采集圖像的像素連續(xù)。
為了適應拼接型多線陣CCDS大幅面掃描儀這一應用需求,通常采用光學拼接或光學拼接加入軟件后續(xù)處理[10]。光學拼接通過分光棱鏡將多個線陣CCDS相機首位相連,即前一級CCDS相機最后一個有效像素與下一級CCDS相機第1個有效像素相連,其精度要求偏差在1個像素以內,且多個CCDS相機所有像素必須在同一個水平面上,這對機械加工精度要求非常高,相應成本也非常高,其拼接精度隨著使用時間增加而降低[11]。光學拼接加入軟件后續(xù)處理通過將相鄰兩個CCDS相機有效像素進行重疊以此保證圖像信息不丟失,然后將采集到的圖像信息保存在電腦內存里,通過軟件算法將每個相機采集到的圖像數(shù)據(jù)上下左右平移進行拼接,這種拼接方式對機械的精度要求有所降低,但是對電腦配置要求較高,拼接時間較長需要2 s~3 s,對大幅面掃描儀的實時性有一定影響[12]。
針對這一問題,筆者深入研究了FPGA/SDRAM/CCDS的內部結構,通過多次試驗驗證,提出了一種新的基于多線陣CCDS相機的大幅面掃描儀高精度實時拼接實現(xiàn)新方法——硬件拼接法[13-18]。
為了保證相鄰相機首尾相連處數(shù)據(jù)不丟失,必須使兩相機之間有效像素部分重合,如圖1拼接原理圖所示。
圖1 拼接原理圖
相機1與相機2重疊W1個像素,相機2與相機3重疊W2個像素。將SDRAM的地址分為3個地址分塊,相機1對應的初始地址為ADDRESS_1,相機2對應的初始地址為ADDRESS_2,相機3對應的初始地址為ADDRESS_3。三線陣CCDS相機逐行掃描,將3個相機采集到的每一行數(shù)據(jù)分別連續(xù)存儲到SDRAM開辟的3個地址分塊里,因為SDRAM的地址與數(shù)據(jù)一一對應,知道每一行數(shù)據(jù)的首地址,通過對偏移量的設置,從指定每行數(shù)據(jù)首地址位開始連續(xù)讀取數(shù)據(jù)即可對3個相機的數(shù)據(jù)進行實時拼接。
實際過程中,由于機械平臺加工的精度問題,3個相機可能不在同一水平面上,并且相鄰兩相機的重疊像素部分也不一定相同,就造成常規(guī)數(shù)據(jù)傳輸中有錯位現(xiàn)象產(chǎn)生。根據(jù)實驗與分析,拼接過程中會出現(xiàn)6種可能情況,如圖2(a)、2(b)、2(c)、2(d)、2(e)、2(f)所示。
圖2 拼接中出現(xiàn)的六種情況
圖2(a)為相機1水平位置大于相機2水平位置,相機2水平位置大于相機3水平位置時,圖像有效數(shù)據(jù)錯位情況。圖2(b)為相機1水平位置小于相機2水平位置,相機2水平位置小于相機3水平位置時,圖像有效數(shù)據(jù)錯位情況。圖2(c)為相機2水平位置大于相機1水平位置,相機1水平位置大于相機3水平位置時,圖像有效數(shù)據(jù)錯位情況。圖2(d)為相機2水平位置大于相機3水平位置,相機3水平位置大于相機1水平位置時,圖像有效數(shù)據(jù)錯位情況。圖2(e)為相機3水平位置大于相機1水平位置,相機1水平位置大于相機2水平位置時,圖像有效數(shù)據(jù)錯位情況。圖2(f)為相機1水平位置大于相機3水平位置,相機3水平位置大于相機2水平位置時,圖像有效數(shù)據(jù)錯位情況。
因此需要先確定掃描儀3個相機處于何種位置情況,相機每一行像素個數(shù)為L=5340個,上位機根據(jù)特定情況設定 H1、H2、W1、W2 的值,根據(jù) H1、H2 W1、W2的預設值計算出需要緩存數(shù)據(jù)最大行數(shù),相機2每行緩存數(shù)據(jù)的讀出首地址與末地址,相機3每行緩存數(shù)據(jù)的讀出首地址與末地址,最后順序讀寫出每一個相機緩存數(shù)據(jù)傳輸?shù)缴衔粰C實時顯示。
圖2所示6種情況中的寫緩存初始地址都是一致的,即,相機 1寫緩存初始地址 ADDRESS_WRITEBUFFER_1=ADDRESS_1,相機2寫緩存初始地址 ADDRESS_WRITEBUFFER_2=ADDRESS_2,相機寫緩存初始地址ADDRESS_WRITEBUFFER_3=ADDRESS_3。
針對圖2(a)的情況,需緩存BUFFER_LINE=H1+H2+1行數(shù)據(jù),相機2連續(xù)寫入H1+1行數(shù)據(jù)后需對寫入地址初始化,相機3連續(xù)寫入H1+H2+1行數(shù)據(jù)后需對寫入地址初始化。相機1寫初始地址ADDRESS_WRITE_1=ADDRESS_1+(H2-H1)·L+H2-H1,相機2寫初始地址ADDRESS_WRITE_2=ADDRESS_2+H2·L+H2,相機 3寫初始地址ADDRESS_WRITE_3=ADDRESS_3。相機1讀初始地址ADDRESS_READ_1=ADDRESS_1+(H1+H2)·L+H1+H2,相機2讀初始地址ADDRESS_READ_2=ADDRESS_2+H2·L+W1+H2,相機3讀初始地址ADDRESS_READ_3=ADDRESS_3+W2。
針對圖2(b)的情況,需緩存BUFFER_LINE=H1+H2+1行數(shù)據(jù),相機1連續(xù)寫入H1+H2+1行數(shù)據(jù)后需對寫入地址初始化,相機2連續(xù)寫入H2+1行數(shù)據(jù)后需對寫入地址初始化。相機1寫初始地址ADDRESS_WRITE_1=ADDRESS_1,相機2寫初始地址 ADDRESS_WRITE_2=ADDRESS_2+H1·L+H1,相機3寫初始地址ADDRESS_WRITE_3=ADDRESS_3+(H1+H2)·L+H1+H2。相機 1讀初始地址ADDRESS_READ_1=ADDRESS_1,相機2讀初始地址 ADDRESS_READ_2=ADDRESS_2+H1·L+W1+H1,相機3讀初始地址 ADDRESS_READ_3=ADDRESS_3+(H1+H2)·L+H1+H2+W2。
針對圖2(c)的情況,需緩存BUFFER_LINE=H2+1行數(shù)據(jù),相機1連續(xù)寫入H1+1行數(shù)據(jù)后需對寫入地址初始化,相機3連續(xù)寫入H2+1行數(shù)據(jù)后需對寫入地址初始化。相機1寫初始地址ADDRESS_WRITE_1=ADDRESS_1+(H2-H1)·L+H2-H1,相機2寫初始地址ADDRESS_WRITE_2=ADDRESS_2+H2·L+H2,相機 3寫初始地址ADDRESS_WRITE_3=ADDRESS_3。相機1讀初始地址ADDRESS_READ_1=ADDRESS_1+(H2-H1)·L+H2-H1,相機2讀初始地址ADDRESS_READ_2=ADDRESS_2+H2·L+W1+H2,相機 3讀初始地址ADDRESS_READ_3=ADDRESS_3+W2。
針對圖2(d)的情況,需緩存BUFFER_LINE=H1+1行數(shù)據(jù),相機1連續(xù)寫入H1+1行數(shù)據(jù)后需對寫入地址初始化,相機3連續(xù)寫入H2+1行數(shù)據(jù)后需對寫入地址初始化。相機1寫初始地址ADDRESS_WRITE_1=ADDRESS_1,相機2寫初始地址 ADDRESS_WRITE_2=ADDRESS_2+H1·L+W1+H1,相機3寫初始地址ADDRESS_WRITE_3=ADDRESS_3+(H1-H2)·L+H1-H2。相機1讀初始地址ADDRESS_READ_1=ADDRESS_1,相機2讀初始地址ADDRESS_READ_2=ADDRESS_2+H1·L+W1+H1,相機3讀初始地址 ADDRESS_READ_3=ADDRESS_3+(H1-H2)·L+H1-H2+W2。
針對圖2(e)的情況,需緩存BUFFER_LINE=H2+1行數(shù)據(jù),相機1連續(xù)寫入H2-H1+1行數(shù)據(jù)后需對寫入地址初始化,相機2連續(xù)寫入H2+1行數(shù)據(jù)后需對寫入地址初始化。相機1寫初始地址AD DRESS_WRITE_1=ADDRESS_1+H1·L+H1,相機 2寫初始地址ADDRESS_WRITE_2=ADDRESS_2,相機3寫初始地址ADDRESS_WRITE_3=ADDRESS_3+H2·L+H2。相機1讀初始地址ADDRESS_READ_1=ADDRESS_1+H1·L+H1,相機2讀初始地址AD DRESS_READ_2=ADDRESS_2+W1,相機3讀初始地址ADDRESS_READ_3=ADDRESS_3+H2·L+H2+W2。
針對圖2(f)的情況,需緩存BUFFER_LINE=H1+1行數(shù)據(jù),相機2連續(xù)寫入H1+1行數(shù)據(jù)后需對寫入地址初始化,相機3連續(xù)寫入H1-H2+1行數(shù)據(jù)后需對寫入地址初始化。相機1寫初始地址AD DRESS_WRITE_1=ADDRESS_1+H1·L+H1,相機 2寫初始地址ADDRESS_WRITE_2=ADDRESS_2,相機3寫初始地址ADDRESS_WRITE_3=ADDRESS_3+H2·L+H2。相機1讀初始地址ADDRESS_READ_1=ADDRESS_1+H1·L+H1,相機 2讀初始地址ADDRESS_READ_2=ADDRESS_2+W1,相機3讀初始地址ADDRESS_READ_3=ADDRESS_3+H2·L+H2+W2。
圖3 拼接傳輸流程圖
多線陣CCDS相機的大幅面掃描儀高精度實時拼接實現(xiàn)新方法流程如圖3所示。根據(jù)主要器件的特性,上電后需對FPGA、SDRAM初始化,使其處于正常工作狀態(tài)。從上位機獲取H1、H2、W1、W2的預設值,判別相機位置處于何種情況。定義H1最高位為1時,相機1水平位置高于相機2水平位置H1最高位位為0時,相機1水平位置低于相機2水平位置。定義H2最高位為1時,相機2水平位置高于相機3水平位置,H2最高位為0時,相機2水平位置低于相機3水平位置。圖2所示6種情況分對應H1、H2預設值的6種狀態(tài)。H1最高位為1,H2最高位為1時對應圖2(a);H1最高位為0,H2最高位為0時對應圖2(b);H1最高位為0,H2最高位為1,且H1小于H2時對應圖2(c);H1最高位為0,H2最高位為 1,且 H1大于等于 H2時對應圖2(d);H1最高位為1,H2最高位為0,且H1小于H2時對應圖2(e),H1最高位為1,H2最高位0,且H1大于等于H2時對應圖2(f)。獲取預設值后就進行數(shù)據(jù)緩存,按照相機編號逐行讀出圖像數(shù)據(jù),判斷讀地址是否需要初始化,按照相機編號逐行寫入圖像數(shù)據(jù),判斷寫地址是否需要初始化,最后判斷是否接收到上位機發(fā)出的結束信號。
采用多線陣CCDS相機的大幅面掃描儀高精度實時拼接實現(xiàn)新方法后,3個相機圖像數(shù)據(jù)能夠實時拼接傳輸,圖像水平錯位現(xiàn)象得以解決,重疊部分裁剪后實現(xiàn)無縫拼接。經(jīng)分析測試,H1=56,H2=6,W1=118,W2=168,且 H1 最高位為0,H2 最高位為0,即對應圖2(b)所示情況。圖4(a)為采用新方法前相機1與相機2拼接效果圖,圖4(b)為采用新方法后相機1與相機2拼接效果圖。圖5(a)為采用新方法前相機2與相機3拼接效果圖,圖5(b)為采用新方法后相機2與相機3拼接效果圖。圖6為拼接型大幅面掃描儀整機圖,圖7為硬件拼接核心板。
圖4
圖5
圖6 拼接型大幅面掃描儀整機圖
圖7 硬件拼接核心板
通過對基于多線陣CCDS相機的大幅面掃描儀拼接方法的深入分析,并比較現(xiàn)有的通行方式,提出了一種高精度實時拼接的新方法,制作了國內第一臺基于多線陣CDDS相機的拼接型大幅面掃描儀解決了拼接過程中水平錯位、無縫拼接的難題。
實驗及測試結果表明:項目組制作的大幅面掃描儀最大幅面A0,光學分辨率高達1 200 DPI,掃描速度達到2.54 cm/s,掃描及拼接精度能達到+/-1像素,能夠進行實時拼接傳輸。
高精度實時拼接新方法在該掃描裝備的成功實施,解決了在基于多線陣CCDS相機的大幅面拼接型高精度掃描儀的諸多難題,填補了該領域的工程應用空白。據(jù)我們所知,在應用上成功實現(xiàn)大幅面拼接性高精度一次性成像掃描儀的高精度實時硬件拼接,國內、外未見報道。
在以后的工作中,將對高精度實時硬件拼接進行進一步的優(yōu)化處理,并在速度保障的情況下,爭取進一步提高圖像質量,能夠更加接近理想狀態(tài)。
[1]Kumpulainen T,Latokartano J,Vihinen J,et al.Scanner Test Pattern for Evaluation of Beam Manipulation Accuracy[C]//Assembly and Manufacturing(ISAM),2011 IEEE International Sym-posium on,2011,1-5.
[2]任建岳,孫斌,張星祥.TDICCD交錯拼接的精度檢測[J].光學精密工程,2008,16(10):1852-1857.
[3]武星星,劉金國.三線陣立體測繪相機時間系統(tǒng)優(yōu)化與實時監(jiān)測[J].光學精密工程,2012,20(5):1022-1030.
[4]朱宏殷,郭永飛,司國良.多TDICCD拼接相機成像非均勻性實時校正的硬件實現(xiàn)[J].光學精密工程,2011,12(19):3025-3041.
[5]Hyuck Choo,Garmire D,Demmel J,et al.Simple Fabrication Process for Self-Aligned High-Performance Microscanners-Demonstrated Use to Generate a 2-D Ablation Pattern[J].Microelectro mechanical Systems,2007,16(2):260-268.
[6]Hu Tao,Chen Yanan.Design of the Linear Array CCD Acquisition System that Line Frequency and Integration Time Adjustable[C]//Electronics and Optoelectronics(ICEOE),2011 International Conference on,2011,2:253-256.
[7]Wang J H.A Topology Set Method for Vectorization[C]//Eighth ACIS International Conference on Software Engineering,IEEE,2007,1:229-234.
[8]Nicholson S W,Peiffer R,Shaw J D.Hardware in Libraries:Making Informed Choices[J].Library Hi Tech,2011,1(29):73-82.
[9]Bhavsar A V,Rajagopalan A N.Range Map with Missing Data-Joint Resolution Enhancement and Inpainting[C]//2008 Sixth Indian Conference on Computer Vision,Graphics & Image Processing,IEEE,2008:259-365.
[10]王勤,王慶友,齊龍.多線陣CCD拼接檢測寬幅PS版表面缺陷的研究[J].光電子激光,2005,16(11):1350-1354.
[11]Linden J,Knappe C,Richter M,et al.Limitations of ICCD Detectors and Optimized 2D Phosphor Thermometry[J].Measure ment Science & Technology,2012,3(23):8.
[12]Monoi M,Sasaki S,Dobashi K,et al.A Single-Layer CCD Image Sensor with Wide Gap Electrode and Gradual Potential Channe[C]//Society of Photo-Optical Instrumentation Engineers(SPIE Conference Series,SPIE,2009,7247:12.
[13]夏玉立,雷宏,黃瑤.用Xilinx FPGA實現(xiàn)DDR SDRAM控制器[J].微計算機信息,2007,23(9-2):209-211.
[14]馬靈,楊俊峰,宋克柱.地震數(shù)據(jù)采集中基于FPGA的多DDR SDRAM控制器設計[J].中國科學技術大學學報,2010,40(9):939-945.
[15]Zheng Dechun,Yang Yang,Zhang Ying.FPGA Realization o Multi-Port SDRAM Controller in Real Time Image Acquisition Sys tem[C]//Multimedia Technology(ICMT),2011 Internationa Conference on,2011,4925-4928.
[16]陳學飛,汶德勝,鄭培云.基于CPLD的CCD視頻信號處理電路的設計與硬件實現(xiàn)基于CPLD的CCD視頻信號處理電路的設計與硬件實現(xiàn)[J].電子器件,2008,31(3):807-810.
[17]Zhou Zude,Cheng Songlin,LiuQuan.Application ofDDR Controller for High-Speed Data Acquisition Board[C]//Innovative Computing,Information and Control,2006.ICICIC’06.First Inter national Conference on,2006,2:611-614.
[18]Pan Guangrong,F(xiàn)eng Da,Wang Qin,et al.The Design and Imple mentation ofAMBA Interfaced High-Performance SDRAM Controller for HDTV SoC[C]//Computer Science and Information Engineering,2009 WRI World Congress on,2009,3:448-452.