文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.172828
中文引用格式: 李榮翠. 激光探測器光斑質(zhì)心算法硬件設(shè)計[J].電子技術(shù)應(yīng)用,2018,,44(2):13-15,,19.
英文引用格式: Li Rongcui. The hardware design of light spot center of mass algorithm for laser detector[J]. Application of Electronic Technique,,2018,44(2):13-15,,19.
0 引言
在一些姿態(tài)檢測的實際應(yīng)用中,,需要在被測對象上安裝激光探測器[1],利用CCD相機捕捉激光光斑來檢測觀測對象的實際情況,,光斑圖像質(zhì)心坐標(biāo)的提取是圖像處理技術(shù)中常見的問題,,激光的瞬時和高速性是激光光斑圖像的重要特征[2]。為了實時準(zhǔn)確地獲取激光光斑質(zhì)心的坐標(biāo),,相機要求以300幀每秒的速度進行采集,。原設(shè)備原始應(yīng)用場景為工業(yè)高清相機通過專用Camera Link電纜連接圖像采集卡,圖像采集卡插入計算機內(nèi)部,,計算機接收圖像數(shù)據(jù)后進行信號處理運算,,質(zhì)心算法的實現(xiàn)在計算機上完成[3],。本文通過對原設(shè)備的結(jié)構(gòu)進行優(yōu)化,,將算法部分移植到硬件環(huán)境中形成相機控制器,使得攝像機與計算機可以遠距離部署,,一臺計算機可以控制和接收多臺相機數(shù)據(jù)并同時進行信號處理,,并且對計算機的配置要求較低,有靈活的擴展性,。在質(zhì)心算法研究方面,,將計算機軟件實現(xiàn)的算法用硬件描述語言Verilog設(shè)計實現(xiàn),獲取激光光斑的實時質(zhì)心坐標(biāo),。
1 CCD采集圖像質(zhì)心算法
激光探測器形成的激光光斑在CCD表面的光強分布可以看作以中心對稱的高斯分布[4],,所以在激光光斑質(zhì)心坐標(biāo)算法中,可以用光斑光亮的最強點作為激光光斑的質(zhì)心坐標(biāo),,對于CCD數(shù)字視頻信號來說就是灰度值最大的那一點的坐標(biāo)值[5],。具體算法如下:
第一步:噪聲采集。假設(shè)圖像x方向與y方向分別有m與n個像素點,。在無激光照射CCD情況下采集N幅圖(N理論上越多越好,,實際N值手動可設(shè)即可),databuffa[m][n]為第a幅圖的數(shù)據(jù),。對N幅圖進行求均方根,,即可得到噪聲數(shù)據(jù),。
第二步:去噪聲。此時開始進行激光光斑的采集,,CCD所采集的每幅圖數(shù)據(jù)為h[m][n],,進行去噪聲處理,將CCD所采集的數(shù)據(jù)與采集算好的噪聲相減,。如果低于最小灰度值0則為0,;如果高于最大灰度值255則為255。
第三步:去一定比例的最大灰度值,,比例系數(shù)為p,。此時經(jīng)過去噪聲的圖像數(shù)據(jù)h[i][j]還具有一定的干擾,采用閾值去掉干擾,,閾值為最大灰度值的比例數(shù),。首先尋找圖像的最大灰度值,然后進行去掉閾值,。
第四步:進行質(zhì)心計算,。CCD所采集圖像質(zhì)心即圖像灰度的重心,i與j分別為兩個方向的坐標(biāo),,g[i][j]為像素點(i,,j)坐標(biāo)的灰度值,則圖像質(zhì)心位置坐標(biāo)為:
式中x,、y即為圖像質(zhì)心的坐標(biāo),。
2 基于FPGA的圖像質(zhì)心算法
FPGA的特點是數(shù)字邏輯的思維與并行的處理方式。FPGA的并行處理能力使得它有著更高的處理速度,,讓人們更青睞于這種可編程邏輯方式去實現(xiàn)所需要的算法,。本文的目的是將CCD采集圖像質(zhì)心算法用可編程邏輯Verilog語言去實現(xiàn)所需算法,為了實現(xiàn)上述算法,,需要對算法進行必要的改造,。
第一步:噪聲均方根的采集實現(xiàn)。對于數(shù)字邏輯中只有0和1之分,,灰度圖像的顏色由8位二進制來表示,,故灰度顏色由0~255這256個數(shù)據(jù)來表示。故這里不需對根號內(nèi)數(shù)據(jù)進行開方,,而是直接根據(jù)根號下的數(shù)據(jù)即可算出均方根的結(jié)果,,因為這里的結(jié)果都是四舍五入后的整數(shù)。
第二步:去噪聲的實現(xiàn),。此算法可直接用可編程邏輯實現(xiàn),,與原算法一致。
第三步:去一定比例的最大灰度值中比例數(shù)p是一個0~1之間的小數(shù),在實際應(yīng)用中小數(shù)可以通過浮點數(shù)的方法來表示,,浮點數(shù)的表示有32位與64位的表示方法,。所以本文的設(shè)計方法是將0~1的數(shù)與0~100的數(shù)字一一對應(yīng),在后續(xù)再轉(zhuǎn)換縮回比例,,求出數(shù)據(jù),。例如0.16對應(yīng)整數(shù)16,這樣只需要7位二進制數(shù)即可表示,,節(jié)省了寄存器占用的空間,,利于算法的實現(xiàn)。
第四步:質(zhì)心計算的實現(xiàn),。第三步中的質(zhì)心計算的算法方式由于求矩陣過程復(fù)雜,,運算量大,不適用于可編程邏輯方式,,為此將此算法進行了轉(zhuǎn)換,。一種基于函數(shù)轉(zhuǎn)換的快速搜素質(zhì)心算法,利用目標(biāo)質(zhì)心與目標(biāo)上所有各點間距離之和值最小的原理,,快速求出質(zhì)心,。此算法適用于灰度圖像,對灰度圖像求質(zhì)心具有廣泛的用途與實際的意義,。應(yīng)用此算法后,,n個乘法轉(zhuǎn)換成了1個乘法,便于Verilog語言去實現(xiàn),。
3 仿真結(jié)果與分析
將改進后的算法應(yīng)用到可編程邏輯Verilog語言中后,,實現(xiàn)了光斑質(zhì)心算法的功能并能夠?qū)崟r求出質(zhì)心的坐標(biāo)。通過上位機選擇需要算出的N幅圖得到的噪聲系數(shù),,將求出的噪聲系數(shù)存入RAM中,,當(dāng)激光照射后讀出RAM中存儲的噪聲系數(shù)值即可,。本設(shè)計包括噪聲系數(shù)模塊,,去噪聲模塊與質(zhì)心坐標(biāo)算法3個模塊。圖1為光斑質(zhì)心算法的總體架構(gòu)圖,。
噪聲系數(shù)模塊:初始化后檢測ready信號,,ready拉高表示外部輸入已經(jīng)準(zhǔn)備好可以接收數(shù)據(jù),可保證在一幀圖像數(shù)據(jù)內(nèi)的連續(xù)性,。在準(zhǔn)備好后等待pulse_in信號的到來,,pulse_in為脈沖信號,當(dāng)接收到此信號時表示通知模塊需要計算噪聲系數(shù),。pixel_num為像素值選擇,, frame_num為幀數(shù)選擇,范圍是0~131 072,。data_in為輸入的圖像數(shù)據(jù)8位灰度值,,noise_req為噪聲系數(shù)輸入數(shù)據(jù)請求信號,,當(dāng)此信號拉高后,輸入信號data_in在下一拍輸入數(shù)據(jù),。noise_done為噪聲系數(shù)計算完成信號,,當(dāng)計算結(jié)束并沒有接收到重新計算信號pulse_in時,noise_done一直拉高來表示噪聲系數(shù)模塊處理完成,。在noise_done高電平期間,,輸入來自去噪聲模塊的地址信號addr_in,即可讀出RAN中對應(yīng)地址的數(shù)據(jù)databuffnoise,。
去噪聲模塊:在noise_done高電平期間可啟動去噪聲模塊,。read_en為脈沖信號,一個脈沖可接收一幀圖像數(shù)據(jù),。proportion信號是上位機發(fā)來的比例系數(shù),,范圍在0~100之間,表示0~1之間的數(shù),。在接收到read_en脈沖信號后,,發(fā)出數(shù)據(jù)請求信號data_req,data_req拉高后輸入dec_in數(shù)據(jù)信號,,由于需要求出一幀圖像的最大圖像數(shù)據(jù),,所以會有一幀圖像的延遲,當(dāng)輸出圖像數(shù)據(jù)有效data_valid信號拉高時,,輸出去噪后有效的pixel_data數(shù)據(jù),,在data_valid信號拉高后輸出的pixel_data數(shù)據(jù)會傳到質(zhì)心算法模塊中進行計算。圖2為去噪模塊仿真結(jié)果,。
質(zhì)心坐標(biāo)算法模塊:輸入的request_in信號是去噪聲模塊的輸出信號data_valid,,在request_in信號有效時,輸入的數(shù)據(jù)gravity_in信號有效,,與去噪模塊的輸出數(shù)據(jù)信號pixel_data線性連接,。在信號請求輸出req_out高脈沖同時輸出質(zhì)心坐標(biāo)xy_pos信號,輸出的x,、y坐標(biāo)都是10位二進制數(shù)表示,,根據(jù)需求以32位xy_pos信號輸出,高25~16位填充x坐標(biāo),9~0位填充y坐標(biāo),,其他填充0,。通過各個模塊的驗證可看出算法符合基本要求, 最后得到如圖3所示的3個模塊整體的頂層模塊仿真結(jié)果圖。
將此算法用C++在VS2012上運行并驗證質(zhì)心坐標(biāo)是否正確,,輸入相同輸入數(shù)據(jù),,驗證結(jié)果如圖4所示。
通過分析和仿真驗證了設(shè)計的正確性,CCD圖像質(zhì)心算法被很好地應(yīng)用到可編程邏輯語言中,,F(xiàn)PGA的高速并行優(yōu)點使得算法可以達到流水線高速運行,,由于相機的圖像采集速度可達到每秒300幀,為了符合這樣的高速采集能力,,本文采用了流水線算法可實時算出質(zhì)心坐標(biāo)供上位機采集和使用,。
4 結(jié)論
本文所設(shè)計的光斑質(zhì)心定位算法是基于實際應(yīng)用的激光探測器相機控制器的算法實現(xiàn)部分,該算法的實現(xiàn)使得攝像機與計算機可以遠距離部署,,將復(fù)雜算法的運算量交給控制器去處理,,減輕了計算機的工作量去處理更重要的事情。該方法適用于有一定存儲空間的FPGA芯片去實現(xiàn),,注重高速與實時性,,對工業(yè)高清相機這種高精度要求的應(yīng)用有一定的實用價值。
參考文獻
[1] 肖鋒鋼,,劉建國,,曾淙泳,等.一種新型提高光斑圖像質(zhì)心精度的去噪方法[J].計算機應(yīng)用研究,,2008,,25(12):3683-3685.
[2] 樊巧云,張廣軍.離散噪聲圖像的光斑質(zhì)心算法及其硬件實現(xiàn)[J].光學(xué)精密工程,,2011,,19(12):2992-2993.
[3] 張海莊,孟智勇,,丁帥,,等.CCD攝像法采集激光光斑圖像方法研究[J].光學(xué)與光電技術(shù),2013,,11(10):33-35.
[4] 張秋佳,,趙玉華.基于加權(quán)插值算法的激光光斑中心檢測[J].激光與紅外,2016,,46(1):81-84.
[5] 王冰,,職秦川,張仲選,,等.灰度圖像質(zhì)心快速算法[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,,2004,,16(10):1360-1362.